Tech Zajawka / Warsztat / poradnik

Jellyfin na Windows: własny serwer multimediów w sieci domowej

Jak na zwykłym komputerze z Windowsem uruchomić Jellyfin, uporządkować własną kolekcję filmów, seriali i muzyki, udostępnić ją telewizorowi i telefonowi w sieci domowej, dodać napisy, założyć konto do oglądania bez uprawnień administratora i bezpiecznie cofnąć instalację bez ruszania oryginalnych plików.

Warsztat M1lczu 43 min czytania
Okładka: Jellyfin na Windows: własny serwer multimediów w sieci domowej

Filmy, seriale i muzyka zebrane przez lata leżą zwykle na jednym dysku w komputerze i są oglądane tylko przy tym komputerze. Jellyfin zmienia to bez chmury i bez abonamentu: na zwykłym pececie z Windowsem uruchamiany jest program serwerowy, który indeksuje wskazane foldery, dopisuje do nich opisy i okładki, a następnie udostępnia je innym urządzeniom w tej samej sieci domowej - telewizorowi, telefonowi, tabletowi, drugiemu komputerowi. Jellyfin jest opisywany przez własną dokumentację jako otwarty serwer multimedialny do porządkowania, strumieniowania i udostępniania prywatnej kolekcji na dowolnym obsługiwanym urządzeniu. (Quick Start | Jellyfin Documentation) Poniższy poradnik prowadzi przez instalację, uporządkowanie plików, pierwsze uruchomienie, dostęp z innych urządzeń w LAN, napisy, transkodowanie, konto do oglądania bez uprawnień administratora oraz bezpieczne cofnięcie całej instalacji.

Zakres: instrukcja opiera się na dokumentacji Jellyfina i Microsoftu, bez pomiarów wydajności na konkretnym egzemplarzu sprzętu.

Dla kogo jest ten tekst i czego w nim nie ma

Scenariusz jest celowo wąski i domowy: jeden komputer z Windowsem pełni rolę serwera, pliki multimedialne leżą na jego dyskach, a odtwarzanie odbywa się wyłącznie w obrębie własnej sieci lokalnej. Taki układ nie wymaga kontenerów, wirtualizacji ani osobnego serwera - Jellyfin instaluje się na Windowsie z gotowego instalatora. (Windows | Jellyfin Documentation)

Poradnik nie obejmuje udostępniania serwera do internetu. To świadoma decyzja, zgodna z ostrzeżeniami samej dokumentacji: otwarcie portu daje pełny dostęp do tego portu z sieci nadrzędnej, a otwieranie portu bezpośrednio do internetu jest opisane jako niebezpieczne i niezalecane. (Networking | Jellyfin Documentation) Osobna strona o doborze sprzętu formułuje to jeszcze mocniej - serwer Jellyfin nie jest projektowany do bezpośredniego wystawiania do internetu i powinien pozostać za prawidłowo skonfigurowaną zaporą lub w innym bezpiecznym środowisku sieciowym. (Selecting Appropriate Hardware | Jellyfin Documentation) Dostęp spoza domu to osobne zagadnienie (VPN, odwrotne proxy, certyfikaty) i nie mieści się w materiale dla początkujących.

Poradnik zakłada też, że udostępniane pliki są legalnie posiadanymi materiałami - własnymi nagraniami, kupionymi lub zgranymi z posiadanych nośników plikami. Jellyfin jest tylko odtwarzaczem i katalogiem; nie pobiera treści i nie legalizuje niczego, co zostanie do niego wrzucone.

Co będzie potrzebne

Potrzebny jest komputer z Windowsem, który może pozostawać włączony w czasie oglądania, oraz miejsce na dysku na same pliki i na dane serwera. Jellyfin w wytycznych doboru sprzętu zaleca dla wygodnej pracy przynajmniej 8 GB pamięci RAM, dysk SSD około 100 GB na system, pliki Jellyfin i pamięć podręczną transkodowania oraz połączenie serwera kablem Ethernet - Wi-Fi i transmisja przez sieć elektryczną są tam wprost odradzane jako źródło złych doświadczeń. (Selecting Appropriate Hardware | Jellyfin Documentation) Te same zalecenia ostrzegają, że pliki samego Jellyfina podlegają intensywnym operacjom losowego dostępu, więc warto trzymać je na dysku SSD, a unikać mechanicznych dysków w technologii SMR. (Selecting Appropriate Hardware | Jellyfin Documentation)

Warto rozróżnić dwie rzeczy, które bywają mylone. Pliki multimedialne mogą leżeć na dowolnym nośniku, którego prędkość odczytu sekwencyjnego przewyższa bitrate materiału - dopuszczalny jest także udział sieciowy lub zamontowana usługa chmurowa. (Selecting Appropriate Hardware | Jellyfin Documentation) Dane robocze serwera (baza, metadane, pamięć podręczna, logi) to zupełnie inny profil obciążenia i to ich dotyczy zalecenie SSD.

Po stronie oprogramowania potrzebna jest tylko przeglądarka na komputerze serwerowym oraz - opcjonalnie - aplikacja klienta na urządzeniu do oglądania. Jellyfin nie wymaga stałego połączenia z internetem, żeby działać; internet jest potrzebny wyłącznie po to, aby pobierać metadane od zewnętrznych dostawców. (Networking | Jellyfin Documentation)

Przed instalacją dobrze jest wykonać dwie rzeczy przygotowawcze. Po pierwsze - zdecydować, w którym folderze będą leżeć multimedia, i nie mieszać ich z folderami systemowymi. Po drugie - uporządkować nazwy plików, bo to od nich zależy, czy Jellyfin poprawnie rozpozna materiał. Ta druga czynność jest opisana w następnej sekcji i wykonanie jej przed pierwszym skanowaniem oszczędza sporo późniejszych poprawek.

Uporządkowanie plików przed pierwszym skanowaniem

Jellyfin rozpoznaje treść na podstawie struktury folderów i nazw plików, a następnie dopisuje do niej opisy z zewnętrznych baz. Domyślnie dostępne są The Movie Database (TMDb), The Open Movie Database API (OMDb API) oraz lokalne pliki .nfo; dodatkowi dostawcy, jak TheTVDB, fanart.tv czy AniDB, są dostępni w katalogu wtyczek. (Metadata | Jellyfin Documentation) Im bliżej nazwa pliku jest tego, co widnieje w bazie, tym mniej ręcznego poprawiania.

Wspólna zasada dla wszystkich rodzajów treści dotyczy znaków zakazanych. Projekt wymienia jako powodujące problemy znaki <, >, :, ", /, \, |, ?, * i zaznacza, że ich użycie spowoduje kłopoty. (Movies | Jellyfin Documentation) Na Windows żadnego z tych znaków nie da się w ogóle użyć w nazwie pliku - Microsoft wymienia dokładnie ten sam zestaw jako znaki zarezerwowane w nazwach plików i katalogów. (Naming Files, Paths, and Namespaces - Win32 apps | Microsoft Learn) Problem pojawia się więc głównie przy plikach kopiowanych z innych systemów lub z NAS oraz przy tytułach przepisywanych do nazwy. Tytuł z dwukropkiem należy w nazwie folderu i pliku zapisać po prostu bez niego - dopasowanie do bazy metadanych działa mimo tego.

Filmy

Filmy należy układać w osobnych folderach, po jednym na film, przy czym folder może zawierać dodatkowe pliki towarzyszące. (Movies | Jellyfin Documentation) Nazwa folderu powinna mieć postać Nazwa filmu (rok) [identyfikator dostawcy metadanych], przy czym rok i identyfikator są opcjonalne, ale pomagają w pewniejszym rozpoznaniu materiału. (Movies | Jellyfin Documentation) Plik wideo wewnątrz folderu powinien nazywać się tak samo jak folder - jeżeli folder nosi nazwę Super Fun Movie, plik powinien nazywać się Super Fun Movie.mp4 lub mieć inne rozszerzenie. (Movies | Jellyfin Documentation)

Przykładowe warianty nazewnictwa podane w dokumentacji to Jellyfin Documentary.mkv, Jellyfin Documentary (2030).mkv, Jellyfin Documentary [imdbid-tt00000000].mkv oraz Jellyfin Documentary (2030) [imdbid-tt00000000].mkv. (Movies | Jellyfin Documentation)

Obsługiwane są najpopularniejsze formaty wideo, w tym mp4 i mkv, a dodatkowo foldery VIDEO_TS i BDMV; te ostatnie nie obsługują jednak wielu wersji, materiału podzielonego na części ani zewnętrznych ścieżek napisów i dźwięku. (Movies | Jellyfin Documentation) Pliki .iso i inne obrazy płyt zwykle działają, ale nie są wspierane - zalecane jest przepakowanie ich do kontenera mkv albo rozpakowanie do folderu VIDEO_TS lub BDMV. (Movies | Jellyfin Documentation)

Jeżeli ten sam film jest przechowywany w kilku wariantach jakościowych, można je zgrupować w jednym folderze przez etykietę dopisaną na końcu nazwy pliku po spacji, myślniku i spacji; przedrostek każdego pliku musi zgadzać się z nazwą folderu co do znaku, inaczej pliki zostaną potraktowane jako osobne filmy. (Movies | Jellyfin Documentation) Przy pierwszej instalacji nie trzeba się tym zajmować - wystarczy jeden plik na film.

