Zum Inhalt springen
← Alle Beiträge

tapeshelf selbst betreiben

tapeshelf ist Open Source unter der AGPL-3.0, und die App hinter tapeshelf.com ist genau die, die du auf deinem eigenen Server betreiben kannst. Das öffentliche Repository und die Installationsanleitung sind noch nicht veröffentlicht. Bis es so weit ist, steht hier, wie eine eigene Instanz aussehen wird, damit du entscheiden kannst, ob das etwas für dich ist, und einen Server einplanen kannst.

Ein Stack

Eine Instanz ist ein einziger Docker-Compose-Stack:

browser ──HTTPS──► Caddy ─── the web app, security headers
                     └── /api, /ws ──► api ──► Postgres, Redis
                                       worker (ffmpeg) ──► Postgres, Redis
browser ──► S3-compatible storage: uploads, video segments, images
  • Caddy liefert die Web-App aus und reicht API- und WebSocket-Verkehr weiter. Es holt und erneuert selbst ein Zertifikat von Let’s Encrypt. Betreibst du schon einen Reverse Proxy, kann Caddy ohne TLS dahinter laufen.
  • api ist alles, was die App tut: Konten, Regale, Zugriffsprüfungen, Anfragen und Tausch, temporäre Links und die Ausgabe von Videoschlüsseln.
  • worker ist derselbe Code, als zweiter Prozess gestartet, in einem Image mit ffmpeg. Er bereinigt und konvertiert Uploads, verschlüsselt die Streaming-Kopien, erzeugt die Bilder und Vorschauen, rendert Bearbeitungen und verschickt E-Mails und Benachrichtigungen.
  • Postgres hält die Daten. Redis hält die Auftragswarteschlangen und kurzlebige Caches.
  • Ein einmaliger Container migrate läuft bei jedem Start. Er spielt die Datenbankmigrationen ein, legt das Admin-Konto aus deinen Einstellungen an und richtet die Buckets ein: öffentlicher Lesezugriff ohne Auflistung für Bilder, eine Aufräumregel für abgebrochene Uploads und CORS für deine Domain.
  • Ein Dienst backup sichert die Datenbank einmal am Tag in deinen Bucket und behält die letzten 14 Sicherungen.

Videos gehen nie über die API. Browser laden direkt in den Speicher hoch und streamen Segmente direkt von dort, deshalb braucht der Speicher eine eigene Adresse, die Browser erreichen können. Das ist der eine Teil, der etwas Überlegung braucht. Du kannst tapeshelf auf einen S3-kompatiblen Dienst zeigen lassen, den du schon nutzt, oder den Speicher im selben Stack betreiben.

Was du brauchst

  • Einen Linux-Server mit Docker und dem Compose-Plugin. Zwei CPU-Kerne und 4 GB RAM sind ein vernünftiges Minimum.
  • Speicherplatz für die temporären Dateien des Workers: etwa das Zweieinhalbfache des größten Videos, für jedes Video, das parallel verarbeitet wird.
  • Eine Domain, die auf den Server zeigt, mit offenen Ports 80 und 443.
  • Ein SMTP-Konto für E-Mails: Bestätigungen, Passwort-Resets und Benachrichtigungen.
  • Optional einen eigenen Google-OAuth-Client für „Mit Google anmelden“ und Schlüssel für Cloudflare Turnstile für das Captcha bei wiederholten Registrierungen und neuen Gästen.

Das Konvertieren von Videos ist der aufwendige Teil. H.264-Video mit bis zu 1080p, das ein paar weitere Prüfungen besteht, muss nur neu verpackt werden, was Sekunden dauert. Eine vollständige Konvertierung auf einem kleinen Server mit zwei Kernen dauert ungefähr so lange wie das Video selbst, manchmal länger. Wer hochlädt, sieht den Fortschritt live und kann die Website weiter nutzen.

Das Geheimnis, das du nicht verlieren darfst

Alle Einstellungen stehen in einer einzigen Umgebungsdatei: das Datenbankpasswort, die Sitzungsgeheimnisse, die Zugangsdaten für den Speicher, SMTP und der Hauptschlüssel, aus dem der Verschlüsselungsschlüssel jedes Videos abgeleitet wird. Wie tapeshelf Videos verschlüsselt erklärt das. Im Produktivbetrieb startet die API nicht mit den Beispielwerten aus der Vorlagendatei.

