Aller au contenu
← Tous les articles

Faire tourner votre propre tapeshelf

tapeshelf est open source sous licence AGPL-3.0, et l’application qui fait tourner tapeshelf.com est celle que vous pourrez installer sur votre propre serveur. Le dépôt public et le guide d’installation ne sont pas encore sortis. En attendant, voici à quoi ressemblera votre propre instance, pour que vous puissiez décider si elle vous intéresse et prévoir un serveur.

Une seule stack

Une instance, c’est une seule stack Docker Compose :

navigateur ──HTTPS──► Caddy ─── l’application web, en-têtes de sécurité
                        └── /api, /ws ──► api ──► Postgres, Redis
                                          worker (ffmpeg) ──► Postgres, Redis
navigateur ──► stockage compatible S3 : fichiers importés, segments vidéo, images
  • Caddy sert l’application web et transmet le trafic de l’API et des WebSockets. Il obtient et renouvelle tout seul un certificat Let’s Encrypt. Si vous avez déjà un reverse proxy, Caddy peut se placer derrière lui, sans TLS.
  • api fait tout ce que fait l’application : comptes, étagères, contrôles d’accès, demandes et échanges, liens temporaires, et distribution des clés des vidéos.
  • worker est le même code lancé comme second processus, dans une image qui contient ffmpeg. Il nettoie et convertit les vidéos importées, chiffre les copies destinées au streaming, crée les images et les aperçus, applique les montages, et envoie les e-mails et les notifications.
  • Postgres stocke les données. Redis garde les files de tâches et les caches de courte durée.
  • Un conteneur ponctuel migrate s’exécute à chaque démarrage. Il applique les migrations de la base, crée le compte administrateur à partir de vos paramètres et prépare les buckets : lecture publique sans listing pour les images, règle de nettoyage des imports abandonnés, et CORS pour votre domaine.
  • Un service backup enregistre une fois par jour un dump de la base dans votre bucket et garde les 14 derniers.

La vidéo ne passe jamais par l’API. Les navigateurs envoient directement les fichiers dans le stockage et y lisent directement les segments : le stockage a donc besoin de sa propre adresse, joignable par les navigateurs. C’est le seul point qui demande un peu de réflexion. Vous pouvez brancher tapeshelf sur un service compatible S3 que vous utilisez déjà, ou faire tourner le stockage dans la même stack.

Ce qu’il vous faudra

  • Un serveur Linux avec Docker et le plugin Compose. Deux cœurs et 4 Go de RAM sont un minimum raisonnable.
  • De l’espace disque pour les fichiers temporaires du worker : environ deux fois et demie la plus grosse vidéo, pour chaque vidéo traitée en parallèle.
  • Un domaine qui pointe vers le serveur, avec les ports 80 et 443 ouverts.
  • Un compte SMTP pour les e-mails : confirmations, réinitialisations de mot de passe et notifications.
  • En option, votre propre client OAuth Google pour « Se connecter avec Google », et des clés Cloudflare Turnstile pour le captcha lors des inscriptions répétées et pour les nouveaux invités.

La conversion vidéo est la partie lourde. Une vidéo H.264 jusqu’en 1080p qui passe encore quelques vérifications n’a besoin que d’être réempaquetée, ce qui prend quelques secondes. Une conversion complète sur un petit serveur à deux cœurs prend à peu près la durée de la vidéo, parfois plus. La personne qui importe voit la progression en direct et peut continuer à utiliser le site.

Le secret à ne pas perdre

Tous les réglages tiennent dans un seul fichier d’environnement : le mot de passe de la base, les secrets de session, les accès au stockage, le SMTP, et la clé maîtresse dont est tirée la clé de chiffrement de chaque vidéo. L’article Comment tapeshelf chiffre les vidéos l’explique. En production, l’API refuse de démarrer avec les valeurs d’exemple du fichier modèle.

Rangez la clé maîtresse dans un gestionnaire de mots de passe dès que vous la générez. Si elle est perdue, plus aucune des vidéos importées ne pourra être lue, et restaurer la base n’y changera rien. Les codes des applications d’authentification pour la connexion en deux étapes cessent aussi de fonctionner, puisque leurs secrets sont scellés avec elle.

Ce qui change par rapport à tapeshelf.com

Une instance auto-hébergée n’a ni formules ni paiements. Il n’y a ni Free ni Pro, pas d’onglet Formule, pas d’invitations à passer à Pro et pas de page d’attente avant les téléchargements. En détail :

  • Aucune limite sauf celles que vous fixez. Par défaut, la taille des vidéos et des étagères n’est pas plafonnée. En tant qu’administrateur, vous pouvez fixer une limite par vidéo et une par étagère, les mêmes pour tous.
  • Les téléchargements démarrent tout de suite, à pleine vitesse, directement depuis le stockage.
  • Ce qui est réservé à Pro sur tapeshelf.com est disponible pour tout le monde. C’est-à-dire l’éditeur vidéo, la page masquée et les mots de passe sur les liens temporaires. Les vidéos supprimées peuvent être restaurées pendant 90 jours.
  • Les protections contre les abus restent. La limite quotidienne de demandes (30 vidéos par défaut, réglable) et les limites de débit de l’API protègent le serveur, elles restent donc en place.
  • Votre nom, vos règles. L’instance a son propre nom et son adresse e-mail de contact, et affiche vos conditions d’utilisation et votre politique de confidentialité à partir de fichiers que vous fournissez. Les visiteurs voient d’abord une simple page de connexion.

Tout le reste est la même application : étagères avec piles et catégories, imports qui reprennent après une coupure, aperçu de 16 images, streaming chiffré, demandes et échanges en plusieurs tours, échanges avec des invités, liens temporaires, amis et messagerie, connexion en deux étapes (obligatoire pour l’administrateur), notifications, l’application en 20 langues, signalements, et une interface d’administration.

Gardez en tête qu’une instance est une île. Ses utilisateurs partagent et échangent uniquement entre eux, jamais avec les comptes de tapeshelf.com ou d’autres instances.

Mises à jour et sauvegardes

Mettre à jour, c’est récupérer la nouvelle version et redémarrer la stack. Les migrations s’appliquent au démarrage, et une vidéo qui était en cours de traitement repart de zéro. Faites tout de même une sauvegarde avant une mise à jour majeure.

Les dumps quotidiens de la base arrivent tout seuls dans votre bucket. Les vidéos sont déjà dans le stockage, et leurs clés viennent de la clé maîtresse. Les trois choses à mettre à l’abri sont donc le bucket, les dumps de la base et cette fameuse clé.

La licence, en un paragraphe

Vous pouvez faire tourner tapeshelf, l’étudier et le modifier. Si vous le modifiez et laissez d’autres personnes utiliser votre version modifiée via un réseau, l’AGPL vous oblige à leur proposer le code source de cette version. Pour le faire tourner sans modification, pour vous, votre famille ou vos amis, il suffit de conserver la licence avec.

Quand

Nous publierons bientôt le dépôt, des images de conteneurs prêtes à l’emploi et un guide d’installation qui couvre le stockage, les e-mails, les sauvegardes et le dépannage. La page auto-hébergement et ce blog l’annonceront le jour même, et le flux RSS est le moyen le plus simple de ne pas le manquer. En attendant, tapeshelf.com est le moyen le plus rapide d’essayer l’application, et la page tarifs donne tous les détails.