Seriale

Seriale należy układać w foldery serii, a wewnątrz nich w foldery sezonów (TV Shows | Jellyfin Documentation). Przykładowa ścieżka zwykłego odcinka to Nazwa serialu (2020)/Season 01/Nazwa serialu S01E01.mkv: S01 oznacza pierwszy sezon, a E01 pierwszy odcinek (TV Shows | Jellyfin Documentation). Folder serii nazywany jest według wzoru Nazwa serii (rok) [identyfikator dostawcy metadanych], gdzie rok i identyfikator znów są opcjonalne, ale poprawiają trafność dopasowania (TV Shows | Jellyfin Documentation). Foldery sezonów muszą nazywać się Season *, gdzie * to dowolna liczba; dokumentacja wprost zabrania skrótów w rodzaju S01 lub SE01, zaleca uzupełnianie numeru zerem wiodącym (Season 5 do postaci Season 05) i odradza mieszanie folderów sezonów z luźnymi odcinkami w folderze nadrzędnym (TV Shows | Jellyfin Documentation).

Odcinki specjalne trafiają do folderu Season 00. (TV Shows | Jellyfin Documentation) Zaznaczone jest, że jeżeli dostawca metadanych nie zna danego specjalu, lepiej nazwać plik opisowo niż wymuszać schemat Nazwa serii S00Exy.mkv, bo grozi to przypisaniem błędnych metadanych. (TV Shows | Jellyfin Documentation)

Jeden plik może zawierać kilka odcinków, ale zostanie wtedy pokazany jako jedna pozycja z metadanymi kilku odcinków; dokumentacja zaleca w takim wypadku rozdzielenie pliku narzędziem w rodzaju MKVToolNix. (TV Shows | Jellyfin Documentation)

Muzyka

Albumy układa się w folderach, przy czym jeden folder zawiera jeden i tylko jeden album. (Music | Jellyfin Documentation) Sposób grupowania albumów nie ma znaczenia, a nazwy plików zwykle nie mają wpływu na rozpoznanie, ponieważ informacje pobierane są z osadzonych tagów; dopiero gdy metadanych brak, Jellyfin używa nazw plików jako tytułów utworów. (Music | Jellyfin Documentation) Albumy wielopłytowe rozpoznawane są po tagach numeru płyty i liczby płyt, a ścieżki wszystkich płyt można trzymać w jednym folderze; opcjonalny podział na podfoldery jest możliwy, ale osadzone metadane mają pierwszeństwo. (Music | Jellyfin Documentation)

Kilka pułapek formatów jest wymienionych wprost: pliki .mp4 zawierające tylko dźwięk nie zostaną rozpoznane jako muzyka i należy zmienić im rozszerzenie na .m4a, analogicznie .mkv i .webm z samym dźwiękiem należy przemianować na .mka. (Music | Jellyfin Documentation)

Napisy i dodatkowe ścieżki dźwiękowe jako osobne pliki

Napisy i dodatkowe ścieżki audio można dołączyć jako osobne pliki, dopisując znaczniki do nazwy pliku wideo. Dokumentacja pokazuje to na przykładzie folderu Film (1986), w którym obok Film.mkv leżą między innymi Film.default.srt, Film.default.en.forced.ass, Film.en.sdh.srt oraz Film.English Commentary.en.mp3. (Movies | Jellyfin Documentation)

Znaczniki oddzielane są kropkami i jeden plik może mieć ich kilka. Udokumentowane flagi to default dla ścieżki domyślnej, forced oraz foreign dla napisów wymuszonych i sdh, cc, hi dla napisów dla osób niesłyszących. (Movies | Jellyfin Documentation) Warto znać jeden konkretny konflikt: hi koliduje ze skrótem języka hindi, więc samo hi zostanie potraktowane jako ścieżka w hindi, natomiast hi w połączeniu z innym identyfikatorem języka (na przykład title.en.hi.srt) oznacza tamten język z oznaczeniem dla niesłyszących. (Movies | Jellyfin Documentation) Dowolny tekst, którego nie da się sparsować jako języka ani flagi, zostanie użyty jako tytuł ścieżki, o ile w metadanych pliku nie ma już własnego tytułu. (Movies | Jellyfin Documentation)

Dla polskich napisów oznacza to praktycznie: Nazwa filmu (2019).pl.srt obok Nazwa filmu (2019).mkv, a jeżeli mają być domyślne - Nazwa filmu (2019).default.pl.srt.

Instalacja na Windows

Na stronie pobierania dla Windows udostępniane są zarówno instalatory .exe, jak i ręczne archiwa ZIP. (Downloads - Windows | Jellyfin) Dla scenariusza domowego wystarczy instalator.

  1. Pobrać instalator najnowszej wersji ze strony pobierania. (Windows | Jellyfin Documentation)
  2. Uruchomić instalator. (Windows | Jellyfin Documentation)
  3. Nie wybierać instalacji jako usługi. Dokumentacja opisuje ten krok jako opcjonalny i wprost oznacza instalację jako usługi jako niezalecaną; przy jej wyborze trzeba dodatkowo wskazać typ konta usługi. (Windows | Jellyfin Documentation)
  4. Po poprawnym zakończeniu instalacji Jellyfin działa. (Windows | Jellyfin Documentation)
  5. Otworzyć w przeglądarce adres http://adres_IP_komputera:8096, aby dokończyć konfigurację. (Windows | Jellyfin Documentation)

Przy pierwszym uruchomieniu serwera Windows może wyświetlić okno zapory z pytaniem, czy zezwolić programowi jellyfin.exe na komunikację w sieci. Instalator Jellyfina dla Windows nie dodaje własnych reguł zapory - w jego skrypcie nie ma takich poleceń - więc to okno jest normalnym zachowaniem systemu. (jellyfin.nsi (skrypt instalatora NSIS, gałąź master) | GitHub jellyfin/jellyfin-server-windows) Microsoft opisuje, że gdy nie ma reguły zezwalającej, przy pierwszym uruchomieniu aplikacji pojawia się okno z pytaniem o zezwolenie albo zablokowanie; jeżeli użytkownik z uprawnieniami administratora odpowie „No” albo anuluje okno, tworzone są reguły blokujące, zwykle po jednej dla TCP i UDP. (Windows Firewall Rules | Microsoft Learn) Samo zatwierdzenie okna nie gwarantuje zawężenia do dwóch potrzebnych portów i własnej podsieci. Przed łączeniem telefonu lub telewizora trzeba przejść procedurę kontroli wszystkich reguł Jellyfina opisaną niżej. Bez uprawnień administratora Windows należy przerwać konfigurację sieciową i poprosić administratora komputera o tę kontrolę - według Microsoftu przy takim koncie reguły blokujące mogą powstać niezależnie od odpowiedzi w oknie. (Windows Firewall Rules | Microsoft Learn) Nie należy wyłączać zapory ani zezwalać na profil publiczny.

Jeżeli konfiguracja wykonywana jest na tym samym komputerze, na którym działa serwer, zadziała też http://localhost:8096. Adres z numerem IP przyda się w kolejnym kroku, przy dostępie z innych urządzeń, więc warto go od razu ustalić.

Do sprawdzenia adresu IP służy wbudowane w Windows polecenie ipconfig, które wyświetla bieżące ustawienia TCP/IP; bez parametrów pokazuje adresy IPv4 i IPv6, maskę podsieci i bramę domyślną dla wszystkich kart sieciowych, a przełącznik /all wyświetla pełną konfigurację. (ipconfig | Microsoft Learn) Interesuje adres karty, przez którą komputer jest podłączony do domowego routera - zwykle zaczyna się od 192.168. lub 10..

Warto od razu zadbać o to, żeby ten adres się nie zmieniał. Najprostszym sposobem jest rezerwacja adresu dla tego komputera na routerze; instrukcja zależy od modelu routera i wykracza poza zakres tego materiału. Jellyfin dopuszcza też użycie lokalnego wpisu DNS, na przykład http://jellyfin.internal:8096, z zastrzeżeniem, że urządzenia w rodzaju Google Chromecast lub Google TV Streamer mogą ignorować serwer DNS podany przez sieć lokalną i takich wpisów nie rozwiązać. (Networking | Jellyfin Documentation)

Kreator konfiguracji przy pierwszym uruchomieniu

