server:peertube
Table of Contents
PeerTube Installation
1. System preparation
Install all required packages:
apt install -y curl sudo unzip vim ffmpeg postgresql postgresql-contrib g++ make redis-server git python-dev cron wget
Start PostgreSQL and Redis:
systemctl start postgresql redis
2. Node.js & Yarn installation
Your guide says Node.js 14 is needed, but PeerTube 7.2.1 (newer version) requires Node.js >= 20.
So you must install Node.js 20 (instead of 14) to fix the incompatibility.
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt install -y nodejs npm install --global yarn
Check versions:
node -v # should show v20.x.x or higher yarn -v
3. Create PeerTube user
useradd -m -d /var/www/peertube -s /bin/bash -p peertube peertube
4. Set up PostgreSQL database and user
su -l postgres createuser -P peertube # remember the password! createdb -O peertube -E UTF8 -T template0 peertube_prod psql -c "CREATE EXTENSION pg_trgm;" peertube_prod psql -c "CREATE EXTENSION unaccent;" peertube_prod exit
5. Create PeerTube directories
su -l peertube mkdir config storage versions chmod 750 config exit
6. Download & extract PeerTube
su -l peertube VERSION=$(curl -s https://api.github.com/repos/chocobozzz/peertube/releases/latest | grep tag_name | cut -d '"' -f 4) cd /var/www/peertube/versions wget "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip" unzip peertube-${VERSION}.zip rm peertube-${VERSION}.zip exit
7. Install Yarn dependencies
su -l peertube cd /var/www/peertube ln -s versions/peertube-${VERSION} ./peertube-latest cd peertube-latest yarn install --production --pure-lockfile exit
8. Adjust configuration
su -l peertube cd /var/www/peertube cp peertube-latest/config/production.yaml.example config/production.yaml vim config/production.yaml # set hostname, database, admin email, SMTP etc. exit
9. Get SSL certificate with Certbot
certbot --nginx -d your.hostname.tld certonly
10. Configure Nginx
cp /var/www/peertube/peertube-latest/support/nginx/peertube /etc/nginx/sites-available/peertube sed -i 's/${WEBSERVER_HOST}/your.hostname.tld/g' /etc/nginx/sites-available/peertube sed -i 's/${PEERTUBE_HOST}/127.0.0.1:9000/g' /etc/nginx/sites-available/peertube ln -s /etc/nginx/sites-available/peertube /etc/nginx/sites-enabled/peertube systemctl reload nginx
11. Start PeerTube as a service
cp /var/www/peertube/peertube-latest/support/systemd/peertube.service /etc/systemd/system/ systemctl daemon-reload systemctl start peertube systemctl status peertube # check if running
12. Set admin password
su -l peertube cd /var/www/peertube/peertube-latest NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-password -- -u root exit