tapeshelf sul tuo server

tapeshelf è open source con licenza AGPL-3.0, e l’app su cui gira tapeshelf.com è la stessa che potrai far girare sul tuo server. Il repository pubblico e la guida all’installazione non sono ancora usciti. Nel frattempo ecco come sarà la tua istanza, così puoi capire se fa per te e scegliere un server.
Un solo stack
Un’istanza è un unico stack Docker Compose:
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 serve l’app web e inoltra il traffico verso l’API e i WebSocket. Ottiene e rinnova da solo un certificato Let’s Encrypt. Se usi già un reverse proxy, Caddy può stare dietro senza TLS.
- api è tutto ciò che fa l’app: account, scaffali, controlli di accesso, richieste e scambi, link temporanei e consegna delle chiavi dei video.
- worker è lo stesso codice avviato come secondo processo, in un’immagine con ffmpeg. Ripulisce e converte i caricamenti, cifra le copie per lo streaming, estrae i fotogrammi e crea le anteprime, applica le modifiche dell’editor e invia email e notifiche.
- Postgres contiene i dati. Redis contiene le code dei lavori e le cache di breve durata.
- Un container migrate monouso parte a ogni avvio. Applica le migrazioni del database, crea l’account amministratore dalle tue impostazioni e prepara i bucket: lettura pubblica senza elenco per le immagini, una regola che ripulisce i caricamenti abbandonati e il CORS per il tuo dominio.
- Un servizio di backup salva una copia del database nel tuo bucket una volta al giorno e conserva le ultime 14.
I video non passano mai dall’API. I browser caricano direttamente nello storage e riproducono i segmenti direttamente da lì, quindi lo storage ha bisogno di un indirizzo proprio raggiungibile dai browser. È l’unica parte che richiede un po’ di riflessione. Puoi collegare tapeshelf a un servizio compatibile con S3 che usi già, oppure far girare lo storage nello stesso stack.
Cosa ti serve
- Un server Linux con Docker e il plugin Compose. Due core e 4 GB di RAM sono un minimo ragionevole.
- Spazio su disco per i file temporanei del worker: circa due volte e mezzo il video più grande, per ogni video elaborato in parallelo.
- Un dominio che punta al server, con le porte 80 e 443 aperte.
- Un account SMTP per le email: conferme, reimpostazione della password e notifiche.
- Se vuoi, un tuo client Google OAuth per l’accesso con Google e le chiavi di Cloudflare Turnstile per il captcha sulle registrazioni ripetute e sui nuovi ospiti.
La parte pesante è la conversione dei video. Un video H.264 fino a 1080p che supera qualche altro controllo va solo reimpacchettato, e bastano pochi secondi. Una conversione completa su un piccolo server a due core richiede più o meno la durata del video, a volte di più. Chi carica vede l’avanzamento in tempo reale e può continuare a usare il sito.
Il segreto da non perdere
Tutte le impostazioni stanno in un unico file di ambiente: la password del database, i segreti delle sessioni, le credenziali dello storage, l’SMTP e la chiave principale da cui si ricava la chiave di cifratura di ogni video. Lo spiega Come tapeshelf cifra i video. In produzione l’API si rifiuta di partire con i valori di esempio del file di esempio.
Metti la chiave principale in un gestore di password appena la generi. Se la perdi, nessuno dei video caricati si potrà più riprodurre, e ripristinare il database non servirà. Smettono di funzionare anche i codici dell’app di autenticazione per l’accesso in due passaggi, perché i loro segreti sono sigillati con quella chiave.
Cosa cambia rispetto a tapeshelf.com
Un’istanza self-hosted non ha piani né pagamenti. Niente Free o Pro, niente scheda Piano, niente inviti a passare a Pro e nessuna pagina d’attesa prima dei download. Nel dettaglio:
- Nessun limite finché non lo imposti. Di base non c’è un tetto alla dimensione dei video o dello scaffale. Come amministratore puoi impostare un limite per video e uno per scaffale, uguali per tutti.
- I download partono subito, alla massima velocità, direttamente dallo storage.
- Ciò che su tapeshelf.com è Pro qui c’è per tutti. Cioè l’editor video, la pagina nascosta e le password sui link temporanei. I video eliminati si possono recuperare per 90 giorni.
- Le protezioni contro gli abusi restano. Il limite giornaliero di richieste (30 video di base, modificabile) e i limiti di frequenza dell’API proteggono il server, quindi restano.
- Il tuo nome, le tue regole. L’istanza ha un nome e un’email di contatto propri e mostra i tuoi termini e la tua informativa sulla privacy, presi da file che fornisci tu. Chi arriva vede prima una semplice pagina di accesso.
Tutto il resto è la stessa app: scaffali con pile e categorie, caricamenti che riprendono da dove si erano fermati, l’anteprima di 16 fotogrammi, lo streaming cifrato, richieste e scambi a più round, scambi con gli ospiti, link temporanei, amici e chat, accesso in due passaggi (obbligatorio per l’amministratore), notifiche, l’app in 20 lingue, segnalazioni e un pannello di amministrazione.
Tieni presente che un’istanza è un’isola a sé. Chi la usa condivide e scambia solo con gli altri utenti della stessa istanza, mai con account su tapeshelf.com o su altre istanze.
Aggiornamenti e backup
Per aggiornare scarichi la nuova versione e riavvii lo stack. Le migrazioni si applicano all’avvio, e un video che era in elaborazione riparte da capo. Prima di un aggiornamento importante fai comunque un backup.
Le copie giornaliere del database arrivano da sole nel tuo bucket. I video stanno già nello storage, e le loro chiavi derivano dalla chiave principale. Quindi le tre cose da tenere al sicuro sono il bucket, le copie del database e quella chiave.
La licenza, in un paragrafo
Puoi usare tapeshelf, studiarlo e modificarlo. Se lo modifichi e lasci che altre persone usino la tua versione modificata attraverso una rete, l’AGPL ti chiede di offrire loro il codice sorgente di quella versione. Per usarlo senza modifiche, per te, la tua famiglia o i tuoi amici, basta conservare la licenza insieme al codice.
Quando
Presto pubblicheremo il repository, le immagini dei container pronte all’uso e una guida all’installazione che copre storage, email, backup e risoluzione dei problemi. La pagina sul self-hosting e questo blog lo diranno il giorno stesso, e il feed RSS è il modo più semplice per non perderselo. Intanto tapeshelf.com è il modo più rapido per provare l’app, e nella pagina dei prezzi trovi i dettagli.