Po otwarciu adresu serwera uruchamia się kreator. Dokumentacja opisuje jego kolejne ekrany.

  1. Język. Wybór języka dotyczy dalszej części kreatora i tylko używanego klienta; ustawienia językowe obowiązujące na całym serwerze konfigurowane są później. (Setup Wizard Walkthrough | Jellyfin Documentation)
  2. Konto administratora. Zakładane jest konto do zarządzania serwerem, z zaleceniem mocnego hasła; kolejne konta użytkowników i administratorów można dodać po zakończeniu kreatora. (Setup Wizard Walkthrough | Jellyfin Documentation) To konto nie powinno być tym, którym domownicy będą codziennie oglądać - osobne konto do oglądania zakładane jest w dalszej części poradnika.
  3. Biblioteki multimediów. Bibliotekę dodaje się przyciskiem +, można też kliknąć „Next” bez dodawania czegokolwiek i wrócić do tego później. (Setup Wizard Walkthrough | Jellyfin Documentation) W oknie dodawania wybierany jest typ z listy Content Type, wpisywana nazwa w polu Display Name, a następnie przyciskiem + dodawane są foldery; jeżeli foldery z multimediami nie są widoczne na liście, dokumentacja wskazuje jako przyczynę problemy z uprawnieniami. (Setup Wizard Walkthrough | Jellyfin Documentation)
  4. Język metadanych. Wybierany jest domyślny dla serwera język i region pobierania metadanych. Jeżeli opisy w preferowanym języku nie są dostępne, mogą zostać pobrane w innym; ustawienie można później doprecyzować dla poszczególnych bibliotek. (Setup Wizard Walkthrough | Jellyfin Documentation)
  5. Sieć. Dokumentacja zaleca większości użytkowników włączenie opcji „Allow remote access to this server”. (Setup Wizard Walkthrough | Jellyfin Documentation) Jednocześnie zaleca wyłączenie automatycznego mapowania portów, ponieważ opiera się ono na UPnP - protokole powszechnie kojarzonym z problemami bezpieczeństwa - chyba że jest to wyraźnie potrzebne. (Setup Wizard Walkthrough | Jellyfin Documentation) Dla domowej instalacji ograniczonej do LAN automatyczne mapowanie portów nie jest potrzebne i należy je pozostawić wyłączone. Samo włączenie zdalnego dostępu w tym kreatorze nie otwiera jeszcze serwera na internet: żeby ruch z zewnątrz w ogóle dotarł, trzeba osobno przepuścić go przez zaporę i router, a Jellyfin trzeba wystawić do internetu ręcznie. (Networking | Jellyfin Documentation) W scenariuszu z tego poradnika można więc zostawić tę opcję zgodnie z zaleceniem kreatora albo później wyłączyć ją globalnie - to samo ustawienie jest dostępne w panelu administracyjnym w Networking -> Remote Access Settings, a dostęp per konto ogranicza się osobno, jak opisano w sekcji o koncie do oglądania. (Networking | Jellyfin Documentation)

Po zakończeniu kreatora dokumentacja wskazuje dwa kolejne kroki do rozważenia: konfigurację zdalnego dostępu (pomijaną w tym poradniku) oraz konfigurację akceleracji sprzętowej dla wydajności i mniejszego poboru energii. (Setup Wizard Walkthrough | Jellyfin Documentation)

Oczekiwany wynik: w przeglądarce na komputerze serwerowym po zalogowaniu widoczny jest ekran główny Jellyfina, a po chwili - w miarę postępu skanowania - pojawiają się na nim pozycje z dodanych folderów.

Dodawanie i poprawianie bibliotek po instalacji

Biblioteki to wirtualne kolekcje multimediów, które mogą zawierać pliki z kilku różnych lokalizacji na serwerze. (Libraries | Jellyfin Documentation) Można je dodawać i usuwać w dowolnym momencie z ustawień. (Libraries | Jellyfin Documentation) Procedura opisana w dokumentacji wygląda następująco:

  1. Zalogować się do interfejsu webowego Jellyfina w przeglądarce. (Libraries | Jellyfin Documentation)
  2. W menu wybrać Admin > Dashboard. (Libraries | Jellyfin Documentation)
  3. W menu po lewej stronie przejść do Server > Libraries. (Libraries | Jellyfin Documentation)
  4. Kliknąć „Add Media Library”. (Libraries | Jellyfin Documentation)
  5. Serwer zacznie dodawać multimedia, a pasek postępu na górze strony pokaże stan tej operacji. (Libraries | Jellyfin Documentation)

Trzy najczęstsze typy treści to filmy, seriale i muzyka i to one mają najlepsze wsparcie w aplikacjach klienckich; można też dodawać inne typy, na przykład książki lub zdjęcia. (Libraries | Jellyfin Documentation) Istnieje typ mieszany, wyświetlający wszystkie pliki w jednym ogólnym widoku, ale dokumentacja obecnie odradza jego stosowanie z powodu niepewnych wyników dopasowania metadanych i zachęca do korzystania z typów dedykowanych. (Libraries | Jellyfin Documentation) Do jednej biblioteki można dodać wiele ścieżek; okno wyboru pozwala wskazać foldery wizualnie, a gdy nie da się odnaleźć właściwej lokalizacji, ścieżkę można wpisać ręcznie. (Libraries | Jellyfin Documentation)

Usunięcie biblioteki a pliki na dysku

Biblioteki to wirtualne kolekcje odwołujące się do lokalizacji na serwerze i można je usuwać w dowolnym momencie z ustawień. (Libraries | Jellyfin Documentation) Usunięcie biblioteki jest operacją na katalogu Jellyfina, a nie na plikach - oryginały zostają tam, gdzie leżały. Znikają natomiast dane, które Jellyfin sam wytworzył: pozycje w katalogu, pobrane metadane, historia odtwarzania. Jeżeli ta historia ma znaczenie, przed usunięciem biblioteki warto wykonać kopię danych serwera metodą opisaną w dalszej części poradnika.

Jest natomiast jedna funkcja, która kasuje pliki z dysku, i trzeba ją znać, zanim zostanie przypadkiem włączona. W ustawieniach użytkownika istnieje uprawnienie do usuwania multimediów z biblioteki - dokumentacja opisuje je jednoznacznie: usuwa ono materiał również z systemu plików. (Users | Jellyfin Documentation) Można je nadać dla wszystkich bibliotek albo dla poszczególnych bibliotek. (Users | Jellyfin Documentation) Dokumentacja dodaje ostrzeżenie, że przy nadanych uprawnieniach do usuwania niektóre wtyczki potrafią automatycznie usuwać materiał po obejrzeniu. (Managing Users | Jellyfin Documentation)

W domowej instalacji z tego poradnika tego uprawnienia nie należy nadawać nikomu - ani kontu do oglądania, ani, bez wyraźnej potrzeby, kontu administratora. Przycisk usuwania w interfejsie nie usuwa „pozycji z katalogu”, tylko plik. Jeżeli mimo wszystko ma być używany, jedynym rozsądnym zabezpieczeniem jest niezależna kopia zapasowa samych plików multimedialnych, wykonana poza Jellyfinem; wbudowany mechanizm kopii zapasowych serwera obejmuje dane Jellyfina, a nie kolekcję filmów. (Backup and Restore | Jellyfin Documentation)

Jeżeli po dodaniu plików nowe pozycje nie pojawiają się w bibliotece, warto pamiętać, że część operacji Jellyfin wykonuje w ramach zadań uruchamianych okresowo. Zadania te można również uruchomić ręcznie przyciskiem uruchamiania po prawej stronie. (Scheduled Tasks | Jellyfin Documentation) Wśród domyślnych zadań w kategorii bibliotek dokumentacja wymienia między innymi Scan Library oraz Download Missing Subtitles, a w kategorii konserwacji Clear Transcodes Folder, Clear Cache Folder i Clear Log Folder. (Scheduled Tasks | Jellyfin Documentation)

Dostęp z innych urządzeń w sieci domowej

Jellyfin udostępnia się lokalnie pod wskazanym portem na adresie IP komputera, na przykład http://10.0.0.2:8096. (Networking | Jellyfin Documentation) Domyślnie używane są trzy porty: 8096/TCP dla ruchu HTTP (port konfigurowalny, tam znajduje się interfejs webowy), 8920/TCP dla HTTPS (konfigurowalny, domyślnie nieużywany, bo HTTPS jest wyłączony) oraz 7359/UDP dla wykrywania klientów. Ten ostatni jest niekonfigurowalny i służy do tego, żeby aplikacje klienckie same znajdowały serwer w sieci lokalnej; komunikat rozgłoszeniowy wysłany na ten port zwraca informacje o serwerze, w tym nazwę, adres IP i identyfikator. Usługi automatycznego wykrywania działają wyłącznie w obrębie własnej podsieci. (Networking | Jellyfin Documentation)

Przepuszczenie ruchu przez zaporę Windows

Jeżeli inne urządzenia nie widzą serwera, najczęstszą przyczyną jest zapora na komputerze serwerowym albo profil sieci, w którym ta zapora pracuje. Jellyfin opisuje warstwy, na których może stać zapora, i wskazuje, że aby ruch z sieci wszedł na urządzenie, trzeba otworzyć port na warstwie hosta, czyli maszyny fizycznej i systemu operacyjnego. (Networking | Jellyfin Documentation) W scenariuszu z tego poradnika otwierane są wyłącznie dwa porty potrzebne Jellyfinowi, tylko dla własnej podsieci i tylko w profilu sieci prywatnej. Nic nie jest przekazywane na routerze.

