tapeshelf na własnym serwerze

tapeshelf to otwarty projekt na licencji AGPL-3.0, a aplikację, na której działa tapeshelf.com, będzie można uruchomić na własnym serwerze. Publiczne repozytorium i instrukcja instalacji jeszcze się nie ukazały. Zanim to nastąpi, opisujemy, jak będzie wyglądać własna instancja, żeby łatwiej było zdecydować, czy to coś dla Ciebie, i zaplanować serwer.
Jeden stack
Instancja to jeden stack Docker Compose:
przeglądarka ──HTTPS──► Caddy ─── aplikacja webowa, nagłówki bezpieczeństwa
└── /api, /ws ──► api ──► Postgres, Redis
worker (ffmpeg) ──► Postgres, Redis
przeglądarka ──► magazyn zgodny z S3: przesłane pliki, segmenty wideo, obrazy
- Caddy serwuje aplikację webową i przekazuje dalej ruch do API i WebSocketów. Sam zdobywa i odnawia certyfikat Let’s Encrypt. Jeśli masz już własny reverse proxy, Caddy może stanąć za nim bez TLS.
- api robi wszystko, co robi aplikacja: konta, półki, kontrolę dostępu, prośby i wymiany, linki tymczasowe i wydawanie kluczy do filmów.
- worker to ten sam kod uruchomiony jako drugi proces, w obrazie z ffmpeg. Czyści i konwertuje przesłane pliki, szyfruje kopie do odtwarzania, robi klatki i podglądy, renderuje edycje oraz wysyła e-maile i powiadomienia.
- Postgres przechowuje dane. Redis przechowuje kolejki zadań i krótkotrwałą pamięć podręczną.
- Jednorazowy kontener migrate uruchamia się przy każdym starcie. Stosuje migracje bazy danych, tworzy konto administratora z Twoich ustawień i konfiguruje zasobniki: publiczny odczyt bez listowania dla obrazów, regułę sprzątania porzuconych przesyłań i CORS dla Twojej domeny.
- Usługa backup raz dziennie zrzuca bazę danych do Twojego zasobnika i trzyma 14 ostatnich zrzutów.
Wideo nigdy nie przechodzi przez API. Przeglądarki wysyłają pliki prosto do magazynu i stamtąd pobierają segmenty, więc magazyn potrzebuje własnego adresu, do którego przeglądarki mają dostęp. To jedyna część, która wymaga chwili namysłu. Możesz podłączyć tapeshelf do usługi zgodnej z S3, z której już korzystasz, albo uruchomić magazyn w tym samym stacku.
Czego potrzebujesz
- Serwera z Linuksem, Dockerem i wtyczką Compose. Rozsądne minimum to dwa rdzenie procesora i 4 GB RAM.
- Miejsca na dysku na pliki tymczasowe workera: mniej więcej dwa i pół raza tyle, co największy film, na każdy film przetwarzany równolegle.
- Domeny wskazującej na serwer, z otwartymi portami 80 i 443.
- Konta SMTP do wysyłki e-maili: potwierdzeń, resetów hasła i powiadomień.
- Opcjonalnie własnego klienta Google OAuth do logowania przez Google i kluczy Cloudflare Turnstile do captchy przy kolejnych rejestracjach i dla nowych gości.
Najcięższa jest konwersja wideo. Film w H.264 do 1080p, który przejdzie jeszcze kilka testów, wymaga tylko przepakowania, a to trwa kilka sekund. Pełna konwersja na małym dwurdzeniowym serwerze zajmuje mniej więcej tyle, ile trwa film, czasem dłużej. Osoba, która go przesyła, widzi postęp na żywo i może dalej korzystać z serwisu.
Sekret, którego nie wolno zgubić
Wszystkie ustawienia są w jednym pliku środowiskowym: hasło do bazy danych, sekrety sesji, dane dostępowe do magazynu, SMTP i klucz główny, z którego wyliczany jest klucz szyfrujący każdego filmu. Wyjaśnia to wpis Jak tapeshelf szyfruje filmy. W środowisku produkcyjnym API odmówi startu z przykładowymi wartościami z pliku wzorcowego.
Zapisz klucz główny w menedżerze haseł zaraz po wygenerowaniu. Jeśli przepadnie, żaden z przesłanych filmów już się nie odtworzy, a przywrócenie bazy danych nie pomoże. Przestaną też działać kody z aplikacji uwierzytelniających do logowania dwuetapowego, bo ich sekrety są nim zaszyfrowane.
Czym różni się od tapeshelf.com
Własna instancja nie ma planów ani płatności. Nie ma Free ani Pro, zakładki „Plan”, zachęt do przejścia na Pro ani strony oczekiwania przed pobraniem. Szczegółowo:
- Żadnych limitów, dopóki ich nie ustawisz. Domyślnie nie ma ograniczenia rozmiaru filmu ani półki. Jako administrator możesz ustawić jeden limit na film i jeden na półkę, taki sam dla wszystkich.
- Pobieranie zaczyna się od razu, z pełną prędkością, prosto z magazynu.
- To, co na tapeshelf.com jest w Pro, mają wszyscy. Czyli edytor wideo, ukrytą stronę i hasła do linków tymczasowych. Usunięte filmy można przywrócić przez 90 dni.
- Ochrona przed nadużyciami zostaje. Dzienny limit próśb (domyślnie 30 filmów, do zmiany) i limity zapytań do API chronią serwer, więc pozostają.
- Twoja nazwa, Twoje zasady. Instancja ma własną nazwę i kontaktowy adres e-mail oraz pokazuje Twój regulamin i politykę prywatności z dostarczonych przez Ciebie plików. Odwiedzający najpierw widzą prostą stronę logowania.
Cała reszta to ta sama aplikacja: półki ze stosami i kategoriami, wznawiane przesyłanie, podgląd z 16 klatek, szyfrowane odtwarzanie, prośby i wielorundowe wymiany, wymiany z gośćmi, linki tymczasowe, znajomi i czat, logowanie dwuetapowe (obowiązkowe dla administratora), powiadomienia, aplikacja w 20 językach, zgłoszenia i panel administratora.
Pamiętaj, że instancja to osobna wyspa. Ludzie na niej udostępniają filmy i wymieniają się tylko między sobą, nigdy z kontami na tapeshelf.com ani na innych instancjach.
Aktualizacje i kopie zapasowe
Aktualizacja polega na pobraniu nowej wersji i ponownym uruchomieniu stacku. Migracje stosują się przy starcie, a film, który był akurat przetwarzany, zaczyna się przetwarzać od nowa. Mimo to przed dużą aktualizacją zrób kopię zapasową.
Codzienne zrzuty bazy danych same trafiają do Twojego zasobnika. Filmy i tak leżą w magazynie, a ich klucze pochodzą od klucza głównego. Trzy rzeczy, których trzeba pilnować, to więc zasobnik, zrzuty bazy danych i ten jeden klucz.
Licencja w jednym akapicie
Możesz uruchamiać tapeshelf, badać go i zmieniać. Jeśli go zmodyfikujesz i pozwolisz innym korzystać ze zmodyfikowanej wersji przez sieć, AGPL wymaga, żeby udostępnić im kod źródłowy tej wersji. Uruchomienie go bez zmian, dla siebie, rodziny czy znajomych, nie wymaga niczego poza dołączeniem licencji.
Kiedy
Wkrótce opublikujemy repozytorium, gotowe obrazy kontenerów i instrukcję instalacji, która omówi magazyn, e-mail, kopie zapasowe i rozwiązywanie problemów. Strona o własnym serwerze i ten blog dadzą znać tego samego dnia, a najprościej nie przegapić tego przez kanał RSS. Do tego czasu najszybciej wypróbujesz aplikację na tapeshelf.com, a szczegóły znajdziesz w cenniku.