Hoppa till innehållet
← Alla inlägg

Kör din egen tapeshelf

tapeshelf är öppen källkod under AGPL-3.0, och appen bakom tapeshelf.com är samma app som du kommer att kunna köra på din egen server. Det publika repot och installationsguiden är inte ute än. Tills de är det beskriver vi här hur det kommer att se ut att köra en egen instans, så att du kan avgöra om det passar dig och planera en server.

En stack

En instans är en enda Docker Compose-stack:

webbläsare ──HTTPS──► Caddy ─── webbappen, säkerhetshuvuden
                        └── /api, /ws ──► api ──► Postgres, Redis
                                          worker (ffmpeg) ──► Postgres, Redis
webbläsare ──► S3-kompatibel lagring: uppladdningar, videosegment, bilder
  • Caddy levererar webbappen och skickar vidare API- och WebSocket-trafik. Den hämtar och förnyar ett certifikat från Let’s Encrypt på egen hand. Om du redan kör en omvänd proxy kan Caddy stå bakom den utan TLS.
  • api är allt som appen gör: konton, hyllor, behörighetskontroller, förfrågningar och byten, tillfälliga länkar och utlämning av videonycklar.
  • worker är samma kod startad som en andra process, i en avbild med ffmpeg. Den rensar och konverterar uppladdningar, krypterar kopiorna för strömning, skapar bildrutor och förhandsvisningar, renderar redigeringar och skickar mejl och aviseringar.
  • Postgres innehåller datan. Redis innehåller jobbköerna och kortlivade cacher.
  • En engångscontainer, migrate, körs vid varje start. Den kör databasmigreringar, skapar administratörskontot utifrån dina inställningar och konfigurerar bucketarna: offentlig läsning utan listning för bilder, en städregel för övergivna uppladdningar och CORS för din domän.
  • En backup-tjänst dumpar databasen till din bucket en gång om dagen och behåller de 14 senaste dumparna.

Video passerar aldrig API:t. Webbläsare laddar upp direkt till lagringen och strömmar segment direkt därifrån, så lagringen behöver en egen adress som webbläsare kan nå. Det är den enda delen som kräver lite eftertanke. Du kan peka tapeshelf mot en S3-kompatibel tjänst som du redan använder, eller köra lagringen i samma stack.

Vad du behöver

  • En Linuxserver med Docker och Compose-pluginen. Två processorkärnor och 4 GB RAM är ett rimligt minimum.
  • Diskutrymme för workerns tillfälliga filer: ungefär två och en halv gånger den största videon, för varje video som bearbetas parallellt.
  • En domän som pekar på servern, med portarna 80 och 443 öppna.
  • Ett SMTP-konto för mejl: bekräftelser, återställning av lösenord och aviseringar.
  • Valfritt: en egen Google OAuth-klient för ”Logga in med Google” och nycklar till Cloudflare Turnstile för captchan vid upprepade registreringar och för nya gäster.

Videokonverteringen är den tunga delen. H.264-video i upp till 1080p som klarar några kontroller till behöver bara paketeras om, vilket tar några sekunder. En fullständig konvertering på en liten server med två kärnor tar ungefär lika lång tid som videon själv, ibland längre. Den som laddar upp ser förloppet live och kan använda webbplatsen under tiden.

Hemligheten du inte får förlora

Alla inställningar finns i en enda miljöfil: databaslösenordet, sessionshemligheter, uppgifter för lagringen, SMTP och huvudnyckeln som varje videos krypteringsnyckel tas fram ur. Så krypterar tapeshelf video förklarar hur. I produktion vägrar API:t att starta med exempelvärdena från exempelfilen.

Lägg huvudnyckeln i en lösenordshanterare i samma stund som du skapar den. Om den går förlorad går ingen av de uppladdade videorna att spela upp igen, och det hjälper inte att återställa databasen. Koder från autentiseringsappar för tvåstegsinloggning slutar också fungera, eftersom deras hemligheter är förseglade med den.

Skillnader mot tapeshelf.com

En egen instans har inga abonnemang och inga betalningar. Det finns ingen Free eller Pro, ingen flik för abonnemang, inga uppmaningar att uppgradera och ingen väntsida före nedladdningar. I detalj:

  • Inga gränser om du inte sätter dem. Från början finns ingen gräns för videostorlek eller hyllstorlek. Som administratör kan du sätta en gräns per video och en per hylla, samma för alla.
  • Nedladdningar startar direkt, i full hastighet, direkt från lagringen.
  • Det som ingår i Pro på tapeshelf.com finns för alla. Det gäller videoredigeraren, den dolda sidan och lösenord på tillfälliga länkar. Raderade videor kan återställas i 90 dagar.
  • Skyddet mot missbruk finns kvar. Den dagliga gränsen för förfrågningar (30 videor från början, går att ändra) och API:ts begränsningar av antalet förfrågningar skyddar servern, så de finns kvar.
  • Ditt namn, dina regler. Instansen har ett eget namn och en egen kontaktadress och visar dina villkor och din integritetspolicy från filer som du tillhandahåller. Besökare ser först en enkel inloggningssida.

Allt annat är samma app: hyllor med staplar och kategorier, uppladdningar som kan återupptas, förhandsvisningen med 16 bildrutor, krypterad strömning, förfrågningar och byten i flera omgångar, byten med gäster, tillfälliga länkar, vänner och chatt, tvåstegsinloggning (obligatorisk för administratören), aviseringar, appen på 20 språk, anmälningar och en adminpanel.

Tänk på att en instans är en egen ö. Användarna på den delar och byter bara med varandra, aldrig med konton på tapeshelf.com eller på andra instanser.

Uppdateringar och säkerhetskopior

Att uppdatera innebär att hämta den nya versionen och starta om stacken. Migreringar körs vid start, och en video som höll på att bearbetas börjar om. Ta ändå en säkerhetskopia före en större uppdatering.

Dagliga databasdumpar hamnar i din bucket av sig själva. Videorna ligger redan i lagringen, och deras nycklar tas fram ur huvudnyckeln. De tre saker du behöver ta hand om är alltså bucketen, databasdumparna och den enda nyckeln.

Licensen i ett stycke

Du får köra tapeshelf, studera det och ändra det. Om du ändrar det och låter andra använda din ändrade version över ett nätverk kräver AGPL att du erbjuder dem källkoden till den versionen. Att köra det oförändrat, för dig själv, din familj eller dina vänner, kräver inget mer än att licensen följer med.

När

Snart publicerar vi repot, färdiga containeravbilder och en installationsguide som tar upp lagring, mejl, säkerhetskopior och felsökning. Sidan om egen server och den här bloggen berättar det samma dag, och RSS-flödet är det enklaste sättet att inte missa det. Under tiden är tapeshelf.com det snabbaste sättet att prova appen, och på prissidan finns detaljerna.