Zanim powstaną jakiekolwiek reguły, trzeba sprawdzić profil sieci, bo obie reguły z tego poradnika obowiązują tylko w profilu prywatnym. Microsoft podaje wprost, że przy pierwszym połączeniu z siecią Windows 11 ustawia ją domyślnie jako publiczną. (Essential Network Settings and Tasks in Windows | Microsoft Support) Profil zmienia się w ustawieniach: „Network & internet”, następnie Wi-Fi albo Ethernet, właściwości bieżącej sieci i pod „Network profile type” wybór „Private network” zamiast „Public network (Recommended)”. (Essential Network Settings and Tasks in Windows | Microsoft Support) Microsoft opisuje profil prywatny tak, że komputer jest wtedy wykrywalny dla innych urządzeń w sieci i można go używać do udostępniania plików i drukarek, a osoby i urządzenia w tej sieci powinny być znane i zaufane. (Essential Network Settings and Tasks in Windows | Microsoft Support) Dotyczy to więc wyłącznie własnej sieci domowej. Na komputerze, który bywa podłączany do obcych sieci - laptop w kawiarni, hotelu czy na uczelni - te sieci muszą pozostać publiczne, a reguły Jellyfina będą w nich nieaktywne, co jest zachowaniem pożądanym.

Microsoft podaje aktualną składnię otwierania portu w kontekście netsh advfirewall firewall, na przykładzie portu 80: netsh advfirewall firewall add rule name= "Open Port 80" dir=in action=allow protocol=TCP localport=80. (Use the netsh advfirewall firewall context | Microsoft Learn) Ta sama dokumentacja pokazuje, że regułę można zawęzić do wskazanych adresów i podsieci parametrem remoteip przyjmującym wartość LocalSubnet oraz przypisać ją do konkretnego profilu sieci parametrem profile (na przykład profile=private). (Use the netsh advfirewall firewall context | Microsoft Learn)

Przed dodaniem reguł otworzyć wf.msc jako administrator i w Inbound Rules sprawdzić istniejące wpisy dotyczące pełnej ścieżki zainstalowanego jellyfin.exe - także utworzone przez okno systemowe. We właściwościach wpisu sprawdzić ścieżkę programu, akcję, protokół, port, adresy zdalne i profil. (Configure Firewall Rules With Group Policy | Microsoft Learn) (Windows Firewall Rules | Microsoft Learn) Zanotować ich stan. Wyłączyć wyłącznie potwierdzone wpisy tej instalacji Jellyfina, które mają zostać zastąpione: zarówno szersze zezwolenia, jak i blokady pozostałe po odmowie. Nie zmieniać reguł innych aplikacji ani reguł narzuconych przez administratora organizacji. Dodanie wąskiej reguły nie zawęża istniejącego szerszego zezwolenia, a jawna blokada może nadal uniemożliwić połączenie. (Windows Firewall Rules | Microsoft Learn)

Dopiero po tej kontroli dodać poniższe dwie reguły, bez duplikowania już istniejących identycznych wpisów - w wierszu poleceń uruchomionym jako administrator:

netsh advfirewall firewall add rule name="Jellyfin LAN HTTP" dir=in action=allow protocol=TCP localport=8096 remoteip=LocalSubnet profile=private

netsh advfirewall firewall add rule name="Jellyfin LAN Discovery" dir=in action=allow protocol=UDP localport=7359 remoteip=LocalSubnet profile=private

Pierwsza reguła obsługuje interfejs webowy i strumieniowanie, druga - wykrywanie serwera przez aplikacje klienckie w sieci lokalnej. (Networking | Jellyfin Documentation) Zawężenie remoteip=LocalSubnet sprawia, że reguła dotyczy tylko urządzeń z tej samej podsieci, a profile=private - że obowiązuje tylko w sieci oznaczonej w Windows jako prywatna, a nie w sieciach publicznych. Nie należy pomijać żadnego z tych dwóch zawężeń ani stosować profile=all czy reguł bez remoteip, bo dopuszczają one ruch szerszy niż potrzebny.

Reguły można później usunąć - dokumentacja Microsoftu opisuje jako odpowiednik dawnych poleceń usuwania składnię netsh advfirewall firewall delete rule z nazwą reguły oraz protokołem i portem lokalnym. (Use the netsh advfirewall firewall context | Microsoft Learn) Odpowiadające polecenia dla reguł z tego poradnika znajdują się w sekcji o odinstalowaniu.

Alternatywą dla wiersza poleceń jest konsola „Windows Firewall with Advanced Security”. Na pojedynczym komputerze otwiera się ją wpisując wf.msc w menu Start i zatwierdzając klawiszem Enter; potrzebne są uprawnienia administratora. (Configure Firewall Rules With Group Policy | Microsoft Learn) Reguły przychodzące dodaje się w gałęzi „Inbound Rules”, poleceniem „New rule” z menu „Action”. (Configure Firewall Rules With Group Policy | Microsoft Learn) Na stronie „Rule Type” kreatora należy wybrać „Custom”, a nie „Port” - Microsoft zaznacza, że wybór „Program” lub „Port” ogranicza liczbę stron kreatora, a dopiero „Custom” pokazuje wszystkie, w tym stronę zakresu potrzebną do zawężenia reguły do własnej podsieci. (Configure Firewall Rules With Group Policy | Microsoft Learn) Dalej: na stronie „Program” pozycja „All programs”; na stronie „Protocol and Ports” protokół TCP i port lokalny 8096 (dla drugiej reguły UDP i 7359), bo przy regule przychodzącej konfiguruje się zwykle tylko port lokalny; na stronie „Scope” ograniczenie ruchu do adresów IP własnej podsieci; na stronie „Action” pozycja „Allow the connection”; na stronie „Profile” wyłącznie profil prywatny; na stronie „Name” nazwa reguły i „Finish”. (Configure Firewall Rules With Group Policy | Microsoft Learn) Na stronie zakresu chodzi o to samo zawężenie, które w wierszu poleceń daje remoteip=LocalSubnet - Microsoft w zaleceniach projektowania reguł pisze, że dla aplikacji przeznaczonych do użycia tylko przez urządzenia w sieci domowej lub małej firmy najlepiej ograniczyć adresy zdalne do samej podsieci lokalnej. (Windows Firewall Rules | Microsoft Learn)

Nie należy wyłączać zapory. Wyłączenie zapory otwiera wszystkie porty we wszystkich profilach, a nie tylko te dwa, które są tu potrzebne. Nie należy też dodawać reguł „dla wszystkich programów na wszystkich portach” ani reguł w profilu publicznym - domyślne blokowanie ruchu przychodzącego jest opisane przez Microsoft jako jedno z kluczowych ustawień chroniących urządzenie i powinno pozostać nienaruszone. (Windows Firewall Rules | Microsoft Learn)

Konto do oglądania bez uprawnień administratora

Codzienne oglądanie nie powinno odbywać się na koncie administratora. Konta użytkowników w Jellyfinie są w całości lokalne - dokumentacja podkreśla, że podczas logowania żadne informacje ani metadane nie są wysyłane do zewnętrznych serwerów. (Users | Jellyfin Documentation)

Użytkownikami zarządza się w sekcji Users w panelu Dashboard, gdzie widoczni są bieżący użytkownicy i gdzie dodaje się nowych. (Managing Users | Jellyfin Documentation) Nowego użytkownika dodaje się symbolem + u góry strony, co otwiera stronę z polem na nazwę wyświetlaną na ekranie logowania lub wpisywaną przy logowaniu. (Managing Users | Jellyfin Documentation)

Kluczowa jest jedna rzecz, której nie wolno zrobić: nie należy zaznaczać pola nadającego uprawnienia administracyjne. Dokumentacja opisuje je jako pole „allow this user to manage the server” u góry opcji użytkownika i ostrzega, że daje ono pełny dostęp do wszystkich stron i funkcji serwisu. (Users | Jellyfin Documentation)

Po utworzeniu konta warto przejrzeć jego opcje. Zarządzanie kontem odbywa się przez kliknięcie w portret użytkownika (przejście na zakładkę Profile) albo przez symbol ... w portrecie, który otwiera podmenu z pozycjami Open, Library access, Parental control i usunięciem; poza usunięciem prowadzą one do różnych zakładek tej samej strony, na której jest jeszcze czwarta zakładka Password, a każdą zmianę trzeba zapisać przyciskiem Save na dole strony. (Managing Users | Jellyfin Documentation)

Przed pierwszym logowaniem klienta otworzyć zakładkę Password nowego użytkownika, ustawić mu osobne hasło i zapisać zmianę. (Managing Users | Jellyfin Documentation) Następnie zalogować się tym kontem w przeglądarce i sprawdzić dostęp do przeznaczonych dla niego bibliotek. To z tej sesji można później autoryzować Quick Connect.

