PeerTube
Updated 25 Février 2022
PeerTube est une plateforme distribuée d'hébergement et de diffusion de vidéos. [PeerTube] (https://joinpeertube.org) est une alternative indépendante, légère et évolutive à YouTube, Dailymotion et Vimeo. Il utilise les navigateurs des internautes pour créer un réseau distribué basé sur le P2P. PeerTube supporte le protocole ActivityPub, qui permet de regrouper des serveurs isolés avec du contenu vidéo dans un réseau fédéré. Les personnes qui le visitent peuvent ainsi s'abonner à des chaînes et être informées quand de nouvelles vidéos apparaissent. Ce logiciel libre est diffusé sous la licence AGPLv3.
Préparer un conteneur LXC
Nous conseillons d'installer PeerTub dans un conteneur distinct, le configurant selon les instructions du manuel.
Installation et configuration de PostgreSQL
Installez et configurez PostgreSQL conformément au manuel. Remplacez dbtest par votre base de données peertube_prod, et l'utilisateur test par peertube. Terminez le processus d'installation :
!!! exec "psql -U postgres
"
psql (11.2) postgres=# \c peertube_prod postgres=# CREATE EXTENSION pg_trgm; postgres=# CREATE EXTENSION unaccent; postgres=# \q
Installer Peertube
Installer les paquets requis par Peertube:
emerge -a app-arch/unzip dev-db/redis media-video/ffmpeg dev-python/nodeenv
Créez un compte utilisateur peertube et protégez-le par un mot de passe :
mkdir -p /var/calculate/www
useradd -m -d /var/calculate/www/peertube -s /bin/bash -p peertube peertube
passwd peertube
Installez Node.js dans le répertoire utilisateur :
su - peertube
nodeenv --node=14.17.6 .node-14
ln -sfT .node-14 .node-live
source .node-live/bin/activate
npm install -g yarn
echo 'source ~/.node-live/bin/activate' >> ~/.bash_profile
Créez les chemins nécessaires, téléchargez et décompressez la dernière version de PeerTube :
mkdir config storage versions
VERSION=$(curl -s https://api.github.com/repos/chocobozzz/peertube/releases/latest | grep tag_name | cut -d '"' -f 4) && echo "Latest PeerTube version is $VERSION"
wget "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip" -P versions
unzip versions/peertube-${VERSION}.zip -d versions
rm versions/peertube-${VERSION}.zip
Installer PeerTube:
ln -s versions/peertube-${VERSION} ./peertube-latest
cd ./peertube-latest
yarn install --production --pure-lockfile
cp /var/calculate/www/peertube/peertube-latest/config/default.yaml /var/calculate/www/peertube/config/default.yaml
cp config/production.yaml.example ../../config/production.yaml
Configuration de PeerTube
Configurez PeerTube en remplaçant peertube.example.org par votre page :
# Correspond to your reverse proxy server_name/listen configuration webserver: https: true hostname: 'peertube.example.org' port: 443 # Your database name will be "peertube"+database.suffix database: hostname: 'localhost' port: 5432 suffix: '_prod' username: 'peertube' password: 'secret' pool: max: 5 # SMTP server to send emails smtp: hostname: mail.example.org port: 465 # If you use StartTLS: 587 username: null password: null tls: false # If you use StartTLS: false disable_starttls: false ca_file: null # Used for self signed certificates from_address: 'admin@mail.example.org' # From the project root directory storage: tmp: '/var/calculate/www/peertube/storage/tmp/' # Used to download data (imports etc), store uploaded files before processing... avatars: '/var/calculate/www/peertube/storage/avatars/' videos: '/var/calculate/www/peertube/storage/videos/' streaming_playlists: '/var/calculate/www/peertube/storage/streaming-playlists/' redundancy: '/var/calculate/www/peertube/storage/videos/' logs: '/var/calculate/www/peertube/storage/logs/' previews: '/var/calculate/www/peertube/storage/previews/' thumbnails: '/var/calculate/www/peertube/storage/thumbnails/' torrents: '/var/calculate/www/peertube/storage/torrents/' captions: '/var/calculate/www/peertube/storage/captions/' cache: '/var/calculate/www/peertube/storage/cache/' plugins: '/var/calculate/www/peertube/storage/plugins/' client_overrides: '/var/calculate/www/peertube/storage/client-overrides/' admin: # Used to generate the root user at first startup # And to receive emails from the contact form email: 'support@example.org'
Obtenir le certificat Let's Encrypt
Procurez-vous un certificat pour Nginx sur peertube.example.org en suivant les instructions du manuel.
Installation et configuration de Nginx
Installez et configurez votre serveur Nginx, comme expliqué dans le manuel.
Copiez le fichier de configuration Nginx par défaut pour PeerTube :
cp /var/calculate/www/peertube/peertube-latest/support/nginx/peertube /etc/nginx/sites-enabled/peertube.conf
Indiquez les chemins d'accès et le nom du serveur, peertube.example.org :
server { listen 80; listen [::]:80; server_name peertube.example.org; location /.well-known/acme-challenge/ { default_type "text/plain"; root /var/www/certbot; } location / { return 301 https://$host$request_uri; } } upstream backend { server localhost:9000; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name peertube.example.org; ssl_certificate /etc/letsencrypt/live/peertube.example.org/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/peertube.example.org/privkey.pem; ... # Bypass PeerTube for performance reasons. Could be removed location ~ ^/client/(.*\.(js|css|woff2|otf|ttf|woff|eot))$ { add_header Cache-Control "public, max-age=31536000, immutable"; alias /var/calculate/www/peertube/peertube-latest/client/dist/$1; } ... # Cache 2 hours add_header Cache-Control "public, max-age=7200"; root /var/calculate/www/peertube/storage; rewrite ^/static/(thumbnails|avatars)/(.*)$ /$1/$2 break; try_files $uri ... # Don't spam access log file with byte range requests access_log off; } root /var/calculate/www/peertube/storage; rewrite ^/static/webseed/(.*)$ /videos/$1 break; rewrite ^/static/redundancy/(.*)$ /redundancy/$1 break; }
Démarrage de Peertube
Créez un script OpenRC pour PeerTube :
#!/sbin/openrc-run # Copyright 2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 name="PeerTube daemon" description="" pidfile=/run/peertube.pid command_user=peertube output_log=/var/log/peertube.log error_log=/var/log/peertube.log directory=/var/calculate/www/peertube/peertube-latest start_stop_daemon_args="-e NODE_ENV=production -e NODE_CONFIG_DIR=/var/calculate/www/peertube/config -e PATH=/var/calculate/www/peertube/.node-live/lib/node_modules/.bin:/var/calculate/www/peertube/.node-live/bin:\"$PATH\"" command="/var/calculate/www/peertube/.node-live/bin/npm" command_args="start" command_background=true depend() { need nginx postgresql redis } start_pre() { checkpath -f -o peertube -m 0600 /var/log/peertube.log }
Définissez les privilèges :
chmod 0755 /etc/init.d/peertube
Lancer le service PeerTube:
/etc/init.d/peertube start
Ajouté Peertube au démarrage:
!!! exec "rc-update add peertube
"
Ouvrez la page peertube.example.org dans votre navigateur Web :
Définir le mot de passe administrateur
Le mot de passe administrateur est généré automatiquement. Vous pouvez le trouver dans le journal. Pour réinitialiser le mot de passe :
su - peertube
cd /var/calculate/www/peertube/peertube-latest && NODE_CONFIG_DIR=/var/calculate/www/peertube/config NODE_ENV=production npm run reset-password -- -u root
exit
Mise à jour de PeerTube
Mise à jour de Node.js
Lors de la mise à jour de PeerTube vers la version 4.1.0, nous vérifierons que la version de Node.js est au moins 14 :
su - peertube
node -v
v14.17.6
Si la version de Node.js est inférieure à 14, installez la version 14.17.6 dans le nouvel environnement .node-14
et mettez-le à jour :
deactivate_node
nodeenv --node=14.17.6 .node-14
ln -sfT .node-14 .node-live
source .node-live/bin/activate
npm install -g yarn
Si vous aviez configuré PeerTube en suivant la version précédente du guide, transformez les scripts /var/calculate/www/peertube/.bash_profile et /etc/init.d/peertube .node-12~ en .node -live.
Mettre à jour le source code
Téléchargez et décompressez la dernière version de PeerTube:
su - peertube
VERSION=$(curl -s https://api.github.com/repos/chocobozzz/peertube/releases/latest | grep tag_name | cut -d '"' -f 4) && echo "Latest PeerTube version is $VERSION"
wget "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip" -P versions
unzip versions/peertube-${VERSION}.zip -d versions
rm versions/peertube-${VERSION}.zip
Installer PeerTube:
cd versions/peertube-${VERSION}
yarn install --production --pure-lockfile
Actualiser la configuration
Copiez le fichier de configuration fourni par défaut :
cp config/default.yaml /var/calculate/www/peertube/config/default.yaml
Actualisez votre configuration production.yml :
mv /var/calculate/www/peertube/config/production.yaml /var/calculate/www/peertube/config/production-old.yaml
cp config/production.yaml.example /var/calculate/www/peertube/config/production.yaml
Vérifiez les différences et déplacez vos paramètres vers production.yaml :
git diff /var/calculate/www/peertube/config/production{,-old}.yaml
Choisir la version courante
Actualisez le lien symbolique :
cd
unlink peertube-latest
ln -s versions/peertube-${VERSION} ./peertube-latest
exit
Redémarrez PeerTube:
/etc/init.d/peertube restart
Mise à jour vers v2.1.0
Pour passer à la version 2.1.0, exécutez le script de création de torrents vidéo HLS :
su - peertube
cd /var/calculate/www/peertube/peertube-latest
NODE_CONFIG_DIR=/var/calculate/www/peertube/config NODE_ENV=production node dist/scripts/migrations/peertube-2.1.js
exit
Mise à jour vers v2.2.0
Connectez-vous à la base de données et faites la requête suivante :
!!! exec "psql -U postgres
"
psql (11.7) Type "help" for help. postgres=# \c peertube_prod You are now connected to database "peertube_prod" as user "postgres". peertube_prod=# select "preferredUsername" from actor where "serverId" is null group by "preferredUsername" having count(*) > 1; preferredUsername ------------------- (0 rows)
Si le résultat n'est pas vide, vous devez modifier le ++preferredUsername++ pour chaque entrée afin que celui-ci soit unique.