tapeshelf na vlastním serveru

tapeshelf je open source pod licencí AGPL-3.0 a aplikaci, na které běží tapeshelf.com, si budete moct spustit na vlastním serveru. Veřejný repozitář ani návod k instalaci zatím nevyšly. Než se tak stane, popíšeme, jak bude vlastní instance vypadat, abyste se mohli rozhodnout, jestli je pro vás, a naplánovat si server.
Jeden stack
Instance je jediný stack Docker Compose:
prohlížeč ──HTTPS──► Caddy ─── webová aplikace, bezpečnostní hlavičky
└── /api, /ws ──► api ──► Postgres, Redis
worker (ffmpeg) ──► Postgres, Redis
prohlížeč ──► úložiště kompatibilní s S3: nahrávání, segmenty videí, obrázky
- Caddy servíruje webovou aplikaci a předává dál provoz API a WebSocketů. Certifikát Let’s Encrypt si sám získá i obnovuje. Pokud už máte vlastní reverzní proxy, může Caddy běžet za ní bez TLS.
- api dělá všechno, co dělá aplikace: účty, police, kontrolu přístupu, žádosti a výměny, dočasné odkazy a vydávání klíčů k videím.
- worker je stejný kód spuštěný jako druhý proces, v obrazu s ffmpeg. Čistí a převádí nahraná videa, šifruje kopie pro streamování, vytváří snímky a náhledy, renderuje úpravy a posílá e-maily a oznámení.
- Postgres uchovává data. Redis uchovává fronty úloh a krátkodobou mezipaměť.
- Jednorázový kontejner migrate se spustí při každém startu. Provede migrace databáze, vytvoří účet administrátora podle vašeho nastavení a připraví buckety: veřejné čtení obrázků bez možnosti výpisu, pravidlo pro úklid opuštěných nahrávání a CORS pro vaši doménu.
- Služba backup jednou denně uloží výpis databáze do vašeho bucketu a ponechává posledních 14.
Videa přes API vůbec nejdou. Prohlížeče je nahrávají přímo do úložiště a segmenty si z něj přímo stahují, takže úložiště potřebuje vlastní adresu dostupnou z prohlížeče. To je jediná část, která chce trochu rozmyslet. tapeshelf můžete napojit na službu kompatibilní s S3, kterou už používáte, nebo spustit úložiště ve stejném stacku.
Co budete potřebovat
- Linuxový server s Dockerem a pluginem Compose. Rozumné minimum jsou dvě jádra CPU a 4 GB RAM.
- Místo na disku pro dočasné soubory workeru: zhruba dvaapůlnásobek největšího videa na každé zpracovávané souběžně.
- Doménu nasměrovanou na server a otevřené porty 80 a 443.
- Účet SMTP pro e-maily: potvrzení, obnovení hesla a oznámení.
- Volitelně vlastního klienta Google OAuth pro přihlášení přes Google a klíče Cloudflare Turnstile pro captchu při opakované registraci a u nových hostů.
Nejnáročnější je převod videa. Video v H.264 do 1080p, které projde ještě několika kontrolami, stačí přebalit, a to trvá pár sekund. Úplný převod na malém dvoujádrovém serveru trvá zhruba stejně dlouho jako samotné video, někdy i déle. Kdo video nahrál, vidí průběh živě a může mezitím web dál používat.
Tajemství, které nesmíte ztratit
Veškeré nastavení je v jednom souboru s proměnnými prostředí: heslo k databázi, tajemství relací, přístup k úložišti, SMTP a hlavní klíč, ze kterého se odvozuje šifrovací klíč každého videa. Vysvětluje to článek Jak tapeshelf šifruje videa. V produkčním režimu se API odmítne spustit s ukázkovými hodnotami ze vzorového souboru.
Hlavní klíč si uložte do správce hesel hned, jak ho vygenerujete. Pokud se ztratí, žádné nahrané video se už nepřehraje a obnova databáze nepomůže. Přestanou fungovat i kódy z ověřovacích aplikací pro dvoufázové přihlášení, protože jejich tajemství jsou zašifrovaná stejným klíčem.
V čem se liší od tapeshelf.com
Instance na vlastním serveru nemá tarify ani platby. Není tu Free ani Pro, karta „Tarif“, výzvy k přechodu na Pro ani čekací stránka před stažením. Podrobněji:
- Žádné limity, dokud je nenastavíte. Ve výchozím stavu není velikost videa ani police nijak omezená. Jako administrátor můžete nastavit jeden limit na video a jeden na polici, pro všechny stejný.
- Stahování začne hned, plnou rychlostí, přímo z úložiště.
- Co je na tapeshelf.com v Pro, tady mají všichni. Tedy editor videa, skrytou stránku a hesla u dočasných odkazů. Smazaná videa jde obnovit 90 dní.
- Ochrana proti zneužití zůstává. Denní limit žádostí (ve výchozím stavu 30 videí, dá se změnit) a limity četnosti požadavků na API chrání server, takže zůstávají.
- Vaše jméno, vaše pravidla. Instance má vlastní název a kontaktní e-mail a podmínky používání i zásady ochrany osobních údajů zobrazuje ze souborů, které dodáte. Návštěvníci nejdřív uvidí jednoduchou přihlašovací stránku.
Všechno ostatní je stejná aplikace: police se stohy a kategoriemi, nahrávání, které pokračuje po výpadku, náhled ze 16 snímků, šifrované streamování, žádosti a výměny na několik kol, výměny s hosty, dočasné odkazy, přátelé a konverzace, dvoufázové přihlášení (pro administrátora povinné), oznámení, aplikace ve 20 jazycích, nahlašování a administrace.
Počítejte s tím, že každá instance je samostatný ostrov. Lidé na ní sdílejí a vyměňují si videa jen mezi sebou, nikdy s účty na tapeshelf.com ani na jiných instancích.
Aktualizace a zálohy
Aktualizace znamená stáhnout novou verzi a restartovat stack. Migrace se provedou při startu a video, které se zrovna zpracovávalo, se začne zpracovávat znovu. Před větší aktualizací si přesto udělejte zálohu.
Denní výpisy databáze se do vašeho bucketu ukládají samy. Videa už leží v úložišti a jejich klíče se odvozují z hlavního klíče. Chránit tedy potřebujete tři věci: bucket, výpisy databáze a ten jeden klíč.
Licence v jednom odstavci
tapeshelf můžete provozovat, zkoumat a měnit. Když ho upravíte a necháte jiné lidi používat svou upravenou verzi přes síť, AGPL po vás vyžaduje, abyste jim nabídli zdrojový kód této verze. Pokud ho provozujete beze změn, pro sebe, rodinu nebo přátele, stačí k němu nechat licenci.
Kdy
Brzy zveřejníme repozitář, hotové obrazy kontejnerů a návod k instalaci, který pokryje úložiště, e-maily, zálohy a řešení potíží. V ten den to oznámí stránka o vlastním serveru i tento blog a nejsnáz to nepropásnete přes RSS. Mezitím je tapeshelf.com nejrychlejší způsob, jak aplikaci vyzkoušet, a podrobnosti najdete v cenách.