Warte uwagi ustawienia:

  • Ograniczenie do wybranych bibliotek. Domyślnie włączona jest opcja Enable access to all libraries; jej wyłączenie pozwala nadawać prawa do poszczególnych bibliotek. Dokumentacja zaznacza, że użytkownik bez dostępu do wszystkich bibliotek nie otrzyma automatycznie praw do nowo dodanej biblioteki. (Managing Users | Jellyfin Documentation)
  • Zablokowanie dostępu spoza sieci lokalnej. Odznaczenie opcji „Allow remote connections to this Jellyfin Server.” blokuje próby logowania tego użytkownika spoza sieci zdefiniowanych jako lokalne; domyślnie jest to podsieć przypisana do sieci, ale można dodać kolejne. (Managing Users | Jellyfin Documentation) Zakresy uznawane za lokalne konfiguruje się w Networking -> Local Networks jako listę wpisów w notacji CIDR rozdzielonych przecinkami, a globalne ustawienia dostępu zewnętrznego znajdują się w Networking -> Remote Access Settings. (Networking | Jellyfin Documentation)
  • Kontrola rodzicielska. Zakładka kontroli rodzicielskiej pozwala ustawić Maximum allowed parental rating, czyli najwyższą kategorię wiekową, która ma być w ogóle widoczna dla tego użytkownika, blokować pozycje bez rozpoznanej kategorii, blokować lub dopuszczać pozycje z określonymi tagami oraz ustawić Access Schedule, czyli przedziały czasu, w których użytkownik może się logować - poza nimi odtwarzanie jest zatrzymywane. (Managing Users | Jellyfin Documentation)
  • Zezwolenie na transkodowanie. Uprawnienia do transkodowania dźwięku i wideo można nadawać osobno, aby wybrane osoby nie zużywały nadmiernie zasobów; istnieje też osobna opcja odtwarzania wideo bez ponownego kodowania, która jest znacznie mniej obciążająca procesor i często rozwiązuje problemy z odtwarzaniem na urządzeniach nieobsługujących nowszych formatów. (Users | Jellyfin Documentation)
  • Usuwanie plików. Opcja pozwalająca użytkownikowi usuwać multimedia z biblioteki usuwa je również z systemu plików. (Users | Jellyfin Documentation) Dla konta do oglądania nie należy jej włączać w żadnym wariancie - ani dla wszystkich bibliotek, ani dla wybranych. Szerzej opisano to w sekcji o usuwaniu biblioteki.
  • Blokada po nieudanych logowaniach. Ustawienie Failed login attempts before user is locked out określa liczbę błędnych prób przed zablokowaniem konta; wartość 0 oznacza domyślne 3 dla użytkownika bez uprawnień administratora i 5 dla administratora, a -1 wyłącza blokadę. (Managing Users | Jellyfin Documentation) Zablokowany użytkownik widzi przy logowaniu komunikat o niemożności połączenia z serwerem, a odblokowanie jest ręczną czynnością administratora: należy przejść do profilu zablokowanego użytkownika i odznaczyć opcję Disable this user w sekcji opcji dodatkowych, a następnie zapisać zmiany. (Managing Users | Jellyfin Documentation)
  • Ukrycie konta na ekranie logowania. Opcja Hide this user from login screens przydaje się do kont prywatnych lub ukrytego konta administratora - taki użytkownik musi logować się ręcznie, wpisując nazwę i hasło; dokumentacja odnotowuje, że wszyscy nowo utworzeni użytkownicy są domyślnie ukryci. (Managing Users | Jellyfin Documentation)

Warto też ustawić przyjazną nazwę serwera, bo jest ona pokazywana użytkownikom przy wyborze serwera, a klienty mogą używać jej także w innych miejscach; domyślnie jest to nazwa komputera. (Settings | Jellyfin Documentation) Przy okazji warto wiedzieć o zachowaniu obrazu ekranu powitalnego: domyślnie jest generowany z obrazów treści znajdujących się na serwerze i jest widoczny bez logowania, więc może zdradzać, jakie materiały są na serwerze. (Settings | Jellyfin Documentation) Do generowania używane są tylko treści o kategorii odpowiadającej PG-13 lub niższej, ale zależy to od poprawności danych o kategorii. (Settings | Jellyfin Documentation)

Logowanie na urządzeniu klienckim

Na urządzeniu do oglądania wystarczy zainstalować aplikację i wskazać adres serwera w postaci http://adres_IP_serwera:8096. Wśród oficjalnych klientów dokumentacja wymienia między innymi Jellyfin Media Player jako oficjalnego klienta desktopowego, Jellyfin for Android, Jellyfin for iOS dla iOS i iPadOS, Jellyfin for Android TV dla urządzeń Android TV i Fire TV, Jellyfin for Roku, Jellyfin for WebOS, Jellyfin for Tizen dla telewizorów Samsung oraz Jellyfin for Xbox. (Clients | Jellyfin) W przypadku aplikacji na Roku dokumentacja odnotowuje techniczne ograniczenie sklepu Roku, przez które aplikacja może informować o wymaganej subskrypcji telewizji kablowej lub satelitarnej - żadna subskrypcja nie jest wymagana ani do serwera, ani do żadnego oficjalnego klienta. (Clients | Jellyfin)

Wpisywanie loginu i hasła pilotem na telewizorze można pominąć dzięki funkcji Quick Connect. Pozwala ona zalogować się w kliencie bez podawania nazwy użytkownika i hasła - zamiast tego generowany jest tymczasowy kod, którym logowanie autoryzuje się z urządzenia już zalogowanego. (Quick Connect | Jellyfin Documentation) Przebieg jest dwuurządzeniowy: na nowym urządzeniu wybierana jest opcja Quick Connect na ekranie logowania (w części klientów trzeba najpierw wybrać logowanie ręczne, w innych kod pokazuje się od razu), a wyświetlony sześcioznakowy kod należy pozostawić na ekranie. (Quick Connect | Jellyfin Documentation) Urządzenie autoryzujące musi być zalogowane na utworzone wcześniej konto do oglądania, nie na administratora. Z tej sesji otwierana jest ścieżka Settings > Quick Connect, wpisywany jest ten kod i zatwierdzany; po powodzeniu pierwsze urządzenie loguje się automatycznie, a przy kodzie nieprawidłowym lub wygasłym pojawia się komunikat o błędzie i próbę trzeba powtórzyć. (Quick Connect | Jellyfin Documentation)

Funkcja jest domyślnie włączona, a wyłączyć ją można w panelu administracyjnym: Settings > Dashboard, zakładka General, odznaczenie pola „Enable Quick Connect on this server”. (Quick Connect | Jellyfin Documentation) Podana jest też tabela obsługi - Quick Connect służy zarówno do logowania, jak i do autoryzowania innych urządzeń między innymi w Jellyfin Web, Jellyfin Android, Jellyfin Media Player i Jellyfin for Xbox, natomiast w Jellyfin Android TV i Jellyfin Roku pozwala tylko zalogować się, a autoryzacja musi nastąpić z innego klienta. (Quick Connect | Jellyfin Documentation)

Po autoryzacji sprawdzić nazwę zalogowanego użytkownika na telefonie lub telewizorze. Jeśli jest to administrator, wylogować klienta i zalogować go ponownie na konto do oglądania; samo późniejsze utworzenie zwykłego konta nie zmieni już istniejącej sesji.

Oczekiwany wynik: na telefonie lub telewizorze w tej samej sieci aplikacja Jellyfin łączy się z serwerem, wyświetla biblioteki i odtwarza wybrany plik od początku do końca bez przerywania.

Napisy, transkodowanie i to, dlaczego serwer nagle się grzeje

Obciążenie serwera bierze się z jednej rzeczy: z tego, w jakim trybie odtwarza konkretny plik. Trybów jest cztery, od najlżejszego do najcięższego: Direct Play dostarcza plik bez konwersji, bez modyfikacji i praktycznie bez dodatkowego obciążenia serwera; Remux zmienia kontener, ale nie rusza ścieżek audio i wideo; Direct Stream przekodowuje dźwięk, zostawiając oryginalne wideo; Transcode przekodowuje strumień wideo. (Transcoding | Jellyfin Documentation) Aktualnie używany tryb jest wypisywany w panelu podczas odtwarzania pliku. (Transcoding | Jellyfin Documentation)

Transkodowanie materiału lokalnego jest zawsze żądane przez klienta - to klient wysyła serwerowi profil ze swoimi możliwościami (obsługiwane kodeki, rozdzielczości, bitrate, dodatkowe ograniczenia), a serwer wybiera ustawienia o najlepszej jakości mieszczące się w tych możliwościach. (Transcoding | Jellyfin Documentation) Rozdzielczości wyjściowej nie da się ustawić ręcznie - wynika ona z parametrów źródła, docelowego bitrate, kodeków i ograniczeń klienta. (Transcoding | Jellyfin Documentation)

Napisy są tu najczęstszym źródłem niespodzianek. Strona zgodności kodeków tłumaczy, że celem jest odtwarzanie wszystkiego w trybie Direct Play, czyli przy zgodnym kontenerze, wideo, audio i napisach; napisy bywają kłopotliwe, bo mogą wymusić zarówno Direct Stream (przepakowanie napisów), jak i transkodowanie wideo (wypalenie napisów w obraz). (Codec Support | Jellyfin Documentation) Wypalanie napisów jest przy tym najbardziej obciążającą metodą transkodowania, ponieważ jednocześnie zachodzą dwie konwersje: nakładanie warstwy napisów na warstwę wideo. (Codec Support | Jellyfin Documentation) Praktyczna różnica sprowadza się do jednego rozróżnienia: SubRip (SRT) i ASS/SSA to napisy tekstowe, a VobSub i PGSSUB to obrazy, nie tekst. (Codec Support | Jellyfin Documentation)

