---
categories: web video
toc: no
title: How to install peertube
...

## Installation de paquets

~~~
$ sudo apt install install nginx ffmpeg wget redis postgresql
~~~


## Utilisateur PeerTube

Créer un utilisateur peertube avec /var/www/peertube home:

~~~
$ sudo useradd -m -d /var/www/peertube -s /bin/bash -p peertube peertube
~~~

Définissez son MOT DE PASSE:

~~~
$ sudo passwd peertube
~~~


## Database

Créez la base de données de production et un utilisateur peertube à l'intérieur PostgreSQL:

~~~
$ cd /var/www/peertube
$ sudo -u postgres createuser -P peertube
~~~

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.

~~~
$ sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_prod
~~~

Activez ensuite les extensions dont PeerTube a besoin:

~~~
$ sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_prod
$ sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_prod
~~~

## Préparer le répertoire PeerTube

Récupérer la dernière version taguée de 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"
~~~

Ouvrez le répertoire peertube, créez quelques répertoires requis:

~~~
$ cd /var/www/peertube
$ sudo -u peertube mkdir config storage versions
$ sudo -u peertube chmod 750 config/
~~~

Téléchargez la dernière version du client Peertube, décompressez-la et supprimez le zip:

~~~
$ 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
~~~

## Installer Peertube:


~~~
$ 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
~~~

## Paramétrage de PeerTube

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.

~~~
$ cd /var/www/peertube
$ sudo -u peertube cp peertube-latest/config/default.yaml config/default.yaml
~~~

Copiez maintenant l'exemple de configuration de production:

~~~
$ cd /var/www/peertube
$ sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml
~~~

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.

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.


## Webserver


Nous ne fournissons que des fichiers de configuration officiels pour Nginx.

Copiez le modèle de configuration nginx:

~~~
$ sudo cp /var/www/peertube/peertube-latest/support/nginx/peertube /etc/nginx/sites-available/peertube
~~~

Définissez ensuite le domaine pour le fichier de configuration du serveur Web. Remplacez [peertube-domain] par le domaine du serveur peertube.

~~~
$ 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
~~~

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).

~~~
$ sudo vim /etc/nginx/sites-available/peertube
~~~

Activez le fichier de configuration:

~~~
$ sudo ln -s /etc/nginx/sites-available/peertube /etc/nginx/sites-enabled/peertube
~~~

Pour générer le certificat pour votre domaine comme requis pour faire fonctionner https, vous pouvez utiliser Let's Encrypt:

~~~
$ sudo systemctl stop nginx
$ sudo certbot certonly --standalone --post-hook "systemctl restart nginx"
$ sudo systemctl reload nginx
~~~

Maintenant que vous avez les certificats, vous pouvez recharger nginx :

~~~
$ sudo systemctl reload nginx
~~~

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.:

~~~
$ # Replace authenticator = standalone by authenticator = webroot
$ # Add webroot_path = /var/www/certbot
$ sudo vim /etc/letsencrypt/renewal/your-domain.com.conf
~~~

## TCP/IP Tuning

On Linux

~~~
$ 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
~~~

Votre distribution peut l'activer par défaut, mais au moins Debian 9 ne le fait pas, et le planificateur FIFO par défaut est assez sujet au "Buffer Bloat" et à une latence extrême lorsqu'il s'agit de liens client plus lents, comme nous le rencontrons souvent dans un serveur vidéo.


## systemd

If your OS uses systemd, copy the configuration template:
~~~
$ sudo cp /var/www/peertube/peertube-latest/support/systemd/peertube.service /etc/systemd/system/
~~~
Check the service file (PeerTube paths and security directives):
~~~
$ sudo vim /etc/systemd/system/peertube.service
~~~
Dites à systemd de recharger sa configuration:
~~~
$ sudo systemctl daemon-reload
~~~
Si vous souhaitez démarrer PeerTube au démarrage:
~~~
$ sudo systemctl enable peertube
~~~
Run:
~~~
$ sudo systemctl start peertube
$ sudo journalctl -feu peertube
~~~

Run:
~~~
$ sudo service peertube start
~~~


## 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
~~~
Alternatively you can set the environment variable PT_INITIAL_ROOT_PASSWORD, to your own administrator password, although it must be 6 characters or more.



## Mise a jour Instance PeerTube

Check the changelog (in particular BREAKING CHANGES!): https://github.com/Chocobozzz/PeerTube/blob/develop/CHANGELOG.md
Auto


Le mot de passe demandé est le mot de passe de l'utilisateur de la base de données de PeerTube.

~~~
$ cd /var/www/peertube/peertube-latest/scripts && sudo -H -u peertube ./upgrade.sh
$ sudo systemctl restart peertube # Or use your OS command to restart PeerTube if you don't use systemd
~~~

Manuellement

Faire une sauvegarde SQL

~~~
$ 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
~~~

Récupérez la dernière version taguée de 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"
~~~

Téléchargez la nouvelle version et décompressez-la :

~~~
$ 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
~~~

Install node dependencies:

~~~
$ cd /var/www/peertube/versions/peertube-${VERSION} && \
    sudo -H -u peertube yarn install --production --pure-lockfile
~~~

Copiez les nouvelles valeurs de configuration par défaut et mettez à jour votre fichier de configuration :

~~~
$ 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
~~~

Modifiez le lien pour qu'il pointe vers la dernière version :

~~~
$ cd /var/www/peertube && \
    sudo unlink ./peertube-latest && \
    sudo -u peertube ln -s versions/peertube-${VERSION} ./peertube-latest
~~~

Start dependencies

~~~
sudo systemctl enable --now redis
sudo systemctl enable --now postgresql
~~~


nginx

Vérifiez les modifications apportées à la configuration nginx :

~~~
$ cd /var/www/peertube/versions
$ diff "$(ls --sort=t | head -2 | tail -1)/support/nginx/peertube" "$(ls --sort=t | head -1)/support/nginx/peertube"
~~~

systemd

Vérifiez les changements dans la configuration de systemd :

~~~
$ 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"
~~~

## Redémarrer PeerTube

Si vous avez modifié votre configuration nginx :

~~~
$ sudo systemctl reload nginx
~~~

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é ?

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
~~~
