TrueNAS Scale, dzięki swojemu potężnemu interfejsowi webowemu, sprawia, że instalacja i podstawowe zarządzanie aplikacjami jest proste i intuicyjne. Jednak każdy zaawansowany użytkownik prędzej czy później odkryje, że prawdziwa moc i elastyczność kryją się w wierszu poleceń. Warto zaznaczyć, że od wersji 24.04 (Electric Eel), TrueNAS Scale przeszło istotną transformację, rezygnując z dotychczasowego systemu k3s (lekka dystrybucja Kubernetes) na rzecz natywnego zarządzania kontenerami za pomocą Dockera. Ta zmiana znacząco uprościła architekturę i sprawiła, że bezpośrednia praca z kontenerami stała się bardziej przystępna.
Prawdziwą swobodę daje bezpośrednie połączenie przez SSH, które omija ograniczenia terminala w przeglądarce. Pozwala ono przekształcić się ze zwykłego użytkownika w świadomego administratora, który potrafi zajrzeć „pod maskę” każdej aplikacji, diagnozować problemy w czasie rzeczywistym i zarządzać systemem z precyzją niedostępną z poziomu interfejsu graficznego. Ten artykuł to kompleksowy przewodnik po zarządzaniu aplikacjami w TrueNAS Scale przy użyciu terminala, oparty właśnie na natywnych komendach Dockera, które stały się nowym fundamentem systemu aplikacji.
Krok 1: Identyfikacja Uruchomionych Aplikacji
Zanim zaczniemy zarządzać aplikacjami, musimy wiedzieć, co w ogóle działa w naszym systemie. Interfejs graficzny pokazuje nam nazwy aplikacji, ale terminal da nam wgląd w faktyczne kontenery.
Listowanie Kontenerów: docker ps
Podstawowym poleceniem jest docker ps. Wyświetla ono listę wszystkich aktualnie uruchomionych kontenerów.
docker ps
Wynik tego polecenia to tabela z kluczowymi informacjami:
CONTAINER ID: Unikalny identyfikator.
IMAGE: Nazwa obrazu, z którego stworzono kontener.
STATUS: Informacja, jak długo kontener jest uruchomiony.
PORTS: Mapowanie portów.
NAMES: Najważniejsza dla nas informacja – przyjazna nazwa kontenera, której będziemy używać w kolejnych poleceniach (np. ix-jellyfin-jellyfin-1).
Jeśli chcesz zobaczyć również zatrzymane kontenery, dodaj flagę -a: docker ps -a.
Monitorowanie Zasobów w Czasie Rzeczywistym: docker stats
Jeszcze lepszym sposobem na szybki przegląd jest docker stats. Ta komenda wyświetla dynamiczną, aktualizowaną na żywo tabelę pokazującą zużycie CPU, pamięci RAM i zasobów sieciowych przez każdy kontener. To idealne narzędzie, aby na pierwszy rzut oka zidentyfikować, która aplikacja obciąża system.
docker stats
Krok 2: Wejście do Wnętrza Kontenera – docker exec
Gdy już zidentyfikujesz kontener, możesz wejść do jego środka, aby przeglądać pliki, edytować konfigurację czy prowadzić zaawansowaną diagnostykę.
docker exec -it ix-jellyfin-jellyfin-1 /bin/bash
Przeanalizujmy to polecenie:
docker exec: Wykonaj polecenie w działającym kontenerze.
/bin/bash: Polecenie, które chcemy uruchomić wewnątrz – w tym przypadku powłokę Bash.
Po wykonaniu polecenia, znak zachęty w terminalu zmieni się, informując, że jesteś teraz „wewnątrz”. Możesz swobodnie poruszać się po systemie plików kontenera za pomocą komend ls, cd itd. Aby wyjść i wrócić do TrueNAS, po prostu wpisz exit lub użyj skrótu Ctrl + D.
Dlaczego Brakuje Narzędzi (top, ps, nano)?
Podczas pracy wewnątrz kontenera możesz natknąć się na błędy typu command not found. Jest to celowe działanie. Wiele nowoczesnych obrazów Docker (w tym oficjalny Jellyfin) to tzw. obrazy minimalistyczne lub „distroless”. Nie zawierają one żadnych dodatkowych narzędzi, a jedynie samą aplikację i jej biblioteki. Jest to praktyka zwiększająca bezpieczeństwo i zmniejszająca rozmiar obrazu.
W takim przypadku musisz polegać na narzędziach zewnętrznych, dostarczanych przez samego Dockera.
Krok 3: Diagnostyka i Rozwiązywanie Problemów
Gdy aplikacja nie działa poprawnie, terminal jest Twoim najlepszym przyjacielem.
Przeglądanie Logów: docker logs
To najważniejsza komenda diagnostyczna. Wyświetla ona wszystko, co aplikacja zapisała w swoich dziennikach.
docker logs ix-nextcloud-nextcloud-1
Jeśli chcesz śledzić logi na żywo, dodaj flagę -f (--follow):
docker logs -f ix-nextcloud-nextcloud-1
Szczegółowa Inspekcja: docker inspect
Komenda docker inspect zwraca ogromną ilość szczegółowych informacji o kontenerze w formacie JSON – jego adres IP, podpięte wolumeny, zmienne środowiskowe i wiele więcej.
docker inspect ix-tailscale-tailscale-1
Krok 4: Zarządzanie Plikami i Cyklem Życia Aplikacji
Terminal daje Ci pełną kontrolę nad plikami i stanem Twoich aplikacji.
Kopiowanie Plików: docker cp
To niezwykle użyteczna komenda do przenoszenia plików pomiędzy systemem TrueNAS a kontenerem, bez potrzeby wchodzenia do środka.
Kopiowanie z kontenera do TrueNAS (np. backup konfiguracji):docker cp ix-nginx-proxy-manager-npm-1:/data/nginx /mnt/TwojaPula/backupy/
Kopiowanie z TrueNAS do kontenera:docker cp /mnt/TwojaPula/dane/nowy-certyfikat.pem ix-nginx-proxy-manager-npm-1:/data/custom_ssl/
Kontrolowanie Stanu Aplikacji
Zamiast klikać w interfejsie graficznym, możesz szybko zarządzać aplikacjami:
Opanowanie kilku podstawowych komend Dockera w terminalu SSH otwiera zupełnie nowy wymiar zarządzania TrueNAS Scale. Przestajesz być zależny od ograniczeń interfejsu graficznego i zyskujesz narzędzia, które pozwalają Ci zrozumieć, jak naprawdę działają Twoje aplikacje.
Możliwość szybkiego sprawdzenia logów, monitorowania zasobów w czasie rzeczywistym, edycji dowolnego pliku konfiguracyjnego czy zrobienia błyskawicznego backupu – to wszystko sprawia, że praca z systemem staje się bardziej efektywna, a rozwiązywanie problemów szybsze. Połączenie przez SSH to nie tylko wygoda, to fundamentalne narzędzie każdego świadomego administratora, który chce mieć pełną kontrolę nad swoim serwerem.
W dzisiejszym cyfrowym świecie nasze życie – zarówno prywatne, jak i zawodowe – zapisane jest w postaci danych. Od zdjęć rodzinnych po kluczowe bazy danych firmowych, utrata tych informacji może być katastrofalna. Mimo to, wiele osób i firm wciąż traktuje kopie zapasowe po macoszemu. Przedstawiamy kompletny przewodnik po budowie potężnego, zautomatyzowanego i bezpiecznego systemu backupu przy użyciu darmowych narzędzi: UrBackup, TrueNAS Scale i Tailscale.
Dlaczego potrzebujesz planu B? Znaczenie kopii zapasowych
Wyobraź sobie, że pewnego ranka dysk twardy w Twoim laptopie odmawia posłuszeństwa. Albo serwer, na którym działa Twoja firma, pada ofiarą ataku ransomware, a wszystkie pliki zostają zaszyfrowane. To nie są scenariusze z filmów science-fiction, ale codzienna rzeczywistość. Awaria sprzętu, błąd ludzki, złośliwe oprogramowanie czy nawet kradzież – zagrożeń jest wiele.
Kopia zapasowa to Twoja polisa ubezpieczeniowa. To jedyny sposób, aby w razie katastrofy szybko i bezboleśnie odzyskać cenne dane, minimalizując przestoje i straty finansowe. Bez niej, odbudowa utraconych informacji jest często niemożliwa lub astronomicznie kosztowna.
Złota zasada: Strategia 3-2-1
W świecie bezpieczeństwa danych istnieje prosta, ale niezwykle skuteczna zasada, znana jako strategia 3-2-1. Mówi ona, że powinieneś posiadać:
TRZY kopie swoich danych (oryginał i dwie kopie zapasowe).
Na DWÓCH różnych nośnikach (np. dysk w komputerze i dysk w serwerze NAS).
JEDNĄ kopię w innej lokalizacji (off-site), na wypadek pożaru, powodzi czy kradzieży w głównej siedzibie.
Posiadanie trzech egzemplarzy danych drastycznie zmniejsza ryzyko ich jednoczesnej utraty. Jeśli jeden dysk zawiedzie, masz drugi. Jeśli całe biuro ulegnie zniszczeniu, masz kopię w chmurze lub w domu.
Pułapka myślenia: Dlaczego RAID to NIE jest kopia zapasowa?
Wielu użytkowników serwerów NAS mylnie uważa, że konfiguracja RAID zwalnia ich z obowiązku robienia backupu. To niebezpieczny błąd.
RAID (Redundant Array of Independent Disks) to technologia zapewniająca redundancję i wysoką dostępność, a nie bezpieczeństwo danych. Chroni ona przed fizyczną awarią dysku twardego. W zależności od konfiguracji (np. RAID 1, RAID 5, RAID 6 lub ich odpowiedniki RAID-Z w systemie TrueNAS), macierz może przetrwać awarię jednego, a nawet dwóch dysków jednocześnie, pozwalając na ich wymianę bez utraty danych i przerwy w działaniu systemu.
Jednak RAID nie ochroni Cię przed:
Błędem ludzkim: Przypadkowe usunięcie pliku jest natychmiast replikowane na wszystkie dyski w macierzy.
Atakiem ransomware: Zaszyfrowane pliki są natychmiast synchronizowane na wszystkich dyskach.
Awarią zasilania lub kontrolera RAID: Może to doprowadzić do uszkodzenia całej macierzy.
Kradzieżą lub katastrofą naturalną: Utrata całego urządzenia oznacza utratę wszystkich danych.
Pamiętaj: Redundancja chroni przed awarią sprzętu, kopia zapasowa chroni przed utratą danych.
Twoje centrum backupu: UrBackup na TrueNAS Scale
Stworzenie solidnego systemu backupu nie musi wiązać się z drogimi subskrypcjami. Idealnym rozwiązaniem jest połączenie systemu operacyjnego TrueNAS Scale z aplikacją UrBackup.
TrueNAS Scale: To potężny, darmowy system operacyjny do budowy serwerów NAS. Bazuje na Linuksie i oferuje zaawansowane funkcje, takie jak system plików ZFS oraz obsługę aplikacji w kontenerach.
UrBackup: To oprogramowanie open-source typu klient-serwer do tworzenia kopii zapasowych. Jest niezwykle wydajne i elastyczne, pozwalając na backup zarówno pojedynczych plików, jak i całych obrazów dysków.
Tarcza ochronna TrueNAS: Migawki (Snapshots) ZFS
Jedną z najpotężniejszych funkcji TrueNAS, wynikającą z użycia systemu plików ZFS, są migawki (snapshots). Migawka to błyskawicznie tworzony, tylko do odczytu obraz całego systemu plików w danym momencie. Działa to jak zamrożenie danych w czasie.
Dlaczego to jest tak ważne w kontekście ransomware?
Gdy ransomware atakuje i szyfruje pliki na udziale sieciowym, zmiany te dotyczą „żywej” wersji danych. Jednak wcześniej wykonane migawki pozostają nietknięte i niezmienione, ponieważ są z natury tylko do odczytu. W przypadku ataku możesz w ciągu kilku sekund przywrócić cały zbiór danych (dataset) do stanu sprzed infekcji, całkowicie niwelując jej skutki.
Możesz skonfigurować w TrueNAS automatyczne tworzenie migawek (np. co godzinę) i ich przechowywanie przez określony czas. To tworzy dodatkową, niezwykle potężną warstwę ochrony, która doskonale uzupełnia kopie zapasowe wykonywane przez UrBackup.
Zalety i wady rozwiązania
Zalety:
✅ Pełna kontrola i prywatność: Twoje dane są przechowywane na Twoim własnym sprzęcie.
✅ Brak opłat licencyjnych: Oprogramowanie jest w pełni darmowe.
✅ Niezwykła wydajność: Kopie przyrostowe oszczędzają miejsce i czas.
✅ Elastyczność: Obsługa Windows, macOS, Linux, serwerów fizycznych i VPS.
✅ Kopie obrazów dysku: Możliwość odtworzenia całego systemu „od zera” (bare-metal restore).
Wady:
❌ Wymaga własnego sprzętu: Konieczność posiadania serwera NAS.
❌ Wstępna konfiguracja: Wymaga pewnej wiedzy technicznej.
❌ Pełna odpowiedzialność: Użytkownik odpowiada za bezpieczeństwo i działanie serwera.
Krok po kroku: Instalacja i konfiguracja
1. Instalacja UrBackup na TrueNAS Scale
Zaloguj się do interfejsu webowego TrueNAS.
Przejdź do sekcji Apps.
Wyszukaj aplikację UrBackup i kliknij Install.
W najważniejszym kroku konfiguracji musisz wskazać ścieżkę, gdzie będą przechowywane kopie zapasowe (np. /mnt/TwojaPula/backups).
Po zakończeniu instalacji, uruchom aplikację i przejdź do jej interfejsu webowego.
2. Podstawowa konfiguracja serwera
W interfejsie UrBackup przejdź do Ustawienia. Najważniejsze opcje na start to:
Ścieżka do magazynu kopii: Powinna być już ustawiona podczas instalacji.
Interwały wykonywania kopii: Ustaw, jak często mają być robione kopie przyrostowe (np. co kilka godzin) i pełne (np. co kilka tygodni).
Ustawienia poczty e-mail: Skonfiguruj wysyłanie powiadomień, aby otrzymywać raporty o stanie backupów.
3. Instalacja klienta na komputerach
Proces dodawania komputera do systemu backupu składa się z dwóch etapów: zarejestrowania go na serwerze i instalacji oprogramowania na maszynie klienckiej.
a) Dodawanie nowego klienta na serwerze:
W interfejsie UrBackup przejdź do zakładki Status.
Kliknij niebieski przycisk „+ Dodaj nowego klienta”.
Wybierz opcję „Dodaj nowego klienta internetowego/aktywnego”. Jest to zalecane, ponieważ działa zarówno w sieci lokalnej, jak i przez internet (np. przez Tailscale).
Wpisz unikalną nazwę dla nowego klienta (np. „Laptop-Ania” lub „Serwer-WWW”) i kliknij „Dodaj klienta”.
b) Instalacja oprogramowania na maszynie klienckiej:
Po dodaniu klienta na serwerze, pozostając w zakładce Status, zobaczysz przyciski „Pobierz klienta dla Windows” oraz „Pobierz klienta dla systemu Linux”.
Kliknij odpowiedni przycisk i wybierz z listy rozwijanej nazwę klienta, którego właśnie dodałeś.
Pobierz przygotowany plik instalacyjny (.exe lub .sh). Jest on już w pełni skonfigurowany do połączenia z Twoim serwerem.
Uruchom instalator na komputerze klienckim i postępuj zgodnie z instrukcjami.
Po kilku minutach nowy klient powinien połączyć się z serwerem i pojawić się na liście ze statusem „Online”, gotowy do pierwszej kopii.
Bezpieczeństwo ponad wszystko: Tailscale wkracza do gry
Jak bezpiecznie backupować komputery znajdujące się poza Twoją siecią lokalną? Idealnym rozwiązaniem jest Tailscale. Tworzy on bezpieczną, prywatną sieć (mesh VPN) pomiędzy wszystkimi Twoimi urządzeniami, niezależnie od tego, gdzie się znajdują.
Dlaczego warto używać Tailscale z UrBackup?
Prostota: Instalacja i konfiguracja zajmują minuty.
Bezpieczeństwo „Zero Trust”: Każde połączenie jest szyfrowane end-to-end.
Stabilne adresy IP: Każde urządzenie otrzymuje stały adres IP z puli 100.x.x.x, który nie zmienia się, nawet gdy urządzenie zmienia fizyczną lokalizację.
Co zrobić, gdy zmieni się adres IP?
Jeśli z jakiegoś powodu musisz zmienić adres IP serwera UrBackup (np. po przejściu z innej sieci VPN na Tailscale), procedura jest prosta:
Zaktualizuj adres na serwerze UrBackup: W Ustawienia -> Klienci internetowi/aktywni wpisz nowy, poprawny adres serwera (np. urbackup://100.x.x.x).
Pobierz zaktualizowany instalator: W zakładce Status, kliknij „Pobierz klienta”, wybierz z listy klienta, który jest offline, i pobierz dla niego nowy skrypt instalacyjny.
Uruchom instalator na kliencie: Uruchomienie nowego instalatora automatycznie zaktualizuje konfigurację na maszynie klienckiej.
Zarządzanie i monitorowanie kopii
Interfejs UrBackup dostarcza wszystkich niezbędnych narzędzi do nadzorowania systemu.
Status: Główny pulpit, na którym widać listę wszystkich klientów, ich status online/offline oraz stan ostatniej kopii.
Zadania: Podgląd na żywo aktualnie wykonywanych operacji, takich jak indeksowanie plików czy transfer danych.
Kopie zapasowe: Lista wszystkich wykonanych backupów dla każdego klienta, z możliwością przeglądania plików i ich odtwarzania.
Dziennik: Szczegółowy rejestr wszystkich zdarzeń, błędów i ostrzeżeń – nieocenione narzędzie podczas diagnozowania problemów.
Statystyki: Wykresy i tabele pokazujące wykorzystanie przestrzeni dyskowej przez poszczególnych klientów w czasie.
Backup baz danych: Zrób to dobrze!
Nigdy nie rób backupu poprzez zwykłe kopiowanie plików bazy danych z dysku, gdy usługa jest uruchomiona! Grozi to wykonaniem niespójnej kopii, która będzie bezużyteczna. Prawidłowym sposobem jest wykonanie „zrzutu” (dump) za pomocą narzędzi takich jak mysqldump lub mariadb-dump.
Bardziej elastyczne rozwiązanie. Poniższy skrypt automatycznie zapisze każdą bazę danych w osobnym, skompresowanym pliku. Należy go uruchamiać cyklicznie (np. przez cron) tuż przed zaplanowanym backupem przez UrBackup.
#!/bin/bash
# --- Konfiguracja ---
BACKUP_DIR="/var/backups/mysql"
DB_USER="root"
DB_PASS="TwojeSuperTajneHaslo"
# --------------------
# Sprawdzenie, czy użytkownik i hasło są podane
if [ -z "$DB_USER" ] || [ -z "$DB_PASS" ]; then
echo "Błąd: Zmienne DB_USER lub DB_PASS nie są ustawione w skrypcie."
exit 1
fi
# Utworzenie katalogu na backup, jeśli nie istnieje
mkdir -p "$BACKUP_DIR"
# Pobranie listy wszystkich baz danych, z wyłączeniem baz systemowych
DATABASES=$(mysql -u "$DB_USER" -p"$DB_PASS" -e "SHOW DATABASES;" | tr -d "| " | grep -v -E "(Database|information_schema|performance_schema|mysql|sys)")
# Pętla przez każdą bazę danych
for db in $DATABASES; do
echo "Wykonywanie zrzutu bazy danych: $db"
# Wykonanie zrzutu i kompresja w locie
mysqldump -u "$DB_USER" -p"$DB_PASS" --databases "$db" | gzip > "$BACKUP_DIR/$db-$(date +%Y-%m-%d).sql.gz"
if [ $? -eq 0 ]; then
echo "Zrzut bazy $db zakończony sukcesem."
else
echo "Błąd podczas wykonywania zrzutu bazy $db."
fi
done
# Opcjonalnie: Usuwanie starych backupów (starszych niż 7 dni)
find "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +7 -exec rm {} \;
echo "Zakończono proces backupu wszystkich baz danych."
Twoja cyfrowa twierdza
Posiadanie solidnej, zautomatyzowanej strategii tworzenia kopii zapasowych to nie luksus, a absolutna konieczność. Połączenie mocy TrueNAS Scale z jego migawkami ZFS, elastyczności UrBackup i bezpieczeństwa Tailscale pozwala zbudować wielowarstwowy system obronny klasy korporacyjnej przy zerowych kosztach oprogramowania.
To inwestycja czasu, która zapewnia bezcenny spokój ducha. Pamiętaj jednak, że żaden system nie jest w pełni bezobsługowy. Regularne monitorowanie logów, sprawdzanie raportów e-mail i, co najważniejsze, okresowe przeprowadzanie testowych odtworzeń plików to ostatni, kluczowy element, który zamienia dobry system backupu w niezawodną twierdzę chroniącą Twoje najcenniejsze zasoby – dane.
Współczesny internet to pole bitwy o naszą uwagę, a główną amunicją stały się reklamy. Szczególnie dotkliwie odczuwamy to na smartfonach, gdzie nachalne banery i wyskakujące okna potrafią skutecznie zniechęcić do przeglądania treści. Istnieje jednak skuteczne i kompleksowe rozwiązanie, które pozwala stworzyć własną tarczę ochronną – nie tylko w domowej sieci, ale na każdym urządzeniu, gdziekolwiek jesteś.
Problem: Cyfrowe zaśmiecenie i utrata prywatności
Każdy, kto próbował przeczytać artykuł na smartfonie, zna ten scenariusz: treść jest regularnie przerywana przez reklamy, które zajmują znaczną część ekranu, spowalniają ładowanie strony i zużywają cenne dane mobilne. Problem ten, choć irytujący na komputerach stacjonarnych, na mniejszych ekranach urasta do rangi poważnej bariery w dostępie do informacji.
Tradycyjne wtyczki do przeglądarek rozwiązują problem tylko częściowo i na jednym urządzeniu. Nie chronią nas w aplikacjach mobilnych, na telewizorach Smart TV czy konsolach do gier. Co gorsza, wszechobecne skrypty śledzące zbierają dane o naszej aktywności, tworząc szczegółowe profile marketingowe.
Rozwiązanie: Centralne zarządzanie z AdGuard Home
Odpowiedzią jest AdGuard Home – oprogramowanie działające jako serwer DNS, które filtruje ruch na poziomie całej sieci. Instalując je na domowym serwerze, takim jak popularny TrueNAS, zyskujemy centralny punkt kontroli nad wszystkimi urządzeniami podłączonymi do naszej sieci.
Instalacja i konfiguracja AdGuard Home na TrueNAS jest prosta dzięki systemowi aplikacji (Apps). Kluczowym krokiem podczas instalacji jest zaznaczenie opcji „Host Network”. Dzięki temu AdGuard Home będzie widział rzeczywiste adresy IP urządzeń w Twojej sieci, co pozwoli na precycyjne monitorowanie i zarządzanie klientami w panelu administracyjnym. Bez tej opcji wszystkie zapytania wyglądałyby, jakby pochodziły z jednego adresu IP serwera.
Po instalacji, kluczowym krokiem jest skierowanie zapytań DNS ze wszystkich urządzeń na adres naszego serwera AdGuard. Można to osiągnąć na kilka sposobów, jednak dzięki Tailscale proces ten staje się niezwykle prosty.
Tradycyjne metody vs. podejście z Tailscale:
W klasycznym podejściu, aby skierować ruch na AdGuard Home, musielibyśmy zmienić adresy DNS w ustawieniach routera. Gdy jest to niemożliwe (co często ma miejsce w przypadku sprzętu od dostawcy internetu), alternatywą jest skonfigurowanie AdGuard Home jako serwera DHCP, który automatycznie przekaże urządzeniom właściwy adres DNS (wymaga to wyłączenia serwera DHCP na routerze). Ostatecznością jest ręczna zmiana DNS na każdym urządzeniu w domu. Należy jednak podkreślić, że wszystkie te metody działają wyłącznie w sieci lokalnej i są całkowicie nieskuteczne dla urządzeń mobilnych korzystających z danych komórkowych poza domem.
Jednakże, jeśli planujemy używać Tailscale do ochrony poza domem, możemy wykorzystać go również do konfiguracji sieci lokalnej. To niezwykle eleganckie rozwiązanie: jeśli zainstalujemy klienta Tailscale na wszystkich naszych urządzeniach (komputerach, telefonach) i w jego panelu administracyjnym ustawimy adres DNS naszego serwera AdGuard, włączając opcję „Override local DNS”, nie musimy wprowadzać żadnych zmian w routerze ani ręcznie na poszczególnych urządzeniach. Tailscale automatycznie zmusi każde urządzenie w naszej wirtualnej sieci do korzystania z AdGuard, niezależnie od tego, z jaką siecią fizyczną jest połączone.
Funkcje AdGuard Home to znacznie więcej niż blokowanie reklam:
Ochrona przed złośliwym oprogramowaniem: Automatycznie blokuje dostęp do stron znanych z phishingu, malware’u i oszustw.
Kontrola rodzicielska: Umożliwia włączenie blokady stron z treściami dla dorosłych, co jest nieocenioną funkcją w domach z dziećmi.
Personalizacja filtrów: Możemy korzystać z gotowych, regularnie aktualizowanych list filtrów lub dodawać własne reguły.
Szczegółowe statystyki: Panel pokazuje, jakie zapytania są blokowane, które urządzenia są najbardziej aktywne i jakie domeny generują najwięcej ruchu.
Dla zaawansowanych użytkowników przydatna jest możliwość zarządzania klientami. Każdemu urządzeniu w sieci można nadać przyjazną nazwę (np. „Laptop-Ania”, „Telefon-Tomek”) i przypisać mu indywidualne reguły filtrowania. W moim przypadku, dla serwerów VPS, które nie wymagają blokowania reklam, ustawiłem domyślne serwery DNS (np. 1.1.1.1 i 8.8.8.8), dzięki czemu ich ruch jest ignorowany przez filtry AdGuard.
Wyzwanie: Blokowanie reklam poza siecią domową
O ile ochrona w sieci lokalnej jest już potężnym narzędziem, prawdziwa wolność od reklam pojawia się, gdy możemy korzystać z niej poza domem. Standardowo, gdy smartfon łączy się z siecią komórkową, traci kontakt z domowym serwerem AdGuard. Próba wystawienia serwera DNS na świat przez forwarding portów w routerze jest nie tylko niebezpieczna, ale i nieskuteczna. Większość systemów mobilnych, jak Android i iOS, nie pozwala na zmianę serwera DNS dla połączeń komórkowych, uniemożliwiając takie rozwiązanie. Tu z pomocą przychodzi Tailscale.
Tailscale: Twoja prywatna sieć w dowolnym miejscu
Tailscale to usługa oparta na protokole WireGuard, która tworzy bezpieczną, wirtualną sieć prywatną (tzw. Tailnet) pomiędzy Twoimi urządzeniami. Niezależnie od tego, gdzie się znajdują, komputery, serwery i telefony mogą komunikować się ze sobą tak, jakby były w tej samej sieci lokalnej.
Instalacja Tailscale na TrueNAS oraz na urządzeniach mobilnych jest błyskawiczna. Po zalogowaniu się na to samo konto, wszystkie urządzenia widzą się nawzajem w panelu administracyjnym Tailscale. Aby połączyć moc obu narzędzi, należy wykonać kluczowe kroki:
W panelu administracyjnym Tailscale, w zakładce DNS, włączamy opcję Override local DNS.
Jako globalny serwer DNS wpisujemy adres IP naszego serwera TrueNAS w sieci Tailnet (np. 100.x.x.x).
Dzięki tej konfiguracji, cały ruch DNS z naszego telefonu, nawet gdy korzysta on z sieci 5G na drugim końcu kraju, jest bezpiecznym tunelem przesyłany do serwera Tailscale na TrueNAS, a następnie przetwarzany przez AdGuard Home. Efekt? Reklamy, moduły śledzące i złośliwe strony są blokowane na Twoim telefonie zawsze i wszędzie.
Zaawansowane funkcje Tailscale: Subnet Routes i Exit Node
Tailscale oferuje dwie potężne funkcje, które dodatkowo rozszerzają możliwości naszej sieci:
Subnet routes: Pozwala udostępnić całą domową sieć LAN (np. 192.168.1.0/24) urządzeniom w sieci Tailnet. Po skonfigurowaniu serwera TrueNAS jako „routera podsieci”, Twój telefon będący poza domem może uzyskać dostęp nie tylko do samego serwera, ale także do drukarki, kamery IP czy innych urządzeń w sieci lokalnej, tak jakbyś był w domu.
Exit node: Ta funkcja zamienia Twój domowy serwer w pełnoprawny serwer VPN. Po aktywacji, cały ruch internetowy z z Twojej sieci tailnet (nie tylko zapytania DNS) jest tunelowany przez domowe łącze internetowe. To idealne rozwiązanie, gdy korzystasz z niezaufanych, publicznych sieci Wi-Fi (np. w hotelu czy na lotnisku), ponieważ cały ruch jest szyfrowany i chroniony. Jeśli Twój domowy serwer znajduje się w Polsce, zyskujesz też polski adres IP, będąc za granicą.
Sprawdzenie skuteczności blokowania reklam
Aby dowiedzieć się jak skuteczne są Twoje filtry antyreklamowe, możesz wejść na stronę https://adblock.turtlecute.org/ Tam dowiesz się jakiego typu reklamy są blokowane, a jakie są nadal wyświetlane. To pozwoli Ci lepiej dopasować Twoją listę filtrów w AdGuard Home.
Podsumowanie: Zalety i wady
Stworzenie takiego systemu to inwestycja czasu, ale korzyści są nie do przecenienia.
Zalety:
Kompletna i ujednolicona ochrona: Blokowanie reklam i zagrożeń na wszystkich urządzeniach, w każdej sieci, przy minimalnej konfiguracji.
Centralne zarządzanie: Jedno miejsce do konfiguracji reguł dla całego domu.
Zwiększona prywatność i bezpieczeństwo: Ograniczenie śledzenia i szyfrowanie ruchu w publicznych sieciach.
Wydajność: Szybsze ładowanie stron i mniejsze zużycie danych mobilnych.
Wady:
Wymóg posiadania serwera: Konieczność działania 24/7 urządzenia takiego jak TrueNAS.
Wstępna konfiguracja: Wymaga podstawowej wiedzy technicznej.
Zależność od domowego łącza: Prędkość odpowiedzi DNS i przepustowość (w trybie Exit Node) poza domem zależy od szybkości wysyłania danych (upload) Twojego internetu.
Połączenie AdGuard Home i Tailscale to potężne narzędzie dla każdego, kto ceni sobie czysty, szybki i bezpieczny internet. To manifest cyfrowej niezależności, który oddaje kontrolę z rąk korporacji reklamowych z powrotem w ręce użytkownika.
W dzisiejszym cyfrowym świecie, gdzie praca zdalna i rozproszona infrastruktura stają się normą, bezpieczny dostęp do zasobów sieciowych jest nie tyle luksusem, co absolutną koniecznością. Wirtualne Sieci Prywatne (VPN) od dawna stanowią odpowiedź na te potrzeby, jednak tradycyjne rozwiązania bywają skomplikowane i powolne. Na scenę wkracza WireGuard – nowoczesny protokół VPN, który rewolucjonizuje sposób, w jaki myślimy o bezpiecznych tunelach. W połączeniu z potęgą systemu TrueNAS Scale i prostotą aplikacji WG-Easy, możemy stworzyć niezwykle wydajne i łatwe w zarządzaniu rozwiązanie.
Ten artykuł to kompleksowy przewodnik, który krok po kroku przeprowadzi Cię przez proces konfiguracji bezpiecznego tunelu VPN WireGuard. Połączymy serwer TrueNAS Scale, działający w Twojej sieci domowej lub firmowej, z flotą publicznych serwerów VPS. Naszym celem jest stworzenie inteligentnej komunikacji typu „split-tunnel”, dzięki której tylko niezbędny ruch będzie kierowany przez VPN, zachowując maksymalną wydajność połączenia internetowego.
Czym Jest WireGuard i Dlaczego Zmienia Zasady Gry?
Zanim zagłębimy się w techniczną konfigurację, warto zrozumieć, dlaczego WireGuard zyskuje tak ogromną popularność. Zaprojektowany od podstaw z myślą o prostocie i wydajności, stanowi on powiew świeżości w porównaniu do starszych, ociężałych protokołów jak OpenVPN czy IPsec.
Główne zalety WireGuard to:
Minimalizm i Prostota: Kod źródłowy WireGuard liczy zaledwie kilka tysięcy linii, w przeciwieństwie do setek tysięcy w przypadku konkurencji. To nie tylko ułatwia audyt bezpieczeństwa, ale także znacząco redukuje potencjalną powierzchnię ataku.
Niezrównana Wydajność: Dzięki działaniu na poziomie jądra systemu operacyjnego i wykorzystaniu nowoczesnej kryptografii, WireGuard oferuje znacznie wyższe prędkości transferu i niższe opóźnienia. W praktyce oznacza to płynniejszy dostęp do plików i usług.
Nowoczesna Kryptografia: WireGuard korzysta z najnowszych, sprawdzonych algorytmów kryptograficznych, takich jak ChaCha20, Poly1305, Curve25519, BLAKE2s i SipHash24, zapewniając najwyższy poziom bezpieczeństwa.
Łatwość Konfiguracji: Model oparty na wymianie kluczy publicznych, podobnie jak w przypadku SSH, jest znacznie bardziej intuicyjny niż skomplikowane zarządzanie certyfikatami w innych systemach VPN.
Potęga TrueNAS Scale i Wygoda WG-Easy
TrueNAS Scale to nowoczesny, darmowy system operacyjny do budowy serwerów plików (NAS), oparty na solidnych fundamentach Linuksa. Jego największą zaletą jest wsparcie dla aplikacji w kontenerach (Docker/Kubernetes), co pozwala na łatwe rozszerzanie jego funkcjonalności. Uruchomienie serwera WireGuard bezpośrednio na urządzeniu, które i tak działa 24/7 i przechowuje nasze dane, jest rozwiązaniem niezwykle efektywnym energetycznie i kosztowo.
Z pomocą przychodzi aplikacja WG-Easy – graficzny interfejs użytkownika, który transformuje proces zarządzania serwerem WireGuard z edycji plików konfiguracyjnych w terminalu w proste klikanie w przeglądarce. Dzięki WG-Easy możemy w kilka chwil tworzyć profile dla nowych urządzeń, generować dla nich konfiguracje i monitorować stan połączeń.
Krok 1: Projektowanie Architektury Sieci – Fundament Stabilności
Zanim uruchomimy jakiekolwiek oprogramowanie, musimy stworzyć solidny plan. Prawidłowe zaprojektowanie topologii i adresacji IP jest kluczem do stabilnego i bezpiecznego rozwiązania.
Model „Hub-and-Spoke”: Twoje Centrum Dowodzenia
Nasza sieć będzie działać w oparciu o model „hub-and-spoke” (piasta i szprychy).
Hub (Piasta): Centralnym punktem (serwerem) naszej sieci będzie TrueNAS Scale. To do niego będą łączyć się wszystkie inne urządzenia.
Spokes (Szprychy): Nasze serwery VPS będą klientami (peerami), czyli „szprychami” podłączonymi do centralnej piasty.
W tym modelu cała komunikacja domyślnie przepływa przez serwer TrueNAS. Oznacza to, że aby jeden VPS mógł skomunikować się z drugim, ruch ten musi przejść przez centralny hub.
Aby uniknąć chaosu, tworzymy dedykowaną podsieć dla naszej wirtualnej sieci. W tym poradniku użyjemy 10.8.0.0/24.
Rola Urządzenia
Identyfikator Hosta
Adres IP w VPN
Serwer (Hub)
TrueNAS-Scale
10.8.0.1
Klient 1 (Spoke)
VPS1
10.8.0.2
Klient 2 (Spoke)
VPS2
10.8.0.3
Klient 3 (Spoke)
VPS3
10.8.0.4
Fundamentalna Zasada: Jeden Klient, Jedna Tożsamość
Pojawia się kusząca myśl: czy można stworzyć jeden plik konfiguracyjny dla wszystkich serwerów VPS? Absolutnie nie. Byłoby to złamanie fundamentalnej zasady bezpieczeństwa WireGuard. Tożsamość w tej sieci nie jest oparta na loginie i haśle, ale na unikalnej parze kluczy kryptograficznych. Użycie tej samej konfiguracji na wielu maszynach jest jak danie tego samego klucza do domu wielu różnym osobom – serwer nie byłby w stanie ich odróżnić, co doprowadziłoby do chaosu w routingu i załamania bezpieczeństwa.
Krok 2: Warunek Wstępny – Otwarcie Bramy na Świat
Najczęstsza pułapka przy konfiguracji domowego serwera to zapominanie o routerze. Twój serwer TrueNAS znajduje się w sieci lokalnej (LAN) i ma prywatny adres IP (np. 192.168.0.13), co czyni go niewidocznym z internetu. Aby serwery VPS mogły się z nim połączyć, musisz skonfigurować na swoim routerze przekierowanie portów (port forwarding).
Musisz utworzyć regułę, która pakiety przychodzące z internetu na konkretny port skieruje prosto do Twojego serwera TrueNAS.
Protokół:UDP (WireGuard używa wyłącznie UDP)
Port Zewnętrzny:51820 (standardowy port WireGuard)
Adres IP Wewnętrzny: Adres IP Twojego serwera TrueNAS w sieci LAN
Port Wewnętrzny:51820
Bez tej reguły Twój serwer VPN nigdy nie zadziała.
Krok 3: Konfiguracja Huba – Uruchamiamy Serwer na TrueNAS
Uruchom aplikację WG-Easy na swoim serwerze TrueNAS. Proces konfiguracji sprowadza się do utworzenia osobnego profilu dla każdego klienta (każdego serwera VPS).
Kliknij „New” i wypełnij formularz dla pierwszego VPS-a, zwracając szczególną uwagę na poniższe pola:
Nazwa Pola w WG-Easy
Przykładowa Wartość (dla VPS1)
Wyjaśnienie
Name
VPS1-Public
Czytelna etykieta, która pomoże Ci zidentyfikować klienta.
IPv4 Address
10.8.0.2
Unikalny adres IP dla tego VPS-a wewnątrz sieci VPN, zgodnie z naszym planem.
Allowed IPs
192.168.0.0/24, 10.8.0.0/24
To jest serce konfiguracji „split-tunnel”. Mówi klientowi (VPS), że tylko ruch do Twojej sieci lokalnej (LAN) oraz do innych urządzeń w sieci VPN ma być przesyłany przez tunel. Cała reszta ruchu (np. do Google) poleci standardową drogą.
Server Allowed IPs
10.8.0.2/32
Krytyczne ustawienie bezpieczeństwa. Informuje serwer TrueNAS, że od tego konkretnego klienta ma akceptować pakiety tylko z jego przypisanego adresu IP. Maska /32 zapobiega podszywaniu się.
Persistent Keepalive
25
Instrukcja dla klienta, aby co 25 sekund wysyłał mały pakiet „podtrzymujący życie”. Jest to niezbędne, aby połączenie nie zostało zerwane przez routery i firewalle po drodze.
Po wypełnieniu pól zapisz konfigurację. Powtórz ten proces dla każdego kolejnego serwera VPS, pamiętając o nadaniu im kolejnych adresów IP (10.8.0.3, 10.8.0.4 itd.).
Po zapisaniu profilu, WG-Easy wygeneruje dla Ciebie plik konfiguracyjny .conf. Traktuj ten plik jak hasło – zawiera on klucz prywatny klienta! Pobierz go i przygotuj do wgrania na serwer VPS.
Krok 4: Konfiguracja Szprych – Aktywacja Klientów na Serwerach VPS
Teraz czas ożywić nasze „szprychy”. Zakładając, że Twoje serwery VPS działają na Linuksie (np. Debian/Ubuntu), proces jest bardzo prosty.
Wgraj i zabezpiecz plik konfiguracyjny:Skopiuj pobrany wcześniej plik wg0.conf na serwer VPS do katalogu /etc/wireguard/. Następnie zmień jego uprawnienia, aby tylko administrator mógł go odczytać:# Na serwerze VPS: sudo mv /sciezka/do/pliku/wg0.conf /etc/wireguard/wg0.conf sudo chmod 600 /etc/wireguard/wg0.conf
Uruchom tunel:Użyj prostego polecenia, aby aktywować połączenie. Nazwa interfejsu (wg0) pochodzi od nazwy pliku konfiguracyjnego.sudo wg-quick up wg0
Zapewnij automatyczny start:Aby tunel VPN uruchamiał się automatycznie po każdym restarcie serwera, włącz odpowiednią usługę systemową:sudo systemctl enable wg-quick@wg0.service
Powtórz te kroki na każdym serwerze VPS, używając unikalnego pliku konfiguracyjnego wygenerowanego dla każdego z nich.
Krok 5: Weryfikacja i Diagnostyka – Sprawdzamy, Czy Wszystko Działa
Po zakończeniu konfiguracji czas na ostateczny test.
Kontrola Stanu Połączenia
Zarówno na serwerze TrueNAS, jak i na każdym VPS, wykonaj polecenie:
sudo wg show
Poszukaj w wyniku dwóch kluczowych informacji:
latest handshake: Powinien pokazywać niedawny czas (np. „kilka sekund temu”). To dowód, że klient i serwer pomyślnie się połączyły.
transfer: Wartości received i sent większe od zera oznaczają, że dane faktycznie płyną przez tunel.
Ostateczny Test: Walidacja „Split-Tunnel”
To jest test, który potwierdzi, że osiągnęliśmy nasz główny cel. Zaloguj się na jeden z serwerów VPS i wykonaj następujące testy:
Test łączności wewnątrz VPN: Spróbuj spingować serwer TrueNAS po jego adresach w sieci VPN i LAN.ping 10.8.0.1 # Adres VPN serwera TrueNAS ping 192.168.0.13 # Adres LAN serwera TrueNAS (użyj swojego) Jeśli otrzymujesz odpowiedzi, oznacza to, że ruch do Twojej sieci lokalnej jest poprawnie kierowany przez tunel.
Test ścieżki do internetu: Użyj narzędzia traceroute, aby sprawdzić, jaką drogą pakiety wędrują do publicznej strony.traceroute google.com Wynik tego polecenia jest kluczowy. Pierwszy „przeskok” (hop) na trasie musi być adresem bramy domyślnej Twojego dostawcy hostingu VPS, a nie adresem Twojego serwera VPN (10.8.0.1). Jeśli tak jest – gratulacje! Twoja konfiguracja „split-tunnel” działa idealnie.
Rozwiązywanie Typowych Problemów
Brak „handshake”: Najczęstsza przyczyna to problem z połączeniem. Sprawdź dokładnie konfigurację przekierowania portu UDP 51820 na routerze oraz wszelkie firewalle po drodze (na TrueNAS, na VPS i w panelu dostawcy chmury).
Jest „handshake”, ale ping nie działa: Zazwyczaj problem leży w konfiguracji AllowedIPs. Upewnij się, że serwer ma wpisany poprawny adres VPN klienta (np. 10.8.0.2/32), a klient ma w swojej konfiguracji sieci, do których próbuje się dostać (np. 192.168.0.0/24).
Cały ruch przechodzi przez VPN (full-tunnel): Oznacza to, że w pliku konfiguracyjnym klienta, w sekcji [Peer], pole AllowedIPs jest ustawione na 0.0.0.0/0. Popraw to ustawienie w interfejsie WG-Easy, pobierz nowy plik konfiguracyjny i zaktualizuj go na kliencie.
Stworzenie własnego, bezpiecznego i wydajnego serwera VPN na bazie TrueNAS Scale i WireGuard jest w zasięgu ręki. To potężne rozwiązanie, które nie tylko zwiększa bezpieczeństwo, ale także daje pełną kontrolę nad Twoją infrastrukturą sieciową.
Zanim zaczniemy, kluczowe jest zrozumienie, jak nasza sieć będzie zorganizowana. Użyjemy modelu „Hub-and-Spoke” (piasta i szprychy). Twój serwer TrueNAS będzie centralnym punktem (Hub), a wszystkie serwery VPS będą do niego podłączonymi klientami (Spokes). Ta sekcja wyjaśnia topologię sieci i plan adresacji IP, które są fundamentem całej konfiguracji.
Diagram Topologii Sieci
🖥️
TrueNAS (Hub)
90.205.207.85
10.8.0.1
☁️
VPS 1 (Spoke)
94.72.111.10
10.8.0.2
☁️
VPS 2 (Spoke)
149.102.155.104
10.8.0.3
☁️
VPS 3 (Spoke)
158.220.88.64
10.8.0.4
Plan Adresacji IP
Dla naszej sieci VPN użyjemy dedykowanej podsieci 10.8.0.0/24. Poniżej znajduje się szczegółowy plan alokacji adresów.
Rola Urządzenia
Identyfikator
Adres IP w VPN
Serwer (Hub)
TrueNAS Scale
10.8.0.1
Klient 1 (Spoke)
VPS1 (94.72.111.10)
10.8.0.2
Klient 2 (Spoke)
VPS2 (149.102.155.104)
10.8.0.3
Klient 3 (Spoke)
VPS3 (158.220.88.64)
10.8.0.4
Ważna zasada: Jeden Peer, Jedna Konfiguracja
Absolutnie kluczowe jest, aby każde urządzenie (każdy VPS) miało swoją własną, unikalną konfigurację. Użycie tego samego pliku konfiguracyjnego dla wielu klientów jest sprzeczne z modelem bezpieczeństwa WireGuard i doprowadzi do awarii sieci.
2. Warunki Wstępne: Przekierowanie Portów
To najważniejszy krok, od którego zależy powodzenie całej operacji. Twój serwer TrueNAS znajduje się w sieci lokalnej (LAN), za routerem. Aby serwery VPS z publicznego internetu mogły się z nim połączyć, musisz skonfigurować na swoim routerze regułę przekierowania portów (Port Forwarding). Bez tego połączenie nigdy nie zostanie nawiązane.
Checklista Konfiguracji Routera
Zaloguj się do panelu administracyjnego swojego routera i utwórz nową regułę przekierowania portów z następującymi parametrami:
Protokół:UDP (WireGuard używa wyłącznie UDP)
Port Zewnętrzny (Publiczny):51820
Adres IP Wewnętrzny (Docelowy):192.168.0.13 (adres IP Twojego TrueNAS)
Port Wewnętrzny:51820
3. Konfiguracja Serwera (WG-Easy)
Teraz skonfigurujemy serwer WireGuard na Twoim TrueNAS za pomocą aplikacji WG-Easy. Najważniejszym zadaniem jest utworzenie osobnego profilu dla każdego serwera VPS. Poniższy interaktywny symulator pokaże Ci dokładnie, jakie wartości wpisać dla każdego z klientów, aby uniknąć pomyłek.
Wybierz VPS, aby zobaczyć jego konfigurację:
Symulator Konfiguracji Klienta w WG-Easy
To pole definiuje, z jakich adresów IP serwer będzie akceptował pakiety od tego klienta. Jest to kluczowe zabezpieczenie.
To pole zostanie wpisane w pliku konfiguracyjnym klienta i poinformuje go, jaki ruch ma kierować przez tunel VPN (split-tunneling).
Niezbędne do utrzymania połączenia przez routery NAT.
Po zapisaniu konfiguracji dla każdego klienta w WG-Easy, pobierz wygenerowany plik `.conf`. Będzie on potrzebny w następnym kroku.
4. Konfiguracja Klienta (VPS)
Gdy serwer jest gotowy, czas na konfigurację klientów, czyli Twoich serwerów VPS. Poniższe kroki należy wykonać na każdym VPS z osobna, używając unikalnego pliku konfiguracyjnego pobranego z WG-Easy.
Zastąp wg0.conf nazwą pliku pobranego z WG-Easy i user@vps_ip swoimi danymi logowania.
# Na Twoim lokalnym komputerze:
scp wg0.conf user@vps_ip:/tmp/wg0.conf# Na serwerze VPS:
sudo mv /tmp/wg0.conf /etc/wireguard/wg0.conf
sudo chmod 600 /etc/wireguard/wg0.conf
Skopiowano!
Krok 3: Uruchom i zautomatyzuj usługę
Ta komenda uruchomi tunel i sprawi, że będzie on automatycznie aktywowany po każdym restarcie serwera.
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0.service
Skopiowano!
Pamiętaj, aby powtórzyć kroki 2 i 3 dla każdego serwera VPS, używając odpowiedniego dla niego pliku konfiguracyjnego.
5. Weryfikacja Połączenia
Po zakończeniu konfiguracji po obu stronach, musimy upewnić się, że wszystko działa zgodnie z planem. Użyjemy do tego kilku prostych poleceń diagnostycznych na jednym z Twoich serwerów VPS.
Test 1: Sprawdź status połączenia
Wykonaj polecenie wg show. Poszukaj linii latest handshake. Powinna pokazywać niedawny czas, co jest dowodem na pomyślne nawiązanie połączenia.
Spróbuj wysłać ping do serwera TrueNAS na jego adresy w sieci VPN i LAN. Oba polecenia powinny zakończyć się sukcesem.
ping -c 4 10.8.0.1
ping -c 4 192.168.0.13
Skopiowano!
Test 3: Zweryfikuj „Split-Tunnel”
To ostateczny test. Użyj polecenia traceroute, aby sprawdzić ścieżkę do publicznego internetu. Pierwszy przeskok (hop) musi być bramą Twojego dostawcy hostingu, a **nie** adresem VPN Twojego serwera (10.8.0.1). To potwierdza, że tylko ruch do Twojej sieci LAN jest kierowany przez tunel.
Sekcja 1: Wprowadzenie: Upraszczanie Dostępu do Domowego Laboratorium za Pomocą Nginx Proxy Manager na TrueNAS Scale
Współczesne domowe laboratoria (home labs) ewoluowały z prostych konfiguracji do złożonych ekosystemów, w których działają dziesiątki usług, od serwerów multimediów takich jak Plex czy Jellyfin, przez systemy automatyki domowej jak Home Assistant, po osobiste chmury i menedżery haseł. Zarządzanie dostępem do każdej z tych usług, z których każda operuje na unikalnej kombinacji adresu IP i numeru portu, szybko staje się niepraktyczne, niewygodne i, co najważniejsze, niebezpieczne. Ekspozycja wielu portów na świat zewnętrzny zwiększa powierzchnię ataku i komplikuje utrzymanie spójnej polityki bezpieczeństwa.
Rozwiązaniem tego problemu, stosowanym od lat w środowiskach korporacyjnych, jest implementacja centralnej „bramy” lub „pojedynczego punktu wejścia” dla całego ruchu przychodzącego. W terminologii sieciowej rolę tę pełni odwrotne proxy (reverse proxy). Jest to serwer pośredniczący, który odbiera wszystkie żądania od klientów, a następnie, na podstawie nazwy domenowej, kieruje je do odpowiedniej usługi działającej w sieci wewnętrznej. Taka architektura nie tylko upraszcza dostęp, pozwalając na używanie łatwych do zapamiętania adresów (np.
jellyfin.mojadomena.pl zamiast 192.168.1.50:8096), ale także stanowi kluczowy element strategii bezpieczeństwa.
W tym kontekście dwie technologie zyskują na szczególnej popularności wśród entuzjastów: TrueNAS Scale i Nginx Proxy Manager. TrueNAS Scale, bazujący na systemie Debian Linux, przekształcił tradycyjne urządzenie NAS (Network Attached Storage) w potężną, hiperkonwergentną platformę (HCI), zdolną do natywnego uruchamiania aplikacji w kontenerach i maszyn wirtualnych. Z kolei Nginx Proxy Manager (NPM) to narzędzie, które demokratyzuje technologię odwrotnego proxy. Nakłada ono przyjazny dla użytkownika, graficzny interfejs na potężny, ale skomplikowany w konfiguracji serwer Nginx, czyniąc zaawansowane funkcje, takie jak automatyczne zarządzanie certyfikatami SSL, dostępnymi bez konieczności edycji plików konfiguracyjnych z linii poleceń.
Niniejszy artykuł stanowi kompleksowe omówienie procesu wdrożenia Nginx Proxy Manager na platformie TrueNAS Scale. Celem jest nie tylko przedstawienie instrukcji „jak to zrobić”, ale przede wszystkim wyjaśnienie „dlaczego” poszczególne kroki są niezbędne. Analiza rozpocznie się od dogłębnego omówienia obu technologii i ich wzajemnych interakcji. Następnie, przeprowadzony zostanie szczegółowy proces instalacji, z uwzględnieniem specyficznych dla platformy wyzwań i ich rozwiązań, w tym znanego problemu z zawieszaniem się aplikacji w stanie „Deploying”. W dalszej części, na praktycznym przykładzie serwera mediów Jellyfin, zademonstrowana zostanie konfiguracja hosta proxy wraz z zaawansowanymi opcjami bezpieczeństwa. Raport zakończy się podsumowaniem korzyści i wskazaniem dalszych kroków w celu pełnego wykorzystania potencjału tego potężnego duetu.
Zrozumienie fundamentalnych zasad działania Nginx Proxy Manager oraz architektury, w której jest on wdrażany – czyli systemu aplikacji TrueNAS Scale – jest kluczowe dla pomyślnej instalacji, efektywnej konfiguracji i, co najważniejsze, skutecznego diagnozowania ewentualnych problemów. Te dwa komponenty, choć zaprojektowane do współpracy, posiadają własną, unikalną specyfikę, której ignorowanie jest najczęstszą przyczyną niepowodzeń.
U podstaw funkcjonalności NPM leży koncepcja odwrotnego proxy, która jest fundamentalna dla nowoczesnej architektury sieciowej. Zrozumienie jej działania pozwala docenić wartość, jaką wnosi NPM.
Definicja i Funkcje Odwrotnego Proxy
Odwrotne proxy to serwer, który działa jako pośrednik po stronie serwera. W przeciwieństwie do tradycyjnego (forward) proxy, które działa w imieniu klienta, odwrotne proxy działa w imieniu serwera (lub grupy serwerów). Odbiera ono żądania od klientów z Internetu i przekazuje je do odpowiednich serwerów w sieci lokalnej, które faktycznie przechowują treść. Dla klienta zewnętrznego odwrotne proxy jest jedynym widocznym punktem kontaktowym; wewnętrzna struktura sieci pozostaje ukryta.
Kluczowe korzyści płynące z tego rozwiązania to:
Bezpieczeństwo: Ukrywanie topologii sieci wewnętrznej i rzeczywistych adresów IP serwerów aplikacyjnych znacząco utrudnia bezpośrednie ataki na te usługi.
Centralizacja zarządzania SSL/TLS (SSL Termination): Zamiast konfigurować certyfikaty SSL na każdym z kilkunastu serwerów aplikacyjnych, można zarządzać nimi w jednym miejscu – na odwrotnym proxy. Szyfrowanie i deszyfrowanie ruchu (SSL Termination) odbywa się na serwerze proxy, co odciąża serwery backendowe.
Równoważenie obciążenia (Load Balancing): W bardziej zaawansowanych scenariuszach, odwrotne proxy może rozdzielać ruch pomiędzy wiele identycznych serwerów aplikacyjnych, zapewniając wysoką dostępność i skalowalność usługi.
Uproszczony dostęp: Umożliwia dostęp do wielu usług za pośrednictwem standardowych portów 80 (HTTP) i 443 (HTTPS) przy użyciu różnych subdomen, eliminując potrzebę zapamiętywania i otwierania wielu portów.
NPM jako Warstwa Zarządzania
Należy podkreślić, że Nginx Proxy Manager nie jest nowym, konkurencyjnym dla Nginx serwerem WWW. Jest to aplikacja zarządzająca, zbudowana na bazie otwartego kodu źródłowego Nginx, która pełni rolę graficznej nakładki (GUI) na jego funkcje odwrotnego proxy. Zamiast ręcznie edytować złożone pliki konfiguracyjne Nginx, użytkownik może wykonywać te same operacje za pomocą kilku kliknięć w intuicyjnym interfejsie webowym.
Główne cechy, które przyczyniły się do popularności NPM, to:
Graficzny interfejs użytkownika: Oparty na frameworku Tabler, interfejs jest przejrzysty i łatwy w obsłudze, co drastycznie obniża próg wejścia dla użytkowników niebędących ekspertami od Nginx.
Automatyzacja SSL: Wbudowana integracja z Let’s Encrypt pozwala na automatyczne, darmowe generowanie certyfikatów SSL oraz ich cykliczne odnawianie. To jedna z najważniejszych i najbardziej docenianych funkcji.
Wdrożenie oparte na Dockerze: NPM jest dystrybuowany jako gotowy do użycia obraz Docker, co sprawia, że jego instalacja na dowolnej platformie wspierającej kontenery jest niezwykle prosta.
Zarządzanie dostępem: Narzędzie oferuje funkcje tworzenia list kontroli dostępu (Access Control Lists, ACL) oraz zarządzania użytkownikami z różnymi poziomami uprawnień, co pozwala na granularne kontrolowanie dostępu do poszczególnych usług.
Porównanie: NPM vs. Tradycyjny Nginx
Wybór między Nginx Proxy Manager a ręczną konfiguracją Nginx to klasyczny kompromis między prostotą a elastycznością. Poniższa tabela zestawia kluczowe różnice między tymi dwoma podejściami.
Tabela 1: Nginx Proxy Manager vs. Tradycyjny Nginx
Tabela ta jasno pokazuje, że NPM jest narzędziem strategicznie dopasowanym do potrzeb docelowej publiczności – entuzjastów domowych laboratoriów. Użytkownicy ci świadomie rezygnują z części zaawansowanej elastyczności na rzecz ogromnych korzyści w postaci prostoty obsługi i szybkości wdrożenia.
Podsekcja 2.2: Architektura Aplikacji w TrueNAS Scale
Aby zrozumieć, dlaczego instalacja NPM na TrueNAS Scale może napotkać specyficzne problemy, konieczne jest poznanie sposobu, w jaki ta platforma zarządza aplikacjami. Nie jest to bowiem typowe środowisko Docker.
Fundamenty: Linux i Hiperkonwergencja
Kluczową zmianą architektoniczną w TrueNAS Scale w stosunku do jego poprzednika, TrueNAS CORE, było przejście z systemu operacyjnego FreeBSD na Debiana, dystrybucję Linuksa. Ta decyzja otworzyła drzwi do natywnego wsparcia dla technologii, które zdominowały świat chmury i konteneryzacji, przede wszystkim dla kontenerów Docker i wirtualizacji opartej na KVM. Dzięki temu TrueNAS Scale stał się platformą hiperkonwergentną, łączącą w sobie funkcje pamięci masowej, obliczeń i wirtualizacji.
System Aplikacji
Aplikacje są dystrybuowane za pośrednictwem katalogów (Catalogs), które działają na zasadzie repozytoriów. Te katalogi są z kolei podzielone na tzw. „trainy” (pociągi), które określają stabilność i źródło aplikacji:
stable: Domyślny „train” dla oficjalnych, przetestowanych przez iXsystems aplikacji.
enterprise: Aplikacje zweryfikowane pod kątem zastosowań biznesowych.
community: Aplikacje tworzone i utrzymywane przez społeczność. To tutaj domyślnie znajduje się Nginx Proxy Manager.
test: Aplikacje w fazie deweloperskiej.
Przynależność NPM do katalogu community oznacza, że choć jest on łatwo dostępny, jego wsparcie techniczne opiera się na społeczności, a nie bezpośrednio na producencie TrueNAS.
Zarządzanie Pamięcią Masową dla Aplikacji
Zanim jakakolwiek aplikacja zostanie zainstalowana, TrueNAS Scale wymaga od użytkownika wskazania puli ZFS, która będzie dedykowana do przechowywania danych aplikacji. Kiedy aplikacja jest instalowana, jej dane (konfiguracja, bazy danych itp.) muszą być gdzieś zapisane w sposób trwały. TrueNAS Scale oferuje tu kilka opcji, ale domyślną i rekomendowaną dla prostoty jest
ixVolume.
ixVolume to specjalny typ woluminu, który automatycznie tworzy dedykowany, zarządzany przez system zbiór danych (ZFS dataset) wewnątrz wybranej puli aplikacji. Ten zbiór danych jest odizolowany, a system nadaje mu bardzo specyficzne uprawnienia. Domyślnie, właścicielem tego zbioru danych staje się użytkownik systemowy
apps o identyfikatorze (UID) 568 i grupie (GID) 568. Kontener uruchomionej aplikacji również działa z uprawnieniami tego właśnie użytkownika.
To jest sedno problemu. Standardowy obraz Docker dla Nginx Proxy Manager zawiera skrypty startowe (np. te pochodzące z Certbota, narzędzia do obsługi certyfikatów), które przy pierwszym uruchomieniu próbują zmienić właściciela (chown) katalogów z danymi, takich jak /data czy /etc/letsencrypt, aby upewnić się, że mają do nich odpowiednie uprawnienia. Kiedy kontener NPM startuje wewnątrz sandboksowego środowiska aplikacji TrueNAS, jego skrypt startowy, działając jako nieuprzywilejowany użytkownik apps (UID 568), próbuje wykonać operację chown na woluminie ixVolume. Operacja ta kończy się niepowodzeniem, ponieważ użytkownik apps nie jest właścicielem nadrzędnych katalogów i nie ma uprawnień do zmiany właściciela plików na woluminie zarządzanym przez K3s. Ten błąd uprawnień powoduje, że skrypt startowy kontenera zatrzymuje się, a sam kontener nigdy nie osiąga stanu „uruchomiony”, co w interfejsie TrueNAS Scale objawia się jako niekończący się stan „Deploying”.
Sekcja 3: Instalacja i Konfiguracja Nginx Proxy Manager na TrueNAS Scale
Proces instalacji Nginx Proxy Manager na TrueNAS Scale jest prosty, pod warunkiem zwrócenia uwagi na kilka kluczowych parametrów konfiguracyjnych, które są często źródłem problemów. Poniższa instrukcja krok po kroku przeprowadzi przez ten proces, podkreślając krytyczne decyzje, które należy podjąć.
Krok 1: Przygotowanie TrueNAS Scale
Przed przystąpieniem do instalacji jakiejkolwiek aplikacji, należy upewnić się, że usługa aplikacji w TrueNAS Scale jest poprawnie skonfigurowana.
Należy zalogować się do interfejsu webowego TrueNAS Scale.
Przejść do sekcji Apps.
Jeśli usługa nie jest jeszcze skonfigurowana, system wyświetli monit o wybranie puli ZFS, która będzie używana do przechowywania danych wszystkich aplikacji. Należy wybrać odpowiednią pulę i zapisać ustawienia. Po chwili status usługi powinien zmienić się na „Running”.
Krok 2: Znalezienie Aplikacji
Nginx Proxy Manager jest dostępny w oficjalnym katalogu społecznościowym.
W sekcji Apps należy przejść do zakładki Discover.
W polu wyszukiwania wpisać nginx-proxy-manager.
W wynikach powinna pojawić się aplikacja. Należy upewnić się, że pochodzi z katalogu community.
Kliknąć przycisk Install, aby przejść do ekranu konfiguracji.
Krok 3: Kluczowe Parametry Konfiguracji
Ekran instalacji przedstawia wiele opcji. Większość z nich można pozostawić z domyślnymi wartościami, jednak kilka sekcji wymaga szczególnej uwagi.
Application Name
W polu Application Name należy wpisać nazwę dla instalacji, na przykład nginx-proxy-manager. Nazwa ta będzie używana do identyfikacji aplikacji w systemie.
Network Configuration (Konfiguracja Sieci)
To jest najważniejszy i najbardziej problematyczny etap konfiguracji. Domyślnie, interfejs zarządzania TrueNAS Scale używa standardowych portów webowych: 80 dla HTTP i 443 dla HTTPS. Ponieważ Nginx Proxy Manager, aby działać jako brama dla całego ruchu webowego, również powinien nasłuchiwać na tych portach, dochodzi do bezpośredniego konfliktu. Istnieją dwie główne strategie rozwiązania tego problemu, każda z własnym zestawem kompromisów.
Strategia A (Rekomendowana): Zmiana portów TrueNAS ScaleTa metoda jest uważana za „najczystszą” z perspektywy NPM, ponieważ pozwala mu działać w sposób, do jakiego został zaprojektowany.
Należy anulować instalację NPM i przejść do System Settings -> General.W sekcji GUI SSL/TLS Certificate, zmienić Web Interface HTTP Port na niestandardowy, np. 880, oraz Web Interface HTTPS Port na np. 8443.Zapisać zmiany. Od tego momentu dostęp do interfejsu TrueNAS Scale będzie możliwy pod adresem http://<adres-ip-truenas>:880 lub https://<adres-ip-truenas>:8443.Powrócić do instalacji NPM i w sekcji Network Configuration przypisać HTTP Port do 80 i HTTPS Port do 443.
Zalety: NPM działa na standardowych portach, co upraszcza konfigurację i eliminuje potrzebę translacji portów na routerze.
Wady: Zmienia fundamentalny sposób dostępu do samego NAS-a. W rzadkich przypadkach, jak odnotowano na forach, może to powodować nieprzewidziane skutki uboczne, takie jak problemy z połączeniami SSH między systemami TrueNAS.
Strategia B (Alternatywna): Użycie wysokich portów dla NPMTa metoda jest mniej inwazyjna dla konfiguracji samego TrueNAS, ale przenosi złożoność na poziom routera.
W konfiguracji NPM, w sekcji Network Configuration, należy pozostawić porty TrueNAS bez zmian i przypisać NPM wysokie, nieużywane porty, np. 30080 dla HTTP i 30443 dla HTTPS. TrueNAS Scale rezerwuje porty poniżej 9000 dla systemu, więc należy wybrać wartości powyżej tego progu.Po zainstalowaniu NPM, należy skonfigurować przekierowanie portów (port forwarding) na routerze brzegowym, tak aby ruch przychodzący z internetu na port 80 był kierowany na port 30080 adresu IP TrueNAS, a ruch z portu 443 na port 30443.
Zalety: Konfiguracja TrueNAS Scale pozostaje nienaruszona.
Wady: Wymaga dodatkowej konfiguracji na routerze. Każda usługa proxy będzie wymagała jawnego przekierowania, co może być mylące.
Idealnym rozwiązaniem byłoby przypisanie NPM dedykowanego adresu IP w sieci lokalnej (np. za pomocą technologii macvlan), co całkowicie wyeliminowałoby konflikt portów. Niestety, interfejs graficzny instalatora aplikacji w TrueNAS Scale nie udostępnia tej opcji w prosty sposób.
Storage Configuration (Konfiguracja Pamięci)
Aby zapewnić, że konfiguracja NPM, w tym utworzone hosty proxy i certyfikaty SSL, przetrwa aktualizacje lub ponowne wdrożenie aplikacji, należy skonfigurować trwałą pamięć masową.
W sekcji Storage Configuration należy skonfigurować dwa woluminy.
Dla Nginx Proxy Manager Data Storage (ścieżka /data) oraz Nginx Proxy Manager Certs Storage (ścieżka /etc/letsencrypt), należy wybrać typ ixVolume.
Pozostawienie tych ustawień zapewni, że TrueNAS utworzy dedykowane zbiory danych ZFS dla konfiguracji i certyfikatów, które będą niezależne od samego kontenera aplikacji.
Krok 4: Pierwsze Uruchomienie i Zabezpieczenie
Po skonfigurowaniu powyższych parametrów (i ewentualnym zastosowaniu poprawek z Sekcji 4), należy kliknąć Install. Po kilku chwilach aplikacja powinna przejść w stan „Running”.
Dostęp do interfejsu NPM jest możliwy pod adresem http://<adres-ip-truenas>:PORT, gdzie PORT to port WebUI skonfigurowany podczas instalacji (domyślnie 81 wewnątrz kontenera, ale mapowany na wyższy port, np. 30020, jeśli nie zmieniono portów TrueNAS).
Domyślne poświadczenia logowania to:
Email:admin@example.com
Password:changeme
Po pierwszym zalogowaniu system natychmiast poprosi o zmianę tych danych. Jest to absolutnie kluczowy krok bezpieczeństwa i należy go wykonać niezwłocznie.
Sekcja 4: Rozwiązywanie Problemu „Deploying”: Diagnostyka i Naprawa Błędów Instalacji
Jednym z najczęściej napotykanych i najbardziej frustrujących problemów podczas wdrażania Nginx Proxy Manager na TrueNAS Scale jest sytuacja, w której aplikacja po instalacji na stałe zawiesza się w stanie „Deploying”. Użytkownik czeka, odświeża stronę, ale status nigdy nie zmienia się na „Running”. Podgląd logów kontenera często nie dostarcza jednoznacznej odpowiedzi. Ten problem nie jest błędem samego NPM, lecz, jak zdiagnozowano wcześniej, symptomem fundamentalnego konfliktu uprawnień między generycznym kontenerem a specyficznym, zabezpieczonym środowiskiem w TrueNAS Scale.
Opis Problemu i Główna Przyczyna
Po kliknięciu przycisku „Install” w kreatorze aplikacji, TrueNAS Scale rozpoczyna proces wdrażania. W tle pobierany jest obraz Docker, tworzone są woluminy ixVolume i uruchamiany jest kontener z zadaną konfiguracją. Skrypt startowy wewnątrz kontenera NPM próbuje wykonać operacje konserwacyjne, w tym zmianę właściciela kluczowych katalogów. Ponieważ kontener działa jako użytkownik o ograniczonych uprawnieniach (apps, UID 568) na systemie plików, którego nie kontroluje w pełni, operacja ta kończy się niepowodzeniem. Skrypt zatrzymuje swoje działanie, a kontener nigdy nie sygnalizuje systemowi, że jest gotowy do pracy. W rezultacie, z perspektywy interfejsu TrueNAS, aplikacja na zawsze pozostaje w fazie wdrażania.
Na szczęście, dzięki pracy społeczności i deweloperów, istnieją sprawdzone i skuteczne rozwiązania tego problemu. Co ciekawe, ewolucja tych rozwiązań doskonale ilustruje dynamikę rozwoju oprogramowania open-source.
Jest to nowoczesne, precyzyjne i najbezpieczniejsze rozwiązanie problemu. Zostało ono wprowadzone przez twórców kontenera NPM właśnie w odpowiedzi na problemy zgłaszane przez użytkowników platform takich jak TrueNAS Scale. Zamiast eskalować uprawnienia, instruuje się kontener, aby pominął problematyczny krok.
Aby zaimplementować to rozwiązanie, należy:
Podczas instalacji aplikacji (lub podczas jej edycji, jeśli już została utworzona i zawisła), należy przejść do sekcji Application Configuration.
Znaleźć podsekcję Nginx Proxy Manager Configuration i kliknąć Add przy Additional Environment Variables.
Skonfigurować nową zmienną środowiskową w następujący sposób:
Variable Name:SKIP_CERTBOT_OWNERSHIP
Variable Value:true
Zapisać konfigurację i zainstalować lub zaktualizować aplikację.
Dodanie tej flagi informuje skrypt startowy Certbota wewnątrz kontenera, że ma on pominąć krok chown (zmiany właściciela) dla swoich plików konfiguracyjnych. Skrypt przechodzi dalej, kontener poprawnie się uruchamia i zgłasza gotowość, a aplikacja przechodzi w stan „Running”. Jest to metoda zalecana dla wszystkich nowszych wersji TrueNAS Scale (Electric Eel, Dragonfish i nowszych).
Rozwiązanie 2: Zmiana Użytkownika na Root (Metoda Historyczna)
To rozwiązanie było pierwszym, które odkryła społeczność. Jest to bardziej „brutalna” metoda, która rozwiązuje problem przez nadanie kontenerowi pełnych uprawnień. Choć skuteczna, jest uważana za mniej elegancką i potencjalnie mniej bezpieczną z perspektywy zasady minimalnych uprawnień.
Aby zaimplementować to rozwiązanie, należy:
Podczas instalacji lub edycji aplikacji, należy przejść do sekcji User and Group Configuration.
Zmienić wartość w polu User ID z domyślnej 568 na 0.
Pozostawić Group ID bez zmian lub również ustawić na 0.
Zapisać konfigurację i wdrożyć aplikację.
Ustawienie User ID na 0 powoduje, że proces wewnątrz kontenera jest uruchamiany z uprawnieniami użytkownika root. Użytkownik root ma nieograniczone uprawnienia, więc problematyczna operacja chown wykonuje się bezbłędnie, a kontener startuje poprawnie. Ta metoda była szczególnie potrzebna w starszych wersjach TrueNAS Scale (np. Dragonfish) i jest udokumentowana jako działające obejście. Chociaż nadal działa, metoda ze zmienną środowiskową jest preferowana, ponieważ nie wymaga eskalacji uprawnień dla całego kontenera.
Weryfikacja
Niezależnie od wybranej metody, po zapisaniu zmian i ponownym wdrożeniu aplikacji, należy obserwować jej status w zakładce Apps -> Installed. Po krótkiej chwili status powinien zmienić się z „Deploying” na „Running”, co oznacza, że problem został pomyślnie rozwiązany i Nginx Proxy Manager jest gotowy do konfiguracji.
Teoria i poprawna instalacja to dopiero początek. Prawdziwa moc Nginx Proxy Manager ujawnia się w praktyce, gdy zaczynamy go używać do zarządzania dostępem do naszych usług. Jellyfin, popularny, darmowy serwer multimediów, jest doskonałym przykładem do zademonstrowania tego procesu, ponieważ jego pełna funkcjonalność zależy od jednego, często pomijanego ustawienia w konfiguracji proxy. Poniższy przewodnik zakłada, że Jellyfin jest już zainstalowany i działa w sieci lokalnej, dostępny pod adresem IP:PORT (np. 192.168.1.10:8096).
Krok 1: Konfiguracja DNS
Zanim NPM będzie mógł kierować ruch, świat zewnętrzny musi wiedzieć, gdzie go wysłać.
Należy zalogować się do panelu zarządzania swoją domeną internetową (np. u rejestratora domeny lub dostawcy DNS, jak Cloudflare).
Utworzyć nowy rekord DNS typu A.
W polu Name (lub Host) należy wpisać subdomenę, która będzie używana do dostępu do Jellyfin (np. jellyfin).
W polu Value (lub Points to) należy wpisać publiczny adres IP swojej sieci domowej (routera).
Krok 2: Uzyskanie Certyfikatu SSL w NPM
Zabezpieczenie połączenia za pomocą HTTPS jest kluczowe. NPM sprawia, że ten proces jest trywialny, zwłaszcza przy użyciu metody DNS Challenge, która jest bezpieczniejsza, ponieważ nie wymaga otwierania żadnych portów na routerze.
W interfejsie NPM należy przejść do SSL Certificates i kliknąć Add SSL Certificate, a następnie wybrać Let's Encrypt.
W polu Domain Names należy wpisać swoją subdomenę, np. jellyfin.twojadomena.com. Można również od razu wygenerować certyfikat typu „wildcard” (np. *.twojadomena.com), który będzie pasował do wszystkich subdomen.
Należy włączyć opcję Use a DNS Challenge.
Z listy DNS Provider można wybrać swojego dostawcę DNS (np. Cloudflare).
W polu Credentials File Content należy wkleić token API uzyskany od dostawcy DNS. W przypadku Cloudflare, należy wygenerować token z uprawnieniami do edycji strefy DNS (Zone:DNS:Edit).
Należy zaakceptować warunki usługi Let’s Encrypt i zapisać formularz. Po chwili NPM użyje API do tymczasowego dodania rekordu TXT w DNS, co udowodni Let’s Encrypt, że jesteśmy właścicielami domeny. Certyfikat zostanie wygenerowany i zapisany.
Krok 3: Tworzenie Hosta Proxy (Proxy Host)
To jest serce konfiguracji, gdzie łączymy domenę, certyfikat i wewnętrzną usługę.
W NPM należy przejść do Hosts -> Proxy Hosts i kliknąć Add Proxy Host.
Otworzy się formularz z kilkoma zakładkami.
Zakładka „Details”
Domain Names: Należy wpisać pełną nazwę domenową, która została skonfigurowana w DNS, np. jellyfin.twojadomena.com.
Scheme: Należy wybrać http, ponieważ komunikacja między NPM a Jellyfin w sieci lokalnej zazwyczaj nie jest szyfrowana.
Forward Hostname / IP: Należy wpisać lokalny adres IP serwera, na którym działa Jellyfin, np. 192.168.1.10.
Forward Port: Należy wpisać port, na którym nasłuchuje Jellyfin, np. 8096.
Websocket Support:To jest absolutnie krytyczne ustawienie. Należy zaznaczyć tę opcję. Jellyfin intensywnie korzysta z technologii WebSocket do komunikacji w czasie rzeczywistym, np. do aktualizacji statusu odtwarzania na pulpicie nawigacyjnym (dashboard) czy do działania funkcji Syncplay. Bez włączonego wsparcia dla WebSocket, strona główna Jellyfin załaduje się poprawnie, ale wiele kluczowych funkcji nie będzie działać, co prowadzi do trudnych do zdiagnozowania problemów.
Zakładka „SSL”
SSL Certificate: Z rozwijanej listy należy wybrać certyfikat wygenerowany w poprzednim kroku dla domeny Jellyfin.
Force SSL: Należy włączyć tę opcję, aby wszystkie połączenia HTTP były automatycznie przekierowywane na bezpieczny HTTPS.
HTTP/2 Support: Włączenie tej opcji może poprawić wydajność ładowania strony.
Po skonfigurowaniu obu zakładek należy zapisać hosta proxy.
Krok 4: Testowanie
Po zapisaniu konfiguracji, Nginx w tle przeładuje swoje ustawienia. Teraz powinno być możliwe otwarcie przeglądarki i wpisanie adresu https://jellyfin.twojadomena.com. Użytkownik powinien zobaczyć stronę logowania Jellyfin, a połączenie powinno być zabezpieczone certyfikatem SSL (widoczna kłódka w pasku adresu).
Podsekcja 5.1: Zaawansowane Wzmacnianie Bezpieczeństwa (Opcjonalne)
Domyślna konfiguracja jest w pełni funkcjonalna, ale dla zwiększenia bezpieczeństwa można dodać dodatkowe nagłówki HTTP, które instruują przeglądarkę, jak ma się zachowywać. W tym celu należy edytować utworzonego hosta proxy i przejść do zakładki Advanced. W polu Custom Nginx Configuration można wkleić dodatkowe dyrektywy.
Warto zauważyć, że NPM ma pewne dziwactwo: dyrektywy add_header dodane bezpośrednio w tym polu mogą nie zostać zastosowane. Bezpieczniejszym podejściem jest utworzenie niestandardowej lokalizacji (Custom Location) dla ścieżki / i wklejenie nagłówków w jej polu konfiguracyjnym.
Poniższa tabela przedstawia rekomendowane nagłówki bezpieczeństwa.
Tabela 2: Rekomendowane Nagłówki Bezpieczeństwa dla Jellyfin w NPM
Nagłówek
Cel
Rekomendowana Wartość
Uwagi
Strict-Transport-Security
Wymusza na przeglądarce komunikację wyłącznie przez HTTPS przez określony czas.
Dobry kompromis między prywatnością a użytecznością.
X-XSS-Protection
Historyczny nagłówek mający chronić przed atakami Cross-Site Scripting (XSS).
add_header X-XSS-Protection "0" always;
Nagłówek jest przestarzały i może tworzyć nowe wektory ataku. Nowoczesne przeglądarki mają lepsze, wbudowane mechanizmy. Zaleca się jego jawne wyłączenie (0).
Zastosowanie tych nagłówków stanowi dodatkową warstwę obrony i jest uznawane za dobrą praktykę w zabezpieczaniu aplikacji webowych. Krytyczne jest jednak, aby korzystać z aktualnych rekomendacji, jak w przypadku X-XSS-Protection, którego ślepe kopiowanie ze starszych poradników mogłoby osłabić bezpieczeństwo.
Sekcja 6: Wnioski i Dalsze Kroki
Połączenie Nginx Proxy Manager z platformą TrueNAS Scale tworzy niezwykle potężne i elastyczne środowisko do zarządzania domowym laboratorium. Jak wykazano w niniejszym raporcie, ta synergia pozwala na centralizację zarządzania dostępem, drastyczne uproszczenie wdrożenia i utrzymania zabezpieczeń SSL/TLS oraz profesjonalizację sposobu, w jaki użytkownicy wchodzą w interakcję ze swoimi samo-hostowanymi usługami. Kluczem do sukcesu jest jednak nie tylko ślepe podążanie za instrukcjami, ale przede wszystkim zrozumienie fundamentalnych zasad działania obu technologii. Świadomość, że aplikacje w TrueNAS Scale działają w ramach restrykcyjnego ekosystemu, jest niezbędna do skutecznego diagnozowania i rozwiązywania specyficznych problemów, takich jak błąd zawieszania się w stanie „Deploying”.
Podsumowanie Strategicznych Korzyści
Wdrożenie NPM na TrueNAS Scale przynosi wymierne korzyści:
Centralizacja i prostota: Wszystkie przychodzące żądania są zarządzane z jednego, intuicyjnego panelu, co eliminuje chaos związany z wieloma adresami IP i portami.
Wzmocnione bezpieczeństwo: Automatyzacja certyfikatów SSL, ukrywanie wewnętrznej topologii sieci oraz możliwość implementacji zaawansowanych nagłówków bezpieczeństwa tworzą solidną pierwszą linię obrony.
Profesjonalny wizerunek i wygoda: Używanie łatwych do zapamiętania, spersonalizowanych subdomen (np. media.mojadomena.pl) zamiast technicznych adresów IP znacząco poprawia komfort użytkowania.
Rekomendacje i Dalsze Kroki
Po pomyślnym wdrożeniu Nginx Proxy Manager i zabezpieczeniu pierwszej aplikacji, warto zbadać jego dalsze możliwości, aby w pełni wykorzystać potencjał narzędzia.
Eksploracja List Dostępu (Access Lists): NPM pozwala na tworzenie list kontroli dostępu (ACL), które mogą ograniczać dostęp do określonych hostów proxy na podstawie adresu IP źródłowego. Jest to niezwykle użyteczna funkcja do zabezpieczania paneli administracyjnych. Można na przykład stworzyć regułę, która zezwala na dostęp do interfejsu TrueNAS Scale lub panelu samego NPM tylko z adresów IP w sieci lokalnej, blokując wszelkie próby dostępu z zewnątrz.
Strategia Kopii Zapasowych: Konfiguracja Nginx Proxy Manager, przechowywana w woluminie ixVolume, jest krytycznym zasobem. Jej utrata oznaczałaby konieczność ponownego konfigurowania wszystkich hostów proxy i certyfikatów. TrueNAS Scale oferuje wbudowane narzędzia do automatyzacji tworzenia kopii zapasowych. Należy skonfigurować zadanie Periodic Snapshot Task dla zbioru danych (dataset) zawierającego dane aplikacji NPM (ix-applications/releases/nginx-proxy-manager), aby regularnie tworzyć migawki jego stanu.
Zabezpieczanie Innych Aplikacji: Wiedza zdobyta podczas konfiguracji Jellyfin jest uniwersalna. Można ją teraz zastosować do zabezpieczenia praktycznie każdej innej usługi webowej działającej w domowym laboratorium, takiej jak Home Assistant, serwer plików, osobisty menedżer haseł (np. Vaultwarden, będący implementacją Bitwarden) czy system blokowania reklam AdGuard Home. Należy pamiętać, aby dla każdej aplikacji wymagającej komunikacji w czasie rzeczywistym włączyć opcję Websocket Support.
Monitorowanie i Diagnostyka: Interfejs NPM udostępnia dzienniki dostępu (access logs) i błędów (error logs) dla każdego hosta proxy. Regularne przeglądanie tych logów może pomóc w diagnozowaniu problemów z dostępem, identyfikowaniu prób nieautoryzowanych połączeń oraz optymalizacji konfiguracji.
Opanowanie Nginx Proxy Manager na TrueNAS Scale to inwestycja, która zwraca się wielokrotnie w postaci zwiększonego bezpieczeństwa, wygody i kontroli nad cyfrowym ekosystemem. Jest to kolejny krok na drodze od prostego użytkownika do świadomego architekta własnej, domowej infrastruktury.
Wyobraź sobie serwis muzyczny, który nie tylko przechowuje całą Twoją kolekcję w bezstratnej jakości, ale także wyświetla zsynchronizowane teksty piosenek w czasie rzeczywistym, zamieniając każde słuchanie w sesję karaoke. Co więcej, jest całkowicie Twój – bez reklam, bez subskrypcji i bez śledzenia przez algorytmy. To nie futurystyczna wizja, a w pełni osiągalna rzeczywistość dzięki potędze oprogramowania open-source. Potwierdzamy: funkcja karaoke działa doskonale zarówno w webowym interfejsie Jellyfin, jak i w aplikacji Finamp na iPhonie. Ten kompletny przewodnik przeprowadzi Cię przez każdy etap budowy takiego systemu – od instalacji po samodzielne tworzenie plików z tekstami.
W erze dominacji gigantów streamingowych, rośnie ruch entuzjastów „self-hostingu” – samodzielnego zarządzania własnymi danymi i usługami. Zamiast powierzać swoją cyfrową tożsamość korporacjom, budują oni własne, prywatne chmury, serwery mediów i wiele więcej. Ten artykuł to esencja tej filozofii, pokazująca, jak odzyskać kontrolę nad swoją muzyką i wzbogacić ją o funkcje, których próżno szukać u konkurencji.
Zanim zagłębimy się w konfigurację, musimy zrozumieć fundamenty, na których zbudujemy nasze centrum muzyczne. Sukces zależy od harmonijnej współpracy trzech kluczowych elementów.
Jellyfin (serwer w wersji 10.9+): To mózg całej operacji. Jellyfin to darmowy serwer mediów, który kataloguje i udostępnia Twoje pliki muzyczne. Wersja 10.9 była rewolucyjna, wprowadzając ustandaryzowane, zarządzane przez serwer podejście do obsługi tekstów piosenek. Oznacza to, że cała „ciężka praca” związana z pozyskiwaniem i przetwarzaniem tekstów odbywa się na serwerze, a aplikacje klienckie jedynie konsumują gotowe dane.
TrueNAS SCALE: To niezawodny i potężny system operacyjny dla Twojego domowego serwera (NAS). Zbudowany na Linuksie, oferuje oficjalne wsparcie dla uruchamiania aplikacji takich jak Jellyfin w izolowanych kontenerach, co gwarantuje stabilność, bezpieczeństwo i porządek w systemie.
Finamp i Jellyfin App (klienci mobilni): To Twoje okna na świat muzyki. Finamp, zwłaszcza w swojej przeprojektowanej wersji beta, jest faworytem użytkowników iPhone’ów, ponieważ eliminuje problem przerywania muzyki po wygaszeniu ekranu i doskonale radzi sobie z wyświetlaniem tekstów. Co równie ważne, najnowsze wersje oficjalnej aplikacji Jellyfin również bezbłędnie obsługują funkcję zsynchronizowanych tekstów.
Potwierdzenie, że funkcja karaoke działa, jest ekscytujące. Aby w pełni ją wykorzystać, trzeba zrozumieć, skąd bierze się ta „magia”. Efekt podświetlania tekstu w idealnej synchronizacji z muzyką zależy od formatu pobranego pliku. Sercem tego mechanizmu jest prosty plik tekstowy z rozszerzeniem .lrc.
Teksty zsynchronizowane (.lrc/.elrc): To Święty Graal dla fanów karaoke. Pliki te zawierają nie tylko słowa piosenki, ale również precyzyjne znaczniki czasu dla każdej linijki.
Teksty niezsynchronizowane (.txt): To prostsza forma, zawierająca czysty tekst. W tym przypadku aplikacja będzie go po prostu płynnie przewijać w miarę trwania utworu, bez podświetlania poszczególnych wersów.
Struktura pliku .lrc jest niezwykle prosta. Każda linijka tekstu jest poprzedzona znacznikiem czasu w formacie [minuty:sekundy.setne sekundy].
Przykład budowy pliku .lrc:
[ar: Wykonawca Utworu] [ti: Tytuł Utworu] [al: Album]
[00:15.50]Pierwsza linijka tekstu pojawia się po 15.5 sekundach. [00:19.25]Druga linijka tekstu wchodzi po 19.25 sekundach. [00:23.00]I tak dalej… [00:25.10] [00:27.40]Można też tworzyć puste linijki dla przerw.
Zostań Twórcą Tekstów: Jak Samodzielnie Stworzyć Plik .lrc
Co jeśli wtyczka LrcLib nie może znaleźć tekstu do Twojego ulubionego, niszowego utworu? Nic straconego! Możesz bardzo łatwo stworzyć go samodzielnie.
Zdobądź tekst: Znajdź w internecie słowa piosenki i skopiuj je.
Otwórz edytor tekstu: Użyj dowolnego prostego edytora, jak Notatnik (Windows) lub TextEdit (macOS).
Synchronizuj z muzyką: Odtwarzaj utwór i pauzuj go na początku każdej linijki, aby zanotować dokładny czas (minuty i sekundy).
Sformatuj plik: Przed każdą linijką tekstu dodaj zanotowany czas w nawiasach kwadratowych, np. [01:23.45]. Im dokładniejsze setne sekundy, tym płynniejszy efekt.
Zapisz plik: To najważniejszy krok. Zapisz plik w tym samym folderze, co plik audio, nadając mu dokładnie taką samą nazwę, ale zmieniając rozszerzenie na .lrc.
Jeśli plik muzyczny to: Moja Piosenka - Super Utwór.flac
Plik z tekstem musi nazywać się: Moja Piosenka - Super Utwór.lrc
Po zapisaniu pliku wystarczy ponownie przeskanować bibliotekę w Jellyfin, a serwer automatycznie wykryje i powiąże Twój własnoręcznie stworzony tekst z utworem.
Konfiguracja Serwera – Przewodnik Krok po Kroku
1. Instalacja Wtyczki LrcLib
W panelu sterowania Jellyfin przejdź do Wtyczki > Katalog.
Wyszukaj i zainstaluj oficjalną wtyczkę „LrcLib” z repozytorium Jellyfin. Unikaj przestarzałej wtyczki jellyfin-lyrics-plugin autorstwa Felitendo, która nie jest już rozwijana i może powodować błędy.
Koniecznie uruchom ponownie serwer Jellyfin, aby zmiany weszły w życie.
2. Najważniejsza Konfiguracja Biblioteki
To kluczowy, choć nieintuicyjny krok. Domyślnie Jellyfin ukrywa pobrane teksty w folderze metadanych, tworząc „czarną skrzynkę”. Zmienimy to, aby mieć pełną kontrolę.
Przejdź do Panel sterowania > Biblioteki.
Znajdź swoją bibliotekę muzyczną, kliknij menu (trzy kropki) i wybierz Zarządzaj biblioteką.
W ustawieniach biblioteki zaznacz opcję „Zapisuj teksty piosenek w folderach z mediami”.
3. Uruchamianie Procesu
Przejdź do Panel sterowania > Zaplanowane zadania.
Znajdź zadanie „Pobierz brakujące teksty piosenek” i uruchom je ręcznie. Ustaw harmonogram (np. codziennie), aby nowo dodana muzyka była przetwarzana automatycznie.
Po zakończeniu zadania, uruchom ponowne skanowanie biblioteki muzycznej.
Gdy Coś Pójdzie Nie Tak – Zaawansowane Rozwiązywanie Problemów
Nawet przy idealnej konfiguracji, można napotkać problemy. Oto jak sobie z nimi poradzić.
Pierwsza Zasada Diagnozy: Zawsze sprawdzaj, czy teksty są widoczne w interfejsie webowym Jellyfin w przeglądarce, zanim zaczniesz szukać problemu w aplikacji mobilnej. Jeśli nie ma ich na serwerze, problem nie leży po stronie klienta.
Rozwiązywanie Problemów ze Skanowaniem i Odświeżaniem Metadanych Czasami, z powodu specyfiki działania systemu, interfejs użytkownika lub baza danych Jellyfin nie odświeża się natychmiast po pierwszym skanowaniu. Objawia się to tym, że mimo wykonania wszystkich kroków, teksty nadal nie są widoczne. Rozwiązaniem jest uruchomienie drugiego skanowania, wybierając tym razem bardziej szczegółową opcję „Wyszukaj brakujące metadane” dla danej biblioteki. Ten dodatkowy krok często zmusza system do ponownego przeanalizowania folderów i zarejestrowania nowych plików .lrc.
Ostateczna Broń – Ręczne Czyszczenie Pamięci Podręcznej: Najbardziej uporczywym problemem jest agresywne buforowanie metadanych przez Jellyfin. System tworzy wewnętrzną kopię tekstu i często odmawia jej aktualizacji, nawet jeśli źródłowy plik .lrc zostanie zmieniony. Zwykłe odświeżanie z poziomu interfejsu bywa zawodne. Jedyną w 100% skuteczną metodą jest ręczne usunięcie zbuforowanego pliku z systemu plików serwera.
Zlokalizuj ścieżkę konfiguracyjną Jellyfin na serwerze TrueNAS (np. /mnt/pool/ix-applications/jellyfin/config).
Uruchom powłokę (Shell) w interfejsie TrueNAS.
Przejdź do katalogu z buforem tekstów, używając polecenia cd i swojej ścieżki: cd /mnt/pool/ix-applications/jellyfin/config/metadata/lyrics.
Znajdź i usuń problematyczny plik za pomocą polecenia find. Zastąp "Tytuł Utworu.lrc" rzeczywistą nazwą pliku: find . -type f -name "Tytuł Utworu.lrc" -print -delete. Flaga -print wyświetli plik przed jego usunięciem.
W interfejsie Jellyfin, przy danym utworze, wybierz Odśwież metadane z trybem Wyszukaj brakujące metadane. Jellyfin, zmuszony do działania, pobierze i przetworzy tekst na nowo.
Długoterminowe Utrzymanie i Dalsze Kroki
Higiena Tagowania: Skuteczność pobierania tekstów zależy od jakości metadanych Twojej muzyki. Używaj narzędzi takich jak MusicBrainz Picard, aby Twoje pliki miały dokładne i spójne tagi.
Kopie Zapasowe: Regularnie twórz kopię zapasową całego folderu konfiguracyjnego Jellyfin (np. /mnt/pool/ix-applications/jellyfin/config), aby chronić swoje ustawienia, metadane i dane użytkowników w razie awarii.
Dostęp Zewnętrzny: Kiedy opanujesz już lokalny streaming, naturalnym kolejnym krokiem jest skonfigurowanie bezpiecznego dostępu spoza domu za pomocą Nginx Proxy Manager.
Gratulacje! Właśnie zbudowałeś w pełni funkcjonalny, prywatny i znacznie potężniejszy odpowiednik komercyjnych serwisów streamingowych, z rewelacyjną funkcją karaoke, która ożywi każdą imprezę i samotny wieczór ze słuchawkami.