Praktyczny wniosek dla domowej instalacji: jeżeli serwer zaczyna głośno pracować dopiero po włączeniu napisów, przyczyną jest najprawdopodobniej format napisów wymuszający wypalanie, a rozwiązaniem - dołożenie obok pliku wideo napisów tekstowych w formacie SRT nazwanych zgodnie z zasadami z wcześniejszej sekcji.

Drugim źródłem obciążenia jest HDR. Jellyfin obecnie nie obsługuje mapowania tonalnego HDR na HDR ani przekazywania metadanych HDR, więc materiał HDR przy transkodowaniu musi być mapowany do SDR. (Transcoding | Jellyfin Documentation) Można to zrobić programowo, ale jest to bardzo wolne i dokumentacja ostrzega, że możliwe są sytuacje, w których żaden współczesny konsumencki procesor nie wykona tego w czasie rzeczywistym; dlatego zawsze zalecany jest układ graficzny, przy czym nawet podstawowy iGPU Intela udźwignie w tym zastosowaniu tyle, co Ryzen 5800X. (Transcoding | Jellyfin Documentation)

Akceleracja sprzętowa

Jellyfin potrafi przenieść transkodowanie w locie na kartę graficzną - zintegrowaną lub dedykowaną - odciążając procesor. (Hardware Acceleration | Jellyfin Documentation) Jako transkoder używa zmodyfikowanej wersji FFmpeg o nazwie jellyfin-ffmpeg, co daje dostęp do sprzętowych kodeków, procesorów wideo i interfejsów obliczeniowych udostępnianych przez producenta karty i system. (Hardware Acceleration | Jellyfin Documentation) Projekt zaznacza, że jellyfin-ffmpeg jest dostarczany między innymi z instalatorami dla Windows, a użycie binariów FFmpeg pobranych z innego źródła skutkuje jedynie częściową akceleracją. (Hardware Acceleration | Jellyfin Documentation)

Dostępna metoda zależy od karty. Na Windows dla układów Intela jedyną dostępną metodą jest QSV (Quick Sync Video), (HWA Tutorial On Intel GPU | Jellyfin Documentation) a dla kart NVIDIA jedyną dostępną metodą na Windows i Linuksie jest NVENC. (HWA Tutorial On NVIDIA GPU | Jellyfin Documentation) Intel ostrzega przy okazji, że procesory z oznaczeniem kończącym się na „F” nie mają zintegrowanego układu graficznego. (HWA Tutorial On Intel GPU | Jellyfin Documentation)

Ustawienia włącza się w panelu administracyjnym Jellyfina. Intel sprowadza konfigurację na Windows do czystej instalacji najnowszego sterownika z centrum pobierania Intela oraz włączenia QSV w Jellyfinie z odznaczeniem nieobsługiwanych kodeków. (HWA Tutorial On Intel GPU | Jellyfin Documentation) Nazwy pól i ich układ w panelu bywają zmieniane między wydaniami, więc jeżeli konkretna pozycja nie znajduje się pod opisaną nazwą, należy szukać sekcji odpowiadającej za transkodowanie w ustawieniach administratora.

Weryfikacja też jest opisana wprost i nie wymaga zgadywania. Należy odtworzyć film w kliencie webowym Jellyfina i wymusić transkodowanie wideo, ustawiając niższą rozdzielczość lub bitrate, a następnie otworzyć Menedżera zadań Windows i przejść na stronę GPU, gdzie sprawdza się obciążenie poszczególnych silników. (HWA Tutorial On Intel GPU | Jellyfin Documentation) Przy działającej akceleracji obciążenie widać na silnikach wideo - w Menedżerze zadań Video Decode odpowiada dekoderowi lub koderowi QSV, a Video Processing procesorowi QSV VPP. (HWA Tutorial On Intel GPU | Jellyfin Documentation) Powtarzające się nazwy silników wskazują, że karta może mieć kilka silników wideo MFX. (HWA Tutorial On Intel GPU | Jellyfin Documentation)

Jeżeli serwerem steruje się przez pulpit zdalny, warto znać jeszcze jedno zastrzeżenie: dokumentacja Intela zaleca, aby nie pozwolić sesji Pulpitu zdalnego Windows przejąć karty graficznej, i opisuje wyłączenie tego przez Edytor lokalnych zasad grupy (gpedit.msc), w gałęzi [Konfiguracja komputera > Szablony administracyjne > Składniki systemu Windows], dalej [Usługi pulpitu zdalnego > Host sesji pulpitu zdalnego > Środowisko sesji zdalnej], gdzie ustawienie [Use hardware graphics adapters for all Remote Desktop Services sessions] należy ustawić na [Disabled] i ponownie uruchomić system. (HWA Tutorial On Intel GPU | Jellyfin Documentation)

Błędy i ich rozwiązania

Serwer nie otwiera się pod adresem IP z innego urządzenia. Najpierw należy sprawdzić, czy interfejs otwiera się lokalnie pod http://localhost:8096. Jeżeli tak, problemem jest zapora, profil sieci lub adres. Zaraz po zaporze warto sprawdzić profil sieci: reguły z tego poradnika działają tylko w profilu prywatnym, a Windows 11 przy pierwszym połączeniu z siecią ustawia ją jako publiczną. (Essential Network Settings and Tasks in Windows | Microsoft Support) Jeżeli pod „Network profile type” dla bieżącej sieci widnieje „Public network (Recommended)”, reguły są nieaktywne, choć istnieją - przełączenie na „Private network” dotyczy tylko własnej, zaufanej sieci domowej. (Essential Network Settings and Tasks in Windows | Microsoft Support) Pomaga też prosty test diagnostyczny: jeżeli w logach nie ma w ogóle żadnych wpisów dotyczących ruchu webowego, nawet przy połączeniu w obrębie LAN, oznacza to, że żądanie nigdy nie dotarło do serwera, czyli mamy do czynienia z błędnym adresem albo problemem gdzie indziej w sieci. (Troubleshooting | Jellyfin Documentation)

Reguły zapory zostały dodane, profil jest prywatny, a serwer nadal jest niewidoczny. Prawdopodobną przyczyną jest anulowane okno zapory przy pierwszym uruchomieniu Jellyfina. Microsoft opisuje, że anulowanie tego okna tworzy reguły blokujące, zwykle po jednej dla TCP i UDP, i że jawne reguły blokujące mają pierwszeństwo przed każdą sprzeczną regułą zezwalającą - dodane później reguły netsh niczego wtedy nie zmienią. (Windows Firewall Rules | Microsoft Learn) Rozwiązaniem nie jest usuwanie wszystkich blokad ani wyłączanie zapory, tylko odszukanie konkretnych reguł tego jednego programu: w konsoli wf.msc, w gałęzi „Inbound Rules”, należy znaleźć reguły, których program to jellyfin.exe i których akcja to blokowanie, i usunąć tylko te - Microsoft zaznacza, że po ich usunięciu okno z pytaniem pojawi się ponownie, a bez tego ruch pozostaje zablokowany. (Configure Firewall Rules With Group Policy | Microsoft Learn) (Windows Firewall Rules | Microsoft Learn) Reguł, których pochodzenia nie da się jednoznacznie ustalić, nie należy ruszać.

Interfejs działa po HTTP, ale nie po HTTPS. Zgodnie z dokumentacją oznacza to najpewniej błąd certyfikatu. Jellyfin obsługuje ruch HTTPS przez plik PFX; jeżeli plik utworzono z hasłem, hasło trzeba wprowadzić na stronie Networking w ustawieniach. (Troubleshooting | Jellyfin Documentation) W domowej instalacji z tego poradnika HTTPS pozostaje wyłączony i nie jest potrzebny - domyślnie jest wyłączony, ponieważ wymaga certyfikatu SSL. (Networking | Jellyfin Documentation) Dokumentacja przestrzega przy tym przed certyfikatami samopodpisanymi jako źródłem problemów z bezpieczeństwem i zgodnością. (Networking | Jellyfin Documentation)

Foldery z multimediami nie są widoczne w oknie dodawania biblioteki. Opis kreatora wskazuje w tej sytuacji problemy z uprawnieniami. (Setup Wizard Walkthrough | Jellyfin Documentation) Ręczne wpisanie ścieżki pomaga ominąć trudności nawigacji, ale nie nadaje praw dostępu. (Libraries | Jellyfin Documentation) Dostęp do plików musi mieć konto Windows uruchamiające proces serwera, nie użytkownik utworzony w panelu Jellyfina. We właściwościach folderu biblioteki, na karcie zabezpieczeń Windows, sprawdzić dla tego konta odczyt plików i wyświetlanie zawartości folderu. Nie nadawać pełnej kontroli grupie wszystkich użytkowników; jeśli konto procesu lub uprawnienia są niejasne, konfigurację tego folderu powinien sprawdzić administrator komputera.

Filmy trafiają do biblioteki jako osobne pozycje zamiast jako wersje jednego filmu. To skutek nazewnictwa: bez etykiety dopisanej na końcu nazwy pliku każdy plik jest traktowany jako odrębny film, a przedrostek nazwy pliku musi zgadzać się z nazwą folderu co do znaku. (Movies | Jellyfin Documentation)

