User Tools


server:peertube

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