Déployer un serveur Peertube grâce à Docker

Déployer un serveur Peertube grâce à Docker

17 mai 2019 Non Par Paidge

A l’instar de Diaspora*, le réseau social libre et décentralisé, Peertube est un réseau de serveurs indépendants permettant le partage et le visionnage de vidéos. Chaque serveur décide d’agréger ou non le contenu local des autres serveurs, le fonctionnement du réseau ne dépend donc pas d’une entreprise ou d’une institution centralisée. De plus, chaque serveur dispose de sa propre politique de diffusion et de ses propres conditions d’utilisation. Ainsi les créateurs de contenu peuvent choisir sur quel serveur s’inscrire afin de proposer leurs vidéos.

Maintenant passons du côté technique. Peertube repose sur différents composants (NodeJS, Redis, Nginx, PostgreSQL… ) et il peut s’avérer assez fastidieux de vouloir le déployer sur son serveur.

C’est pourquoi, aujourd’hui, nous vous proposons un tutoriel expliquant comment déployer facilement un serveur Peertube grâce à Docker et docker-compose.


I. Installer Docker et docker-compose

Si vous ne savez pas comment faire, je vous invite à suivre notre tutoriel sur Docker. Vous y trouverez la marche à suivre étape par étape.


II. Préparez l’environnement

  • Créer le dossier de travail et un sous-dossier de partage de fichiers entre les conteneurs et la machine hôte :
sudo mkdir /var/peertube/ && cd /var/peertube/ && mkdir ./docker-volume
  • Récupérer le fichier docker-compose et le fichier qui contiendra les variables d’environnement de nos conteneurs :
curl -s "https://framagit.org/framasoft/peertube/PeerTube/raw/develop/support/docker/production/docker-compose.yml" -o docker-compose.yml "https://framagit.org/framasoft/peertube/PeerTube/raw/develop/support/docker/production/.env" -o .env
  • À ce stade, vous devriez obtenir l’arborescence suivante :
- /var/peertube/
   +- docker-compose.yml (fichier)
   +- .env (fichier)
   +- docker-volume (dossier)
  • Adapter le fichier docker-compose.yml :
vim ./docker-compose.yml

N.B : Comme nous utiliserons notre propre reverse-proxy, vous pouvez supprimer toutes les services webserver et certbot. De plus, j’utilisais une ancienne version de Peertube avec PostgreSQL v10 et PostgreSQL v13 n’est pas compatible avec les fichiers de la v10 donc je suis resté en PostgreSQL v10.

Voici à quoi devrait ressembler votre fichier docker-compose.yml :


version: "3.3"

services:
  peertube:
    image: chocobozzz/peertube:production-buster
    env_file:
      - .env
    ports:
      - "9000:9000"
    volumes:
      - ./docker-volume/data:/data
      - ./docker-volume/config:/config
    depends_on:
      - postgres
      - redis
      - postfix
    restart: "always"

  postgres:
    image: postgres:10-alpine
    environment:
      POSTGRES_USER: ${PEERTUBE_DB_USERNAME}
      POSTGRES_PASSWORD: ${PEERTUBE_DB_PASSWORD}
      POSTGRES_DB: peertube
    volumes:
      - ./docker-volume/db:/var/lib/postgresql/data
    restart: "always"

  redis:
    image: redis:4-alpine
    volumes:
      - ./docker-volume/redis:/data
    restart: "always"

  postfix:
    image: mwader/postfix-relay
    environment:
      - POSTFIX_myhostname=${PEERTUBE_WEBSERVER_HOSTNAME}
    restart: "always"
  • Vous remarquerez certaines variables (PEERTUBE_WEBSERVER_HOSTNAME, PEERTUBE_DB_USERNAME et PEERTUBE_DB_PASSWORD). Pour personnaliser vos variables :
vim ./.env

N.B : la liste complète des variables d’environnement utilisables est disponible ici.


III. Lancer les conteneurs pour la première fois

  • Il suffit de se rendre dans le dossier qui contient le fichier docker-compose.yml et de lancer la commande docker-compose up :
cd /var/peertube/ && docker-compose up
  • Lisez bien les informations de chaque conteneur à l’écran. Elles vous permettront de corriger les éventuels problèmes de paramétrage. Un Ctrl + C vous permettra de stopper les conteneurs et de reprendre la main sur la console.

N.B : Si vous avez obtenu un message indiquant : « It seems PeerTube was started (and created some data) with another domain name. You should run the following commands. » Alors il faut :

  1. Lancer le docker compose avec la console détachée :
    sudo docker-compose up -d
  2. Afin de pouvoir rentrer en SSH dans le conteneur :
    sudo docker exec -it peertube_peertube_1 /bin/sh
  3. Et d’exécuter cette commande :
    npm run update-host
  4. Puis sortir du conteneur :
    exit
  • Lorsque vous êtes sûr que le docker compose se lance sans erreurs, vous pouvez le lancer pour de bon avec la console détachée :
sudo docker-compose up -d
  • Pour arrêter les conteneurs :
docker-compose stop
  • Pour arrêter et supprimer les conteneurs :
docker-compose down

IV. Personnaliser le mot de passe Administrateur :

  1. Connectez-vous en SSH dans le conteneur :
    sudo docker exec -it peertube_peertube_1 /bin/sh
  2. Puis lancez cette commande :
    cd /app && NODE_CONFIG_DIR=/config NODE_ENV=production npm run reset-password -- -u root

A l’invite, choisissez un mot de passe. Dorénavant vous pourrez vous connecter sur votre instance web Peertube avec l’identifiant root et le mot de passe ainsi choisi.


V. Paramétrage du reverse-proxy

Justement. Pour pouvoir accéder à votre instance web, il va falloir paramétrer votre proxy. En effet, pour le moment, votre serveur Peertube écoute sur le port 9000.

Il va donc falloir récupérer les certificats SSL pour votre domaine (grâce à Let’s Encrypt via certbot par exemple ). Puis, en fonction de votre serveur web, récupérer le fichier de configuration adéquate pour l’adapter à votre serveur :

  • Avec Apache (il faut activer les modules proxy_http, headers, rewrite et ssl)
  • Avec Nginx

VI. Agréger d’autres serveurs et importer du contenu

  • Avec un compte administrateur (dont le compte root), rendez-vous dans le menu Administration > Gérer les abonnements > S’abonner pour y déposer une liste de serveurs Peertube à agréger. Par exemple :
video.colibris-outilslibres.org
 videos.numerique-en-commun.fr
 tupe.p2p.legal
 tube.conferences-gesticulees.net
 peertube.normandie-libre.fr
  • Avec n’importe quel compte utilisateur qui dispose d’un quota sur le serveur, il est possible d’importer des vidéos grâce au bouton .

Voilà, ce tutoriel est terminé. Vous pouvez accéder à votre instance Peertube, grâce à votre navigateur web, pour y créer un compte personnel. Avec le compte root, il sera alors possible d’attribuer le rôle Administrateur à votre compte personnel.