Serial rozpada się na przypadkowe sezony albo nie jest rozpoznawany. Należy sprawdzić nazwy folderów sezonów. Muszą mieć postać Season * z liczbą, bez skrótów typu S01, i nie należy mieszać folderów sezonów z luźnymi odcinkami w folderze serii. (TV Shows | Jellyfin Documentation)

Kwadraciki zamiast tekstu (☐☐☐☐☐). Jellyfin rozpoznaje ten objaw jako brak czcionek dla danych znaków. Dla obrazów okładek bibliotek należy zainstalować czcionki systemowe na maszynie serwerowej, natomiast dla napisów źródło czcionek zależy od klienta. (Troubleshooting | Jellyfin Documentation) W panelu administracyjnym można też wskazać folder z czcionkami zapasowymi (Fallback Fonts), które klient webowy ładuje do renderowania napisów ASS, gdy nie da się użyć innych dostępnych czcionek - na przykład przy znakach CJK. (Configuration | Jellyfin Documentation) Łączny rozmiar tych czcionek jest ograniczony do 20 MB, ponieważ wszystkie są zawsze wstępnie ładowane w przeglądarce, więc zalecane są lekkie formaty webowe w rodzaju woff2. (Configuration | Jellyfin Documentation)

Aktywne urządzenia w panelu nie pokazują postępu odtwarzania. Jako przyczynę wskazywany jest rozsynchronizowany zegar systemowy. (Troubleshooting | Jellyfin Documentation) Na Windows odpowiada za to systemowa synchronizacja czasu w ustawieniach daty i godziny.

Błędy „Database Locked”, nieudane skanowania, niespójne dane. Zalecane jest zacząć od sprawdzenia w panelu administracyjnym limitu równoległych zadań skanowania i obniżenia go; jeżeli jest ustawiony na 0, warto ustawić połowę liczby rdzeni. (Troubleshooting | Jellyfin Documentation) Nie należy w ramach tego poradnika zmieniać trybu blokowania w database.xml. Dalszą diagnostykę trzeba prowadzić według dokumentacji, po wykonaniu niezależnej kopii danych i dotychczasowej konfiguracji, z możliwością powrotu do niej. (Troubleshooting | Jellyfin Documentation) (Configuration | Jellyfin Documentation)

Nowe pliki nie pojawiają się w bibliotece. Warto ręcznie uruchomić odpowiednie zadanie z listy zadań; automatyczne wykrywanie zmian w plikach jest obsługiwane tylko na niektórych systemach plików. (Troubleshooting | Jellyfin Documentation) (Scheduled Tasks | Jellyfin Documentation) Przy okazji dokumentacja zawiera ostrzeżenie warte zapamiętania: jeżeli pliki multimedialne będą niedostępne w chwili uruchomienia zadania Clean up collections and playlists - na przykład gdy udział sieciowy nie zdążył się jeszcze zamontować - playlisty zostaną utracone, a zadanie to domyślnie uruchamia się przy starcie Jellyfina. (Scheduled Tasks | Jellyfin Documentation)

Logi jako pierwsze narzędzie diagnostyczne

Najprostszym sposobem sprawdzenia, co się dzieje, jest zajrzenie do logów, dostępnych przez konsolę klienta webowego lub w katalogu logów na serwerze; przy problemach z transkodowaniem należy zacząć od logów ffmpeg. (Troubleshooting | Jellyfin Documentation) Katalog logów wyznaczany jest jako <katalog danych>/log, o ile nie zmieniono go opcją wiersza poleceń --logdir lub zmienną środowiskową $JELLYFIN_LOG_DIR. (Configuration | Jellyfin Documentation)

Sam katalog danych na Windows zależy od sposobu uruchomienia: przy starcie z aplikacji w zasobniku systemowym jest to <%ProgramData%>\Jellyfin\Server, a przy bezpośrednim uruchomieniu serwera <%LocalAppData%>\jellyfin. (Configuration | Jellyfin Documentation) Dokumentacja podaje te lokalizacje niespójnie: strona konfiguracji przypisuje ProgramData aplikacji w zasobniku, a strona kopii zapasowych mówi o „instalacji użytkownika” w %LOCALAPPDATA% i „instalacji jako usługa” w %PROGRAMDATA%, a przy kopii ręcznej dla instalatora z aplikacją w zasobniku wymienia oba miejsca naraz. (Configuration | Jellyfin Documentation) (Backup and Restore | Jellyfin Documentation) Dlatego należy sprawdzić oba - właściwy jest ten katalog, w którym istnieją podfoldery data, config i log. Można go też wskazać opcją --datadir, zmienną JELLYFIN_DATA_DIR albo kluczem DataFolder w rejestrze Windows w gałęzi Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Jellyfin\Server; w tej samej gałęzi klucz InstallFolder może wskazywać lokalizację instalacji. (Configuration | Jellyfin Documentation)

Bardziej szczegółowe logowanie diagnostyczne włącza się ręczną edycją pliku logging.json w katalogu konfiguracji, ponieważ Jellyfin nie steruje tym z interfejsu. (Troubleshooting | Jellyfin Documentation) Trzeba jednak liczyć się ze skalą: dokumentacja ostrzega, że samo załadowanie strony głównej generuje przy tej konfiguracji ponad 4000 linii logów i że nie należy zostawiać logowania diagnostycznego włączonego na stałe. (Troubleshooting | Jellyfin Documentation) Po zakończeniu diagnostyki plik logging.json należy usunąć albo przywrócić w nim domyślną sekcję MinimumLevel. (Troubleshooting | Jellyfin Documentation)

Kopia zapasowa przed aktualizacją

Jedna właściwość Jellyfina bywa zaskoczeniem: serwer nie ma mechanizmu obniżania wersji. Po pierwszym uruchomieniu na nowej wersji migracje są od razu stosowane, a dane przestają działać ze starą wersją - jedynym sposobem powrotu jest odtworzenie kopii zapasowej. (Backup and Restore | Jellyfin Documentation) Dlatego kopię warto wykonać przed każdą aktualizacją, szczególnie między wydaniami głównymi. (Backup and Restore | Jellyfin Documentation)

Od wersji 10.11 dostępny jest wbudowany mechanizm kopii zapasowych, który potrafi wykonać kopię przy działającym serwerze; dokumentacja zaleca jednak wykonywanie jej w czasie niskiej aktywności i nie w trakcie skanowania. (Backup and Restore | Jellyfin Documentation) Kopię tworzy się wchodząc do panelu Jellyfina, otwierając zakładkę Backups i klikając Create Backup; w oknie wybiera się zakres danych. Zawsze objęta jest baza danych, a opcjonalnie metadane, napisy (w tym pobrane i wyodrębnione) oraz dane Trickplay przechowywane poza katalogami multimediów. (Backup and Restore | Jellyfin Documentation) Mechanizm sprawdza, czy w folderze kopii jest przynajmniej 5 GB wolnego miejsca, przy czym dokumentacja zaznacza, że przy kopii obejmującej napisy i Trickplay może to nie wystarczyć. (Backup and Restore | Jellyfin Documentation)

Ukończone archiwum kopii trzeba skopiować poza katalog danych i instalacji Jellyfina, najlepiej na osobny nośnik. Przed usuwaniem danych sprawdzić, że kopia istnieje w nowym miejscu i daje się otworzyć jako archiwum; to kontrola czytelności, nie pełny test odtworzenia. Ręczną kopię katalogów również przechowywać poza miejscami przeznaczonymi do sprzątania.

Folder kopii leży w katalogu danych Jellyfina. Dla instalacji użytkownika na Windows dokumentacja podaje %LOCALAPPDATA%\Jellyfin\data\backups, a dla instalacji jako usługa %PROGRAMDATA%\Jellyfin\Server\data\backups. (Backup and Restore | Jellyfin Documentation) Przywracanie odbywa się z interfejsu webowego, w tym samym widoku, przyciskiem przywracania na liście kopii, albo przez uruchomienie Jellyfina z argumentem --restore-archive ŚCIEŻKA_DO_ZIP; przywracanie z interfejsu powoduje natychmiastowy restart serwera i jego chwilową niedostępność. (Backup and Restore | Jellyfin Documentation)

Kopię można też wykonać ręcznie, ale wtedy serwer musi być zatrzymany, inaczej baza pozostanie zablokowana i może nie dać się odtworzyć. (Backup and Restore | Jellyfin Documentation) Na Windows dokumentacja podaje trzy sposoby zatrzymania: kliknięcie „Shutdown” w panelu Jellyfina, kliknięcie prawym przyciskiem ikony w zasobniku i wybranie „Quit”, albo odszukanie procesu Jellyfina i zakończenie go w Menedżerze zadań Windows - dokumentacja nazywa to narzędzie „Process Manager”, ale chodzi o ten sam Menedżer zadań, który w sekcji o akceleracji służy do podglądu obciążenia GPU. (Backup and Restore | Jellyfin Documentation) Ręczna kopia polega na skopiowaniu katalogów danych i konfiguracji w wybrane miejsce, a przy przywracaniu należy zatrzymać serwer, odsunąć bieżące katalogi na bok (na przykład dopisując .bak) i skopiować - a nie przenieść ani przemianować - kopię pod pierwotną nazwę. (Backup and Restore | Jellyfin Documentation)

