Installer Peertube sur Debian 9 Stretch
Toujours afin de « Dégoogliser » internet, framasoft et ses alliés s'attaquent à Youtube, voyons comment installer Peertube, son concurrent libre et décentralisé.
Ce billet de blog concerne avant tout Debian est une reprise de la documentation officielle et plus là à titre de pense-bête.Installation
Dépôts
Comme pour Mastodon, Peertube demande des version récentes de NodeJS et Yarn, il nous faut donc là aussi directement utiliser les dépôts de NodsJS et Yarn afin des versions plus récentes.
# apt -y install curl # curl -sL https://deb.nodesource.com/setup_8.x | bash -E - # curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - # echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list # apt update
Installation des dépendences
N'hésitez pas à consulter la documentation officielle sur les dépendances si vous utilisez une autre distribution.
Une fois ces dépôts ajoutés, il est possible de passer à l'installation des dépendances. Comme Mastodon, Peertube est fait pour fonctionner avec le serveur web NGinx, si vous utilisez Apache, il est doit être possible de le faire fonctionner avec mais ce n'est pas officiellement supporté.
# apt install curl sudo unzip xz-utils vim nodejs yarn nginx-full ffmpeg postgresql postgresql-contrib postgresql postgresql-client openssl g++ make redis-server git
Utilisateur
Peertube demande l'utilisation d'un compte utilisateur dédié.
# addgroup --system peertube # adduser --system --ingroup peertube --gecos "Peertube" --home /opt/peertube --disabled-login peertube
PostgreSQL
Création de l'utilisateur PostgreSQL peertube, pensez à conserver le mot de passe !
# sudo -u postgres createuser peertube -d -P -R
Création de la base de données PostgreSQL peertube et activation des extensions dont Peertube a besoin.
# sudo -u postgres createdb -O peertube peertube # sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube # sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube
Préparation et installation
Les commandes suivantes demandes à être effectuées en tant qu'utilisateur peertube
, on commence par créer les répertoires nécessaire à l'installation.
# su - peertube $ mkdir config storage versions && cd versions
On télécharge de la dernière version et décompresse celle-ci.
$ 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 -q "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.tar.xz" $ tar -xJf peertube-${VERSION}.tar.xz $ rm -f peertube-${VERSION}.tar.xz $ cd ../ $ ln -s versions/peertube-${VERSION} ./peertube-latest $ cd ./peertube-latest
Puis on installe.
$ yarn install --production --pure-lockfile
Configuration
Copier le fichier de configuration d'exemple et le modifier à votre convenance.
$ cp peertube-latest/config/production.yaml.example config/production.yaml
Lors de la configuration, faire attention aux options suivantes :
- Dans
webserver
,hostname
est l'adresse de votre instance,port
doit être laissé à 443, même si vous utilisez un système comme SSLH redirigeant les requête sur le 443 vers le véritable port HTTPS de votre service web, à ne modifier que si vous passez un port spécifique dans votre navigateur pour la connexion HTTPS.# Correspond to your reverse proxy server_name/listen configuration webserver: https: true hostname: 'peertube.example.com' port: 443
- La section
database
correspond aux paramètres de la BDD PostgreSQL, l'optionprefix
contient "prod" par défaut, à supprimer si la BDD de peertube n'a pas de suffixe.# Your database name will be "peertube"+database.suffix database: hostname: 'localhost' port: 5432 suffix: '' username: 'peertube' password: 'MotDePasseBDD' pool: max: 5
- Indiquez dans la section
smtp
les paramètres de votre service SMTP. Modifiez le port à 25, 465 ou 587 selon que vous utilisez une connexion en claire, via SMTPS ou StartTLS. Mettrehostname
à localhost si le serveur SMTP est sur la même machine que Peertube.# SMTP server to send emails smtp: hostname: 'localhost' port: 25 # If you use StartTLS: 587 username: null password: null tls: false # If you use StartTLS: false disable_starttls: true ca_file: null # Used for self signed certificates from_address: 'admin@example.com'
- Adapter la section
storage
selon où se trouve l'installation de Peertube.# From the project root directory storage: avatars: '/opt/peertube/storage/avatars/' videos: '/opt/peertube/storage/videos/' logs: '/opt/peertube/storage/logs/' previews: '/opt/peertube/storage/previews/' thumbnails: '/opt/peertube/storage/thumbnails/' torrents: '/opt/peertube/storage/torrents/' captions: '/opt/peertube/storage/captions/' cache: '/opt/peertube/storage/cache/'
- La section
strategies
indique la stratégie d'affichage des vidéos de la page d'accueil, pensez à décommenter la ligne avec le tiret (-
).strategies: - size: '10GB' # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances) min_lifetime: '48 hours' strategy: 'most-views' # Cache videos that have the most views # - # size: '10GB' # # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances) # min_lifetime: '48 hours' # strategy: 'trending' # Cache trending videos # - # size: '10GB' # # Minimum time the video must remain in the cache. Only accept values > 10 hours (to not overload remote instances) # min_lifetime: '48 hours' # strategy: 'recently-added' # Cache recently added videos # min_views: 10 # Having at least x views
NGinx
Copier le fichier de configuration NGinx fournie et, l'adapter selon vos besoins.
# sudo cp /opt/peertube/peertube-latest/support/nginx/peertube.example.com /etc/nginx/sites-available/peertube.example.com # vim /etc/nginx/sites-available/peertube
Activer ce vhost et redémarrer NGinx.
# cd /etc/nginx/sites-enabled # ln -s ../sites-availables/peertube.example.com # systemctl restart nginx
Affinage TCP/IP
Il est nécessaire de modifier les paramère TCP/IP afin de garantir un meilleur fonctionnement de Peertube.
# cp /opt/peertube/peertube-latest/support/sysctl.d/30-peertube-tcp.conf /etc/sysctl.d/ # sysctl -p /etc/sysctl.d/30-peertube-tcp.conf
SystemD
Copier le fichier de configuration pour SystemD dans /etc/systemd/system/
et l'activer, penser à le modifier si besoin en fonctione d'où Peertube est installé !
# cp /opt/peertube/peertube-latest/support/systemd/peertube.service /etc/systemd/system/ # vim /etc/systemd/system/peertube.service # systemctl daemon-reload # systemctl enable peertube
Démarrer le service Peertube et vérifier dans les logs que tout se passe bien.
# systemctl start peertube && journalctl -feu peertube
Trucs & astuces
Mot de passe d'administration
Le mot de passe de l'administrateur est automatiquement généré lors du premier démarrage du service peertube
et peu être retrouvé dans les long, il est possible de le modifier via la commande suivante :
# su - peertube $ NODE_CONFIG_DIR=/opt/peertube/config NODE_ENV=production npm run reset-password -- -u root
Mises à jour
Vérifier le journal des modifications.
Automatique (Modifications mineures uniquement)
Le mot de passe demandé est celui de la BDD.
# su - peertube $ ./upgrade.sh
Manuelles
Peertube
Sauvegarder la BDD.
# SQL_BACKUP_PATH="backup/sql-peertube-$(date -Im).bak" # cd /opt/peertube # sudo -u peertube mkdir -p backup # sudo -u postgres pg_dump -F c peertube | sudo -u peertube tee "$SQL_BACKUP_PATH" >/dev/null
Vérifier quel est la dernière version de Peertube, puis la récupérer et la décompresser.
# 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" $ cd versions $ wget -q "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.tar.xz" $ tar -xJf peertube-${VERSION}.tar.xz $ rm -f peertube-${VERSION}.tar.xz
Installer les dépendances.
$ cd peertube-${VERSION} $ yarn install --production --pure-lockfile
Copier le nouveau fichier default.yaml
et vérifier les modifcations apporté à la configuration, adapter votre configuration au besoin.
$ cd ~ $ cp versions/peertube-${VERSION}/config/default.yaml config/default.yaml $ diff versions/peertube-${VERSION}/config/production.yaml.example config/production.yaml
Changer le lien vers la nouvelle version.
$ ln -f -s versions/peertube-${VERSION} ./peertube-latest
NGinx
Vérifier les modification dans la configuration de NGinx et adapter au besoin.
# cd /opt/peertube/versions # diff "$(ls --sort=t | head -2 | tail -1)/support/nginx/peertube" "$(ls --sort=t | head -1)/support/nginx/peertube"
SystemD
Vérifier les modification dans la configuration de SystemD et adapter au besoin.
# cd /opt/peertube/versions # diff "$(ls --sort=t | head -2 | tail -1)/support/systemd/peertube.service" "$(ls --sort=t | head -1)/support/systemd/peertube.service"
Redémarrer PeerTube
# systemctl reload nginx # systemctl daemon-reload # systemctl restart peertube && journalctl -fu peertube
En cas de problème
Faite pointer le lien peertube-latest
vers l'ancienne version et restaurer la sauvegarde de la BDD.
# OLD_VERSION="AncienneVersionPeertube" # SQL_BACKUP_PATH="backup/sql-peertube-DateDuBackup.bak" # cd /opt/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" # systemctl restart peertube