Leg den Hauptschlüssel in einem Passwortmanager ab, sobald du ihn erzeugt hast. Geht er verloren, spielt keines der hochgeladenen Videos mehr, und eine Wiederherstellung der Datenbank hilft nicht. Auch die Codes aus Authentifizierungs-Apps für die zweistufige Anmeldung funktionieren dann nicht mehr, weil ihre Geheimnisse damit versiegelt sind.

Was anders ist als auf tapeshelf.com

Eine selbst gehostete Instanz hat keine Tarife und keine Zahlungen. Es gibt kein Free oder Pro, keinen Reiter „Tarif“, keine Upgrade-Hinweise und keine Warteseite vor Downloads. Im Einzelnen:

  • Keine Limits, außer du setzt welche. Standardmäßig gibt es keine Obergrenze für Video- oder Regalgröße. Als Admin kannst du ein Limit pro Video und eines pro Regal festlegen, für alle gleich.
  • Downloads starten sofort, mit voller Geschwindigkeit, direkt aus dem Speicher.
  • Was auf tapeshelf.com zu Pro gehört, steht allen zur Verfügung. Das sind der Videoeditor, die versteckte Seite und Passwörter für temporäre Links. Gelöschte Videos lassen sich 90 Tage lang wiederherstellen.
  • Der Missbrauchsschutz bleibt. Das tägliche Anfragelimit (standardmäßig 30 Videos, einstellbar) und die Ratenlimits der API schützen den Server, deshalb bleiben sie.
  • Dein Name, deine Regeln. Die Instanz hat ihren eigenen Namen und ihre eigene Kontaktadresse und zeigt deine Nutzungsbedingungen und deine Datenschutzerklärung aus Dateien, die du bereitstellst. Besucher sehen zuerst eine einfache Anmeldeseite.

Alles andere ist dieselbe App: Regale mit Stapeln und Kategorien, Uploads, die nach einem Abbruch weiterlaufen, die Vorschau aus 16 Bildern, verschlüsseltes Streaming, Anfragen und Tausch über mehrere Runden, Tausch mit Gästen, temporäre Links, Freunde und Chat, zweistufige Anmeldung (für den Admin Pflicht), Benachrichtigungen, die App in 20 Sprachen, Meldungen und ein Adminbereich.

Denk daran, dass eine Instanz eine Insel für sich ist. Die Leute darauf teilen und tauschen nur untereinander, nie mit Konten auf tapeshelf.com oder auf anderen Instanzen.

Updates und Backups

Ein Update heißt: neue Version holen und den Stack neu starten. Migrationen werden beim Start eingespielt, und ein Video, das gerade verarbeitet wurde, fängt von vorn an. Mach vor einem größeren Update trotzdem ein Backup.

Die täglichen Datenbanksicherungen landen von selbst in deinem Bucket. Die Videos liegen ohnehin im Speicher, und ihre Schlüssel kommen aus dem Hauptschlüssel. Die drei Dinge, die du sicher aufbewahren musst, sind also der Bucket, die Datenbanksicherungen und dieser eine Schlüssel.

Die Lizenz in einem Absatz

Du darfst tapeshelf betreiben, untersuchen und verändern. Veränderst du es und lässt andere deine veränderte Version über ein Netzwerk nutzen, verlangt die AGPL, dass du ihnen den Quellcode dieser Version anbietest. Betreibst du es unverändert, für dich, deine Familie oder deine Freunde, musst du nur die Lizenz dabeilassen.

Wann

Bald veröffentlichen wir das Repository, fertige Container-Images und eine Installationsanleitung zu Speicher, E-Mail, Backups und Fehlerbehebung. Die Seite zum Selbsthosten und dieser Blog sagen es am selben Tag, und am einfachsten verpasst du es nicht über den RSS-Feed. Bis dahin ist tapeshelf.com der schnellste Weg, die App auszuprobieren, und auf der Seite mit den Preisen stehen die Details.