Kopia zapasowa Jellyfina nie jest kopią zapasową filmów. Obejmuje dane serwera, nie same pliki multimedialne; te trzeba zabezpieczyć osobno.

Aktualizacja i odinstalowanie z ochroną oryginałów

Aktualizacja na Windows sprowadza się do trzech kroków: pobrania instalatora najnowszej wersji ze strony pobierania, zamknięcia lub zatrzymania Jellyfina z aplikacji w zasobniku, jeżeli działa, i uruchomienia instalatora. (Windows | Jellyfin Documentation) Po poprawnym zakończeniu nowa wersja jest zainstalowana. (Windows | Jellyfin Documentation)

Odinstalowanie także jest proste: należy przejść do „Add or remove programs” w ustawieniach Windows, wyszukać Jellyfin i kliknąć Uninstall. (Windows | Jellyfin Documentation)

Zanim to nastąpi, warto wykonać kilka czynności zabezpieczających, żeby usunięcie serwera nie dotknęło samych multimediów ani nie zostawiło otwartych reguł zapory:

  1. Spisać ścieżki do folderów z multimediami. Biblioteki wskazują na foldery, które istniały wcześniej i istnieją niezależnie od Jellyfina - to wirtualne kolekcje odwołujące się do lokalizacji na serwerze. (Libraries | Jellyfin Documentation) Odinstalowanie programu nie ma powodu ich ruszać, ale spisanie ścieżek pozwala później świadomie ominąć te foldery przy sprzątaniu.
  2. Sprawdzić i wyłączyć wszystkim użytkownikom uprawnienie do usuwania multimediów. Ta opcja usuwa pliki także z systemu plików. (Users | Jellyfin Documentation) Wyłączenie jej przed dalszymi krokami eliminuje ryzyko przypadkowego skasowania oryginałów w trakcie porządkowania.
  3. Wykonać kopię danych serwera, jeżeli instalacja ma zostać kiedyś odtworzona - metodą opisaną w poprzedniej sekcji. (Backup and Restore | Jellyfin Documentation) Kopia obejmuje dane Jellyfina, nie pliki multimedialne. Ukończone archiwum lub ręczną kopię przenieść przez skopiowanie poza katalog danych i instalacji, sprawdzić obecność oraz czytelność tej kopii i dopiero wtedy kontynuować. Nie usuwać katalogu zawierającego jedyny backup.
  4. Zatrzymać serwer przed odinstalowaniem, jedną z opisanych metod. (Backup and Restore | Jellyfin Documentation)
  5. Odinstalować program przez ustawienia Windows. (Windows | Jellyfin Documentation)
  6. Usunąć reguły zapory dodane wcześniej, składnią usuwania reguł opisaną w dokumentacji Microsoftu - z nazwą reguły oraz protokołem i portem lokalnym. (Use the netsh advfirewall firewall context | Microsoft Learn) Dla reguł z tego poradnika:
netsh advfirewall firewall delete rule name="Jellyfin LAN HTTP" protocol=TCP localport=8096

netsh advfirewall firewall delete rule name="Jellyfin LAN Discovery" protocol=UDP localport=7359

W wf.msc sprawdzić też pozostałe wpisy wskazujące dokładną ścieżkę odinstalowanego jellyfin.exe, w tym wyłączone reguły automatyczne zapisane podczas konfiguracji. Usunąć wyłącznie potwierdzone reguły tej instalacji, pozostawiając wpisy innych programów.

  1. Sprawdzić pozostałości w katalogu danych. Katalog danych na Windows to <%ProgramData%>\Jellyfin\Server lub <%LocalAppData%>\jellyfin, zależnie od sposobu uruchamiania serwera; zawiera on również katalog konfiguracji. (Configuration | Jellyfin Documentation) (Backup and Restore | Jellyfin Documentation) Ponieważ dokumentacja opisuje te lokalizacje niespójnie, trzeba zajrzeć w oba miejsca - właściwe jest to, w którym są podfoldery data, config i log. Jeżeli instalacja ma zniknąć bez śladu, to te katalogi należy sprawdzić i usunąć - z pełną świadomością, że przepadną wtedy dane obejrzanych pozycji, konta i pobrane metadane.

Katalogów multimediów nie należy usuwać w ramach sprzątania po Jellyfinie i nie ma takiej potrzeby: serwer pracuje na oryginałach w miejscu, w którym leżą, i nie tworzy ich kopii ani nie przenosi ich do własnego katalogu danych. Kasowanie czegokolwiek pod ścieżkami spisanymi w kroku 1 oznacza kasowanie samej kolekcji.

Lista kontrolna na koniec

  • Czy pliki są uporządkowane według opisanych zasad nazewnictwa, a napisy leżą obok plików wideo?
  • Czy serwer otwiera się lokalnie pod http://localhost:8096, a z innego urządzenia pod adresem IP komputera?
  • Czy sieć domowa ma w Windows profil prywatny, a sieci obce pozostały publiczne?
  • Czy reguły zapory zostały dodane z zawężeniem remoteip=LocalSubnet i profile=private, a nie szerzej?
  • Czy w konsoli zapory nie ma reguł blokujących dla jellyfin.exe po anulowanym oknie przy pierwszym uruchomieniu?
  • Czy codzienne oglądanie odbywa się na koncie bez uprawnień administratora?
  • Czy nikt nie ma nadanego uprawnienia do usuwania multimediów?
  • Czy przed aktualizacją powstaje kopia danych serwera i czy wiadomo, gdzie leży katalog danych?
  • Czy spisano ścieżki folderów z multimediami, żeby przy odinstalowaniu ominąć je przy sprzątaniu?

Pytania, które zwykle pojawiają się później

Czy Jellyfin wymaga internetu? Do działania nie. Jellyfin jest opisywany jako w pełni samodzielnie hostowane oprogramowanie działające niezależnie od internetu, z zastrzeżeniem, że pobieranie metadanych od zewnętrznych dostawców bez internetu nie zadziała. (Networking | Jellyfin Documentation)

Czy da się dołożyć funkcje, których brakuje? Jellyfin ma zestaw opcjonalnych wtyczek instalowanych z katalogu w ustawieniach; dostępne kategorie obejmują między innymi uwierzytelnianie, kanały, funkcje ogólne, telewizję na żywo, metadane i powiadomienia. (Plugins | Jellyfin Documentation) Zastrzeżenie jest przy tym takie, że wiele wtyczek jest często aktualizowanych i numer wersji w katalogu może nie być dokładny. (Plugins | Jellyfin Documentation) Na Windows folder wtyczek to %UserProfile%\AppData\Local\jellyfin\plugins dla instalacji bezpośrednich oraz %ProgramData%\Jellyfin\Server\plugins dla instalacji z aplikacją w zasobniku. (Plugins | Jellyfin Documentation)

Dlaczego jeden film odtwarza się płynnie, a inny obciąża komputer? Bo o trybie odtwarzania decyduje zgodność konkretnego pliku z konkretnym klientem. To klient zgłasza swoje możliwości, a serwer dobiera do nich ustawienia. (Transcoding | Jellyfin Documentation) Sposób sprawdzenia jest bezpośredni: podczas odtwarzania w panelu widoczny jest aktualny tryb - Direct Play, Remux, Direct Stream lub Transcode. (Transcoding | Jellyfin Documentation) Porównanie tego trybu dla dwóch plików, a następnie dla tego samego pliku z napisami i bez nich, wskazuje przyczynę bez zgadywania.

Czy warto od razu kupować kartę graficzną? Nie na podstawie samego rozmiaru kolekcji. Najpierw warto sprawdzić opisaną wyżej metodą, ile plików faktycznie wymaga transkodowania na używanych klientach - jeżeli wszystko odtwarza się w trybie Direct Play, karta nie zmieni nic. Zaznaczone jest jednak, że brak układu graficznego nie jest zalecany, ponieważ transkodowanie wideo na procesorze jest bardzo wymagające, a mapowanie tonalne HDR do SDR dodatkowo pogarsza sytuację. (Selecting Appropriate Hardware | Jellyfin Documentation)

Źródła

Komentarze (0)

Nikt jeszcze nic nie napisał. Bądź pierwszy.

Komentarze są moderowane. Pojawi się po zatwierdzeniu. Maks. 2 linki.

Czytaj dalej

Warsztat · poradnik

Jak bezpiecznie odłączyć osobisty OneDrive w Windows i zachować lokalne oryginały

8 września 2026
Warsztat · poradnik

LocalSend: przesyłanie plików między Windows i Androidem bez chmury i bez konta

8 września 2026
Warsztat · poradnik

Stary ThinkPad jako domowy serwer: Proxmox krok po kroku, bez obietnic

26 sierpnia 2026
AI · poradnik

Lokalna transkrypcja polskiego audio na Windows: Buzz i modele Whisper krok po kroku

8 września 2026