wiki/HowtoPeertube.md

339 lines
10 KiB
Markdown
Raw Permalink Normal View History

2022-03-21 20:35:50 +01:00
---
categories: web video
toc: no
2022-08-30 21:58:08 +02:00
title: Howto Peertube
2022-03-21 20:35:50 +01:00
...
2022-08-30 21:58:08 +02:00
* Documentation: [docs.joinpeertube.org/](https://docs.joinpeertube.org/)
2023-08-24 22:05:45 +02:00
* Dépôt: [github.com/Chocobozzz/PeerTube](https://github.com/Chocobozzz/PeerTube)
2022-08-30 21:58:08 +02:00
2023-04-04 22:29:58 +02:00
[Peertube](https://joinpeertube.org/) est une plateforme de diffusion en continu décentralisé. Il implémente le protocole de fédération ActivityPub et les protocoles pair-à-pair WebTorrents et HLS + P2P.
2022-08-30 21:58:08 +02:00
## Installation
2023-08-24 22:05:45 +02:00
PeerTube 5.2 (août 2023) dépend des paquets suivants sur un système Debian 11 (Bullseye):
2022-08-30 21:58:08 +02:00
~~~
2023-04-04 22:29:58 +02:00
# apt install curl python3-dev python-is-python3 certbot nginx ffmpeg postgresql postgresql-contrib openssl g++ make redis-server git unzip
2022-04-05 20:04:12 +02:00
~~~
2023-04-04 22:29:58 +02:00
Note : il faut également installer Node JS >= 16.x via le dépôt https://deb.nodesource.com et Redis >= 6.2.x via le dépôt bullseye backports.
2022-03-21 20:35:50 +01:00
2022-08-30 22:30:32 +02:00
### Utilisateur PeerTube
2022-03-21 20:35:50 +01:00
2022-04-06 20:40:10 +02:00
Créer un utilisateur peertube avec /var/www/peertube home:
2022-03-21 20:35:50 +01:00
~~~
$ sudo useradd -m -d /var/www/peertube -s /bin/bash -p peertube peertube
~~~
2022-04-06 20:40:10 +02:00
Définissez son MOT DE PASSE:
2022-03-21 20:35:50 +01:00
~~~
$ sudo passwd peertube
~~~
2022-08-30 22:30:32 +02:00
### Database
2022-03-21 20:35:50 +01:00
2023-08-24 22:05:45 +02:00
Créez la base de données de production et un utilisateur peertube à l'intérieur de PostgreSQL:
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube
$ sudo -u postgres createuser -P peertube
~~~
2022-04-06 20:40:10 +02:00
Ici, vous devez entrer un mot de passe pour l'utilisateur peertube PostgreSQL, qui doit être copié dans le fichier production.yaml. Ne vous contentez pas d'appuyer sur Entrée sinon il sera vide.
2022-03-21 20:35:50 +01:00
~~~
$ sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_prod
~~~
2022-04-06 20:40:10 +02:00
Activez ensuite les extensions dont PeerTube a besoin:
2022-03-21 20:35:50 +01:00
~~~
$ sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_prod
$ sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_prod
~~~
2022-08-30 22:30:32 +02:00
### Préparer le répertoire PeerTube
2022-03-21 20:35:50 +01:00
2022-04-06 20:40:10 +02:00
Récupérer la dernière version taguée de Peertube:
2022-03-21 20:35:50 +01:00
~~~
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"
~~~
2022-04-06 20:40:10 +02:00
Ouvrez le répertoire peertube, créez quelques répertoires requis:
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube
$ sudo -u peertube mkdir config storage versions
$ sudo -u peertube chmod 750 config/
~~~
2022-04-06 20:40:10 +02:00
Téléchargez la dernière version du client Peertube, décompressez-la et supprimez le zip:
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube/versions
$ # Releases are also available on https://builds.joinpeertube.org/release
$ sudo -u peertube wget -q "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip"
$ sudo -u peertube unzip -q peertube-${VERSION}.zip && sudo -u peertube rm peertube-${VERSION}.zip
~~~
2022-08-30 22:30:32 +02:00
### Installation fichiers web
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube
$ sudo -u peertube ln -s versions/peertube-${VERSION} ./peertube-latest
$ cd ./peertube-latest && sudo -H -u peertube yarn install --production --pure-lockfile
~~~
2022-08-30 22:30:32 +02:00
### Paramétrage de PeerTube
2022-03-21 20:35:50 +01:00
2022-04-06 20:40:10 +02:00
Copiez le fichier de configuration par défaut qui contient la configuration par défaut fournie par PeerTube. Vous ne devez pas mettre à jour ce fichier.
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube
$ sudo -u peertube cp peertube-latest/config/default.yaml config/default.yaml
~~~
2022-04-06 20:40:10 +02:00
Copiez maintenant l'exemple de configuration de production:
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube
$ sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml
~~~
2022-04-06 20:40:10 +02:00
puis éditez le fichier config/production.yaml en fonction de la configuration de votre serveur web et de votre base de données (sections webserver, database, redis, smtp et admin.email notamment). Les clés définies dans config/production.yaml remplaceront les clés définies dans config/default.yaml.
2022-03-21 20:35:50 +01:00
2022-04-06 20:40:10 +02:00
PeerTube ne prend pas en charge le changement d'hôte de serveur Web. Même si PeerTube CLI peut vous aider à changer de nom d'hôte, il n'y a pas de support officiel pour cela car il s'agit d'une opération risquée qui peut entraîner des erreurs imprévues.
2022-03-21 20:35:50 +01:00
2022-08-30 22:30:32 +02:00
### Webserver
2022-03-21 20:35:50 +01:00
2022-04-06 20:40:10 +02:00
Copiez le modèle de configuration nginx:
2022-03-21 20:35:50 +01:00
~~~
$ sudo cp /var/www/peertube/peertube-latest/support/nginx/peertube /etc/nginx/sites-available/peertube
~~~
2022-04-06 20:40:10 +02:00
Définissez ensuite le domaine pour le fichier de configuration du serveur Web. Remplacez [peertube-domain] par le domaine du serveur peertube.
2022-03-21 20:35:50 +01:00
~~~
$ sudo sed -i 's/${WEBSERVER_HOST}/[peertube-domain]/g' /etc/nginx/sites-available/peertube
$ sudo sed -i 's/${PEERTUBE_HOST}/127.0.0.1:9000/g' /etc/nginx/sites-available/peertube
~~~
2022-04-06 20:40:10 +02:00
Modifiez ensuite le fichier de configuration du serveur Web. Veuillez prêter attention aux clés d'alias des emplacements statiques. Il doit correspondre aux chemins de vos répertoires de stockage (définis dans le fichier de configuration à l'intérieur de la clé de stockage).
2022-03-21 20:35:50 +01:00
~~~
$ sudo vim /etc/nginx/sites-available/peertube
~~~
2022-04-06 20:40:10 +02:00
Activez le fichier de configuration:
2022-03-21 20:35:50 +01:00
~~~
$ sudo ln -s /etc/nginx/sites-available/peertube /etc/nginx/sites-enabled/peertube
~~~
2022-04-06 20:40:10 +02:00
Pour générer le certificat pour votre domaine comme requis pour faire fonctionner https, vous pouvez utiliser Let's Encrypt:
2022-03-21 20:35:50 +01:00
~~~
$ sudo systemctl stop nginx
$ sudo certbot certonly --standalone --post-hook "systemctl restart nginx"
$ sudo systemctl reload nginx
~~~
2022-04-06 20:40:10 +02:00
Maintenant que vous avez les certificats, vous pouvez recharger nginx :
2022-03-21 20:35:50 +01:00
~~~
$ sudo systemctl reload nginx
~~~
2022-04-06 20:40:10 +02:00
Certbot doit avoir installé un cron pour renouveler automatiquement votre certificat. Étant donné que notre modèle nginx prend en charge le renouvellement Webroot, nous vous suggérons de mettre à jour le fichier de configuration de renouvellement pour utiliser l'authentificateur Webroot.:
2022-03-21 20:35:50 +01:00
~~~
$ # Replace authenticator = standalone by authenticator = webroot
$ # Add webroot_path = /var/www/certbot
$ sudo vim /etc/letsencrypt/renewal/your-domain.com.conf
~~~
2022-08-30 21:58:08 +02:00
## Configuration
### Administrateur
Le nom d'utilisateur de l'administrateur est root et le mot de passe est généré automatiquement. Il se trouve dans les logs de PeerTube (chemin défini dans production.yaml). Vous pouvez également définir un autre mot de passe avec:
~~~
$ cd /var/www/peertube/peertube-latest && NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-password -- -u root
~~~
2023-04-04 22:29:58 +02:00
Note : il est aussi possible de définir une variable d'environnement PT_INITIAL_ROOT_PASSWORD qui doit contenir un minimum de six caractères.
2022-03-21 20:35:50 +01:00
2023-04-04 22:29:58 +02:00
## Optimisations TCP/IP
2022-03-21 20:35:50 +01:00
~~~
$ sudo cp /var/www/peertube/peertube-latest/support/sysctl.d/30-peertube-tcp.conf /etc/sysctl.d/
$ sudo sysctl -p /etc/sysctl.d/30-peertube-tcp.conf
~~~
2022-04-21 19:19:49 +02:00
## systemd
2022-03-21 20:35:50 +01:00
2023-04-04 22:29:58 +02:00
Copier le modèle d'unité systemd fournit par les développeurs:
2022-03-21 20:35:50 +01:00
~~~
$ sudo cp /var/www/peertube/peertube-latest/support/systemd/peertube.service /etc/systemd/system/
~~~
2023-04-04 22:29:58 +02:00
Ajuste les chemins et options au besoin:
2022-03-21 20:35:50 +01:00
~~~
$ sudo vim /etc/systemd/system/peertube.service
~~~
2022-04-06 20:40:10 +02:00
Dites à systemd de recharger sa configuration:
2022-03-21 20:35:50 +01:00
~~~
$ sudo systemctl daemon-reload
~~~
2023-04-04 22:29:58 +02:00
Si vous souhaitez démarrer PeerTube en même temps que le système d'exploitation:
2022-03-21 20:35:50 +01:00
~~~
$ sudo systemctl enable peertube
~~~
2023-04-04 22:29:58 +02:00
Pour lancer PeerTube:
2022-03-21 20:35:50 +01:00
~~~
$ sudo systemctl start peertube
~~~
2022-08-30 21:58:08 +02:00
## Administration
Si vous avez modifié votre configuration nginx :
2022-03-21 20:35:50 +01:00
~~~
2022-08-30 21:58:08 +02:00
$ sudo systemctl reload nginx
2022-03-21 20:35:50 +01:00
~~~
2022-08-30 21:58:08 +02:00
Si vous avez modifié votre configuration systemd:
~~~
$ sudo systemctl daemon-reload
~~~
Redémarrez PeerTube et vérifiez les journaux:
~~~
$ sudo systemctl restart peertube && sudo journalctl -fu peertube
~~~
Pour réinitialiser un mot de passe utilisateur à partir de CLI
~~~
$ cd /var/www/peertube/peertube-latest
$ sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-password -- -u target_username
~~~
Les choses ont mal tourné ?
2022-03-21 20:35:50 +01:00
2022-08-30 21:58:08 +02:00
Remplacez peertube-latest destination par la version précédente et restaurez votre sauvegarde SQL:
~~~
$ OLD_VERSION="v0.42.42" && SQL_BACKUP_PATH="backup/sql-peertube_prod-2018-01-19T10:18+01:00.bak" && \
cd /var/www/peertube && sudo -u peertube unlink ./peertube-latest && \
sudo -u peertube ln -s "versions/peertube-$OLD_VERSION" peertube-latest && \
sudo -u postgres pg_restore -c -C -d postgres "$SQL_BACKUP_PATH" && \
sudo systemctl restart peertube
~~~
2022-03-21 20:35:50 +01:00
2022-08-30 21:58:08 +02:00
### Mise a jour
2022-03-21 20:35:50 +01:00
2023-04-04 22:29:58 +02:00
Lire attentivement les notes de version: https://github.com/Chocobozzz/PeerTube/blob/develop/CHANGELOG.md
2022-03-21 20:35:50 +01:00
2023-04-04 22:29:58 +02:00
#### Automatique
2022-04-06 20:40:10 +02:00
Le mot de passe demandé est le mot de passe de l'utilisateur de la base de données de PeerTube.
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube/peertube-latest/scripts && sudo -H -u peertube ./upgrade.sh
2023-04-04 22:29:58 +02:00
$ sudo systemctl restart peertube
2022-03-21 20:35:50 +01:00
~~~
2023-04-04 22:29:58 +02:00
#### Manuelle
2022-03-21 20:35:50 +01:00
2023-04-04 22:29:58 +02:00
Faire une sauvegarde la BD PostgreSQL
2022-03-21 20:35:50 +01:00
~~~
$ SQL_BACKUP_PATH="backup/sql-peertube_prod-$(date -Im).bak" && \
cd /var/www/peertube && sudo -u peertube mkdir -p backup && \
sudo -u postgres pg_dump -F c peertube_prod | sudo -u peertube tee "$SQL_BACKUP_PATH" >/dev/null
~~~
2022-04-06 20:40:10 +02:00
Récupérez la dernière version taguée de Peertube :
2022-03-21 20:35:50 +01:00
~~~
$ 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"
~~~
2022-04-06 20:40:10 +02:00
Téléchargez la nouvelle version et décompressez-la :
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube/versions && \
sudo -u peertube wget -q "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip" && \
sudo -u peertube unzip -o peertube-${VERSION}.zip && \
sudo -u peertube rm peertube-${VERSION}.zip
~~~
2023-04-04 22:29:58 +02:00
Installer les dépendances de Node JS:
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube/versions/peertube-${VERSION} && \
sudo -H -u peertube yarn install --production --pure-lockfile
~~~
2022-04-06 20:40:10 +02:00
Copiez les nouvelles valeurs de configuration par défaut et mettez à jour votre fichier de configuration :
2022-03-21 20:35:50 +01:00
~~~
$ sudo -u peertube cp /var/www/peertube/versions/peertube-${VERSION}/config/default.yaml /var/www/peertube/config/default.yaml
$ diff /var/www/peertube/versions/peertube-${VERSION}/config/production.yaml.example /var/www/peertube/config/production.yaml
~~~
2023-04-04 22:29:58 +02:00
Modifiez le lien symbolique pour qu'il pointe sur la dernière version :
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube && \
sudo unlink ./peertube-latest && \
sudo -u peertube ln -s versions/peertube-${VERSION} ./peertube-latest
~~~
2023-04-04 22:29:58 +02:00
Démarrer redis et postgresql :
2022-04-05 20:04:12 +02:00
~~~
sudo systemctl enable --now redis
sudo systemctl enable --now postgresql
~~~
2022-04-06 20:40:10 +02:00
Vérifiez les modifications apportées à la configuration nginx :
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube/versions
$ diff "$(ls --sort=t | head -2 | tail -1)/support/nginx/peertube" "$(ls --sort=t | head -1)/support/nginx/peertube"
~~~
2022-04-06 20:40:10 +02:00
Vérifiez les changements dans la configuration de systemd :
2022-03-21 20:35:50 +01:00
~~~
$ cd /var/www/peertube/versions
$ diff "$(ls --sort=t | head -2 | tail -1)/support/systemd/peertube.service" "$(ls --sort=t | head -1)/support/systemd/peertube.service"
~~~
2022-08-30 21:58:08 +02:00
## Optimisation
2022-03-21 20:35:50 +01:00
2022-08-30 21:58:08 +02:00
## Monitoring
2022-03-21 20:35:50 +01:00
2022-08-30 21:58:08 +02:00
### Nagios
2022-03-21 20:35:50 +01:00
2022-08-30 21:58:08 +02:00
### Munin
2022-03-21 20:35:50 +01:00
2022-08-30 21:58:08 +02:00
## Plomberie
2022-04-05 20:04:12 +02:00
2022-08-30 21:58:08 +02:00
## FAQ
2022-04-05 20:04:52 +02:00
2022-04-05 20:04:12 +02:00
2022-03-21 20:35:50 +01:00