Kategoria: Bez kategorii

  • Twoja Prywatna Biblioteka Aleksandryjska: Kompleksowy Przewodnik po Kavita i Nextcloud na TrueNAS SCALE

    Wprowadzenie: Odzyskaj Kontrolę nad Swoją Cyfrową Półką z Książkami

    W erze cyfrowej, pojęcie własności stało się płynne. Kupujemy e-booki, prenumerujemy cyfrowe magazyny i gromadzimy obszerne kolekcje dokumentów PDF, a jednak rzadko kiedy mamy nad nimi pełną kontrolę. Nasze zbiory są często rozproszone po różnych platformach i zamknięte w zastrzeżonych ekosystemach, takich jak Amazon Kindle czy Apple Books, zależne od widzimisię korporacji, które mogą w każdej chwili zmienić warunki usługi lub zniknąć z rynku. Ten przewodnik jest manifestem cyfrowej suwerenności – podróżą mającą na celu odzyskanie pełnej kontroli nad własną biblioteką i stworzenie prywatnego, bezpiecznego i eleganckiego sanktuarium dla słowa pisanego.

    U podstaw naszego projektu leży potężna trójca oprogramowania open-source, która wspólnie tworzy system przewyższający funkcjonalnością wiele komercyjnych rozwiązań. Fundamentem jest TrueNAS SCALE, hiperkonwergentny system operacyjny, który przekształca domowy serwer w niezawodną fortecę dla danych. Na tym fundamencie zbudujemy Nextcloud, nasze prywatne centrum dowodzenia – wszechstronną chmurę, która pozwoli na łatwe zarządzanie, synchronizację i organizację plików naszej biblioteki z dowolnego urządzenia. Zwieńczeniem dzieła będzie Kavita, błyskawiczny i estetyczny serwer do czytania, który zamieni naszą kolekcję plików w piękną, interaktywną czytelnię, dostępną zarówno w domu, jak i w podróży.

    Droga do stworzenia tego cyfrowego azylu, choć niezwykle satysfakcjonująca, jest najeżona technicznymi niuansami. Niniejszy przewodnik jest mapą tej podróży, stworzoną na podstawie rzeczywistych doświadczeń i wyzwań napotkanych podczas konfiguracji – od zawiłości uprawnień systemowych, przez izolację kontenerów, po konfigurację bezpiecznego dostępu zdalnego. Nie jest to jedynie zbiór instrukcji, ale dogłębna analiza, która ma na celu nie tylko pokazanie, jak coś zrobić, ale również wyjaśnienie, dlaczego robimy to w określony sposób. Celem jest wyposażenie czytelnika w wiedzę i pewność siebie, które pozwolą mu zbudować profesjonalny, stabilny i w pełni spersonalizowany system do zarządzania cyfrową biblioteką.

    Architektura Twojego Cyfrowego Imperium: Zrozumienie Komponentów

    Zanim przystąpimy do instalacji, kluczowe jest zrozumienie roli, jaką każdy z komponentów odgrywa w naszej architekturze. Wybór oprogramowania nie jest przypadkowy – tworzy ono synergiczny ekosystem, w którym każdy element specjalizuje się w swoim zadaniu, co prowadzi do powstania bardziej wydajnego i elastycznego rozwiązania niż jakikolwiek monolityczny system.

    Fundament: TrueNAS SCALE – Więcej niż Dysk Sieciowy

    Wielu użytkowników postrzega serwer NAS (Network Attached Storage) jako zwykły dysk sieciowy. TrueNAS SCALE wykracza daleko poza tę definicję. Jest to w pełni funkcjonalna, darmowa platforma hiperkonwergentnej infrastruktury (HCI), zbudowana na solidnych fundamentach systemu Linux (Debian). Oznacza to, że łączy w sobie dwie kluczowe funkcje: zaawansowane zarządzanie pamięcią masową oraz platformę do uruchamiania aplikacji w zwirtualizowanych środowiskach, takich jak kontenery Docker i maszyny wirtualne KVM.

    Sercem i duszą TrueNAS jest system plików OpenZFS. To on stanowi o jego przewadze nad prostszymi rozwiązaniami. ZFS został zaprojektowany od podstaw z myślą o integralności i ochronie danych, oferując funkcje klasy korporacyjnej, które są teraz dostępne dla użytkowników domowych :

    • Ochrona przed „cichym” uszkodzeniem danych: ZFS nieustannie weryfikuje sumy kontrolne danych, automatycznie wykrywając i naprawiając błędy, które na innych systemach plików mogłyby pozostać niezauważone aż do momentu, gdy plik stanie się nie do odczytania.
    • Elastyczność i ochrona: Funkcje takie jak nielimitowane, natychmiastowe migawki (snapshots) pozwalają na tworzenie punktów przywracania całego systemu plików, chroniąc przed przypadkowym usunięciem danych czy atakami ransomware.
    • Wydajność: Zaawansowane mechanizmy buforowania, takie jak ARC (Adaptive Replacement Cache), inteligentnie wykorzystują pamięć RAM serwera do przyspieszenia dostępu do najczęściej używanych plików.

    W naszym projekcie TrueNAS SCALE nie jest tylko magazynem na pliki. Jest aktywną platformą, która będzie hostować aplikacje Nextcloud i Kavita, zapewniając im stabilne i bezpieczne środowisko do działania.

    Centrum Zarządzania: Nextcloud – Twoje Prywatne Centrum Danych

    Nextcloud to znacznie więcej niż tylko alternatywa dla Google Drive czy Dropbox. Jest to potężna, otwartoźródłowa platforma do współpracy i synchronizacji plików, która oddaje użytkownikowi 100% kontroli nad danymi. W architekturze naszej cyfrowej biblioteki Nextcloud pełni rolę centrum logistycznego. Jego zadaniem jest zapewnienie prostego i uniwersalnego sposobu na zarządzanie plikami – dodawanie nowych magazynów, usuwanie starych numerów czy porządkowanie książek w folderach.

    Dzięki klientom na komputery stacjonarne (Windows, macOS, Linux) oraz aplikacjom mobilnym (iOS, Android), Nextcloud umożliwia bezproblemową synchronizację plików między wszystkimi naszymi urządzeniami a serwerem. Możemy po prostu przeciągnąć nowy plik PDF do odpowiedniego folderu na naszym laptopie, a on automatycznie pojawi się na serwerze, gotowy do odczytania przez Kavita. Ta separacja ról jest kluczowa: Nextcloud doskonale radzi sobie z trudnym zadaniem zarządzania plikami i ich synchronizacją, pozwalając Kavita skupić się wyłącznie na tym, co robi najlepiej – na czytaniu.

    Elegancka Czytelnia: Kavita – Serwer Stworzony dla Czytelników

    Kavita jest klejnotem koronnym naszego systemu – to wyspecjalizowany serwer mediów, zaprojektowany od podstaw z myślą o czytelnikach. Podczas gdy Nextcloud posiada własną, prostą aplikację do czytania, Kavita oferuje doświadczenie o klasę wyższe, porównywalne z najlepszymi komercyjnymi aplikacjami. Jej główne atuty to:

    • Szybkość i Wydajność: Interfejs jest niezwykle responsywny, a wbudowane czytniki są zoptymalizowane pod kątem płynnego przeglądania nawet bardzo dużych plików PDF czy archiwów z komiksami (CBZ/CBR).
    • Bogate Metadane: Kavita automatycznie skanuje pliki, pobierając okładki, streszczenia i inne metadane, prezentując naszą kolekcję w formie atrakcyjnej wizualnie biblioteki, a nie tylko listy plików.
    • Wyspecjalizowane Czytniki: Oferuje dedykowane, konfigurowalne czytniki dla różnych formatów, w tym tryb „webtoon” (przewijanie w pionie) dla komiksów internetowych, oraz zaawansowany czytnik EPUB z opcjami personalizacji czcionki, marginesów i motywów kolorystycznych.
    • Dostęp Mobilny przez PWA: Kavita wykorzystuje technologię Progresywnej Aplikacji Webowej (PWA). Oznacza to, że możemy „zainstalować” jej stronę internetową na ekranie głównym naszego smartfona lub tabletu. Uruchamia się ona wtedy jak natywna aplikacja – na pełnym ekranie, bez paska adresu przeglądarki, oferując doskonałe wrażenia z użytkowania bez konieczności pobierania czegokolwiek ze sklepu z aplikacjami.

    W naszym systemie Kavita działa jako elegancki front-end, który pobiera dane przygotowane i zorganizowane przez Nextcloud, a następnie prezentuje je w sposób zoptymalizowany pod kątem konsumpcji treści. Taki modularny podział obowiązków jest fundamentem solidnej i skalowalnej architektury.

    Kładzenie Fundamentów: Struktura Danych i Uprawnienia w TrueNAS

    Zanim zainstalujemy jakąkolwiek aplikację, musimy przygotować solidny fundament dla naszych danych. W świecie TrueNAS oznacza to stworzenie dedykowanej struktury w systemie plików ZFS i, co najważniejsze, precyzyjne skonfigurowanie uprawnień dostępu. Ten etap jest absolutnie kluczowy. Doświadczenie pokazuje, że niemal wszystkie późniejsze, trudne do zdiagnozowania problemy z aplikacjami, takie jak błędy „magazyn niedostępny” czy „brak dostępu”, mają swoje źródło w błędnie skonfigurowanych uprawnieniach na tym najniższym poziomie. Potraktowanie tej sekcji z należytą uwagą to najlepsza inwestycja czasu, która zaoszczędzi godzin frustrującego rozwiązywania problemów w przyszłości.

    Nextcloud problemy z NFS

    Planowanie Przestrzeni: Dedykowany Zbiór Danych (Dataset) na Media

    Pierwszym krokiem jest wydzielenie logicznej przestrzeni na nasze książki i magazyny. Zamiast tworzyć zwykłe foldery, w TrueNAS użyjemy do tego zbiorów danych (datasets). Pozwalają one na znacznie bardziej granularne zarządzanie, na przykład ustawianie różnych reguł migawek czy uprawnień dla różnych typów danych.

    Proces ten jest prosty:

    1. W interfejsie webowym TrueNAS SCALE należy przejść do sekcji Datasets.
    2. Należy wybrać pulę dyskową (pool), na której będą przechowywane dane (np. Pool1), kliknąć na trzy kropki i wybrać Add Dataset.
    3. Tworzymy główny zbiór danych dla naszego projektu, na przykład o nazwie nextcloud. Ścieżka do niego będzie wyglądać następująco: /mnt/Pool1/nextcloud.
    4. Następnie, klikając na trzy kropki obok nowo utworzonego datasetu nextcloud, tworzymy w nim dwa zagnieżdżone zbiory danych: books oraz magazines.

    Dzięki temu uzyskujemy przejrzystą i łatwą w zarządzaniu strukturę: /mnt/Pool1/nextcloud/books oraz /mnt/Pool1/nextcloud/magazines.

    Klucz do Królestwa: Dogłębna Analiza Uprawnień ACL

    To jest najważniejszy etap konfiguracji. Aplikacje w TrueNAS SCALE działają w odizolowanych kontenerach jako specjalny, systemowy użytkownik o nazwie apps. Aby aplikacje takie jak Nextcloud czy Kavita mogły odczytywać i zapisywać dane w naszych nowo utworzonych zbiorach danych, musimy jawnie nadać użytkownikowi apps odpowiednie uprawnienia. Robimy to za pomocą List Kontroli Dostępu (ACL).

    Wprowadzenie do ACL i użytkownika apps

    TrueNAS SCALE domyślnie używa typu ACL NFSv4, który jest bardziej granularny i złożony niż tradycyjne uprawnienia POSIX znane z systemów Linux. Każda oficjalna aplikacja z katalogu TrueNAS jest zaprojektowana do pracy z tym typem ACL i uruchamiana jest jako użytkownik apps, który w systemie ma przypisany unikalny identyfikator (UID) 568 oraz należy do grupy apps (GID 568). Oznacza to, że aby wszystko działało poprawnie, właścicielem naszych zbiorów danych musi być właśnie użytkownik apps.

    Konfiguracja Krok po Kroku

    Przejdźmy do edycji uprawnień dla naszego głównego zbioru danych /mnt/Pool1/nextcloud. Zmiany te zostaną odziedziczone przez zagnieżdżone zbiory books i magazines.

    1. W sekcji Datasets należy odnaleźć zbiór danych nextcloud, kliknąć na trzy kropki i wybrać Edit Permissions.
    2. W otwartym oknie edytora ACL należy ustawić właściciela. W polu Owner należy wybrać z listy użytkownika apps.
    3. Następnie, w polu Owner Group należy wybrać grupę apps.
    4. Teraz przechodzimy do listy Access Control List. Musimy upewnić się, że istnieje wpis dla użytkownika apps i że ma on odpowiednie uprawnienia. Należy kliknąć Add Item i skonfigurować go następująco:
      • Who: User
      • User: apps
      • Permissions: Full Control
      • Flags: Inherit

    Krytyczne Ustawienia, Których Nie Można Pominąć

    Dwa ustawienia w tym oknie są absolutnie kluczowe dla uniknięcia przyszłych problemów:

    • Permissions: Modify vs. Full Control: Na pierwszy rzut oka mogłoby się wydawać, że uprawnienia Modify (modyfikacja, odczyt, zapis, usuwanie) są wystarczające. Jednak niektóre aplikacje, w tym Nextcloud, do poprawnego działania wymagają uprawnień Full Control. Daje to aplikacji dodatkową możliwość zarządzania uprawnieniami do plików, które sama tworzy. Wybór Full Control jest bezpieczniejszą i pewniejszą opcją, która zapobiega całej klasie potencjalnych błędów.
    • Flags: Inherit (Dziedzicz): To jest najważniejsza opcja w całym oknie. Ustawienie tej flagi sprawia, że każdy nowy plik i folder, który zostanie utworzony w tym zbiorze danych (np. poprzez wgranie pliku przez Nextcloud), automatycznie odziedziczy te same, poprawne uprawnienia. Bez tego, nowo dodany magazyn mógłby być niewidoczny dla Kavita, ponieważ nie miałby odpowiednich uprawnień do odczytu.

    Na koniec, przed zapisaniem zmian, należy bezwzględnie zaznaczyć pole Apply permissions recursively (Zastosuj uprawnienia rekursywnie). Spowoduje to nadanie skonfigurowanych uprawnień nie tylko samemu zbiorowi danych, ale także wszystkim plikom i folderom, które już się w nim znajdują. Po wykonaniu tych kroków i zapisaniu listy ACL, nasz fundament pod dane jest gotowy, solidny i poprawnie zabezpieczony.

    Prywatna Chmura Plików: Instalacja i Konfiguracja Nextcloud

    Mając przygotowaną i zabezpieczoną przestrzeń na dane, możemy przystąpić do instalacji pierwszego filaru naszego systemu – prywatnej chmury Nextcloud. Będzie ona pełnić rolę bramy do naszej biblioteki, umożliwiając łatwe zarządzanie plikami z dowolnego miejsca.

    Instalacja Aplikacji

    Instalacja Nextcloud w TrueNAS SCALE jest procesem prostym. W interfejsie webowym należy przejść do sekcji Apps, wybrać zakładkę Available Applications i wyszukać nextcloud. Należy upewnić się, że wybrana aplikacja pochodzi z oficjalnego katalogu TrueNAS Community. Podczas instalacji większość opcji można pozostawić domyślnych, z wyjątkiem danych administratora, które należy skonfigurować.

    Budowanie Mostu do Danych: Izolacja Kontenerów i Montowanie Pamięci

    Kluczowym konceptem w TrueNAS SCALE jest izolacja kontenerów. Każda aplikacja, w tym Nextcloud, działa we własnym, odseparowanym środowisku i domyślnie nie ma dostępu do głównego systemu plików serwera. Aby Nextcloud mógł „zobaczyć” nasze przygotowane wcześniej zbiory danych, musimy zbudować między nimi most. Służy do tego funkcja Additional Storage w ustawieniach aplikacji.

    1. W sekcji Apps -> Installed Applications należy odnaleźć Nextcloud i kliknąć Edit.
    2. Należy przewinąć w dół do sekcji Storage i kliknąć Add obok Additional Storage.
    3. W tym miejscu konfigurujemy „most”, definiując dwie ścieżki:
      • Host Path (Ścieżka Hosta): To jest rzeczywista, fizyczna lokalizacja naszych danych na serwerze. Wskażemy tu nasz główny zbiór danych: /mnt/Pool1/nextcloud.
      • Mount Path in Pod (Ścieżka Montowania): To jest wirtualna ścieżka, pod którą dane z Host Path będą widoczne wewnątrz kontenera Nextcloud. Należy wpisać tu prostą i łatwą do zapamiętania nazwę, np. /moje_dane.

    Po zapisaniu tych ustawień TrueNAS zrestartuje aplikację Nextcloud. Od tego momentu, z perspektywy aplikacji, w jej systemie plików istnieje folder /moje_dane, który jest bezpośrednim odzwierciedleniem zawartości /mnt/Pool1/nextcloud na serwerze.

    Rozwiązywanie Problemów z Nextcloud

    Nawet przy starannej konfiguracji, interakcja między systemem plików, kontenerem i aplikacją może prowadzić do problemów. Oto najczęstsze z nich, wraz z rozwiązaniami zdiagnozowanymi podczas rzeczywistego wdrożenia:

    • Problem 1: Błąd „Storage is temporarily not available” lub „Service Unavailable” (HTTP 503).Ten błąd niemal zawsze wskazuje na problem z uprawnieniami. Aplikacja próbuje uzyskać dostęp do swoich plików, ale system operacyjny jej na to nie pozwala. Pierwszym krokiem jest powrót do Sekcji 2 tego przewodnika i skrupulatne zweryfikowanie wszystkich ustawień ACL dla zbioru danych. Należy upewnić się, że właścicielem jest apps i ma on uprawnienia Full Control z flagą Inherit, a zmiany zostały zastosowane rekursywnie.
    • Problem 2: Brak możliwości tworzenia folderów mimo poprawnych ACL; komunikaty o istniejących folderach, których nie widać.To bardziej złożony problem, który pojawia się, gdy wewnętrzny indeks plików Nextcloud (przechowywany w bazie danych) staje się niespójny z rzeczywistą zawartością systemu plików. Może to być spowodowane konfliktem między synchronizacją klienta desktopowego a mechanizmem „Pamięci zewnętrznej”. Klient próbuje wgrywać pliki do domyślnej lokalizacji Nextcloud, podczas gdy my oczekujemy ich w podmontowanym folderze. Aplikacja tworzy foldery, ale w niewidocznym dla nas miejscu, co prowadzi do błędów „folder już istnieje”. Rozwiązanie: Należy zmusić Nextcloud do ponownego, kompletnego przeskanowania plików i odbudowania swojego indeksu. Służy do tego narzędzie wiersza poleceń occ.
      1. Należy połączyć się z konsolą serwera TrueNAS (np. przez SSH).
      2. Należy wejść do wnętrza kontenera Nextcloud za pomocą komendy: docker exec -it ix-nextcloud-nextcloud-1 /bin/bash
      3. Będąc w kontenerze, należy uruchomić skanowanie dla wszystkich użytkowników, zalogować się jako root: sudo -i , i wykonać komendę: php /var/www/html/occ files:scan –all
      4. Po zakończeniu skanowania należy opuścić kontener (komendą exit) i zrestartować aplikację Nextcloud w interfejsie TrueNAS.

    Ten proces naprawia niespójności w bazie danych aplikacji, rozwiązując problemy z „niewidzialnymi” folderami i przywracając pełną funkcjonalność zapisu.

    Twoja Osobista Czytelnia: Instalacja i Konfiguracja Kavita

    Gdy nasze centrum zarządzania plikami, Nextcloud, jest już w pełni operacyjne, nadszedł czas na stworzenie eleganckiej przestrzeni do czytania. Instalacja i konfiguracja Kavity jest znacznie prostsza, pod warunkiem, że rozumiemy jej specyficzne wymagania dotyczące struktury danych.

    Instalacja Aplikacji

    Podobnie jak w przypadku Nextcloud, Kavitę instalujemy z oficjalnego katalogu TrueNAS Community. W sekcji Apps należy wyszukać kavita i postępować zgodnie z instrukcjami instalatora, konfigurując dane administratora.

    Wskazanie Źródła

    Kavita, tak jak Nextcloud, działa w odizolowanym kontenerze i potrzebuje „mostu” do naszych zbiorów danych. Proces ten jest analogiczny do tego, który przeprowadziliśmy dla Nextcloud, ale wykonamy go dwukrotnie – osobno dla książek i magazynów.

    1. W ustawieniach aplikacji Kavita w TrueNAS (Apps -> Installed Applications -> kavita -> Edit) należy przejść do sekcji Storage.
    2. Korzystając z Additional Storage, dodajemy dwa wpisy:
      • Pierwszy wpis (Książki):
        • Host Path: /mnt/Pool1/nextcloud/books
        • Mount Path in Pod: /books
      • Drugi wpis (Magazyny):
        • Host Path: /mnt/Pool1/nextcloud/magazines
        • Mount Path in Pod: /magazines
    3. Po zapisaniu konfiguracji aplikacja Kavita zostanie zrestartowana. Od tej pory wewnątrz jej kontenera będą widoczne dwa foldery: /books i /magazines, które bezpośrednio wskazują na nasze dane.

    Tworzenie Bibliotek

    Po zalogowaniu się do interfejsu webowego Kavity, musimy poinformować ją, gdzie znajdują się nasze zbiory i jakiego są typu.

    1. Należy przejść do Server Settings -> Libraries.
    2. Należy kliknąć Add Library.
    3. Tworzymy pierwszą bibliotekę dla książek:
      • Name: Książki
      • Type: Book (jest to uniwersalny typ dla plików EPUB i PDF)
      • Folder: Po kliknięciu Browse należy wybrać folder /books.
    4. Następnie, ponownie klikając Add Library, tworzymy drugą bibliotekę dla magazynów:
      • Name: Magazyny
      • Type: Book
      • Folder: Należy wybrać folder /magazines.

    Po zapisaniu Kavita rozpocznie skanowanie wskazanych folderów w poszukiwaniu plików.

    Sekret Prawidłowego Skanowania: „Pusta Biblioteka” Rozwiązana

    W tym momencie wielu użytkowników napotyka na problem: mimo że pliki PDF lub EPUB znajdują się w odpowiednich folderach, a uprawnienia są poprawne, biblioteka w Kavita pozostaje pusta. To nie jest błąd, lecz cecha wynikająca z filozofii działania aplikacji.

    Serwery mediów, takie jak Kavita, Plex czy Jellyfin, nie są prostymi przeglądarkami plików. Są to narzędzia do zarządzania biblioteką, które narzucają własną, opartą na metadanych logikę na strukturę plików. Kavita oczekuje, że każdy odrębny element – każda książka, każdy numer magazynu, każdy tom komiksu – będzie znajdował się w swoim własnym, dedykowanym podfolderze. To pozwala jej poprawnie zidentyfikować „serię” (nazwa folderu) i jej zawartość (plik w środku).

    • Zła Struktura (nie zadziała):/magazines/ ├── magazyn_A_01-2024.pdf └── magazyn_A_02-2024.pdf
    • Dobra Struktura (zadziała):/magazines/ ├── Magazyn A (01-2024)/ │ └── magazyn_A_01-2024.pdf └── Magazyn A (02-2024)/ └── magazyn_A_02-2024.pdf

    Po zorganizowaniu plików w ten sposób i ponownym uruchomieniu skanowania w Kavicie (Force Scan), biblioteka poprawnie wypełni się zawartością, prezentując okładkę każdego numeru jako osobny element. Zrozumienie tej zasady jest kluczowe do bezproblemowego korzystania nie tylko z Kavity, ale z większości oprogramowania do self-hostingu mediów.

    Wygodny Dostęp z Komputera: Sieciowe Udostępnianie Plików

    Aby nasza biblioteka była łatwa w utrzymaniu, potrzebujemy prostego sposobu na dodawanie do niej nowych plików bezpośrednio z naszego komputera. Najlepszą metodą jest udostępnienie naszych zbiorów danych w sieci lokalnej. TrueNAS oferuje dwa popularne protokoły do tego celu: SMB (Samba) i NFS. Wybór między nimi ma istotne konsekwencje dla łatwości konfiguracji i bezproblemowego działania.

    Wielka Debata: SMB kontra NFS w Sieci Domowej

    Chociaż oba protokoły służą do udostępniania plików, robią to w fundamentalnie różny sposób, co ma bezpośredni wpływ na użytkownika domowego.

    • NFS (Network File System): Jest to protokół natywny dla środowisk Linux/UNIX. W teorii oferuje nieco niższy narzut i potencjalnie wyższą wydajność w sieciach składających się wyłącznie z maszyn linuksowych. Jednak jego model uprawnień, oparty na identyfikatorach użytkownika (UID) i grupy (GID), jest źródłem niekończących się problemów w środowiskach mieszanych. Jak pokazały rzeczywiste trudności, poprawne zmapowanie użytkowników między serwerem TrueNAS a komputerem klienckim (np. Ubuntu czy macOS) może być skomplikowane i prowadzić do trudnych do zdiagnozowania błędów „access denied” lub „permission denied”, nawet gdy konfiguracja wydaje się poprawna.
    • SMB (Server Message Block): Jest to protokół natywny dla systemów Windows, ale dzięki implementacji Samba jest doskonale wspierany na wszystkich platformach, w tym macOS i Linux. Jego największą zaletą jest model uwierzytelniania oparty na nazwie użytkownika i haśle. Zamiast martwić się o dopasowywanie UID/GID, po prostu tworzymy na serwerze dedykowanego użytkownika (np. smb_user z hasłem) i nadajemy mu uprawnienia do folderu. Podczas łączenia się z dowolnego komputera w sieci, podajemy te dane logowania i uzyskujemy dostęp. Jest to model znacznie prostszy do zrozumienia, wdrożenia i zarządzania w typowej sieci domowej.

    Werdykt: Dla naszego celu – łatwego i niezawodnego dodawania plików do biblioteki z różnych komputerów – SMB jest zdecydowanie prostszym, bardziej elastycznym i mniej podatnym na błędy wyborem.

    CechaSMB (Server Message Block)NFS (Network File System)
    Główne środowiskoNatywny dla Windows, doskonale wspierany na Linux/macOSNatywny dla Linux/UNIX
    UwierzytelnianieOparte na użytkowniku i haśle (łatwe w zarządzaniu)Tradycyjnie oparte na adresie IP i mapowaniu UID/GID (skomplikowane)
    KompatybilnośćDoskonała na wszystkich popularnych systemach operacyjnychNajlepsza w homogenicznych sieciach Linux/UNIX; może sprawiać problemy z Windows/macOS
    Zarządzanie uprawnieniamiIntuicyjne, oparte na listach ACL dla konkretnych użytkownikówZależne od spójności identyfikatorów użytkowników w całej sieci
    Łatwość konfiguracjiWysoka; prosta do wdrożenia w sieci domowejNiższa; wymaga głębszego zrozumienia mapowania użytkowników
    RekomendacjaZalecany dla typowych sieci domowych i środowisk mieszanychZalecany dla zaawansowanych użytkowników w sieciach opartych wyłącznie na Linuksie

    Poradnik: Konfiguracja Udziału SMB w TrueNAS

    Udostępnienie naszych danych przez SMB jest niezwykle proste:

    1. W interfejsie TrueNAS należy przejść do sekcji Shares.
    2. Przy Windows (SMB) Shares należy kliknąć Add.
    3. W polu Path należy wybrać nasz główny zbiór danych, czyli /mnt/Pool1/nextcloud.
    4. W polu Name należy wpisać prostą nazwę, pod jaką udział będzie widoczny w sieci, np. nextcloud.
    5. Po zapisaniu udziału należy upewnić się, że usługa SMB jest włączona w sekcji Services.

    Ostatnim krokiem jest nadanie uprawnień do tego udziału dla konkretnego użytkownika. Należy stworzyć w TrueNAS nowego, lokalnego użytkownika (np. o nazwie smb_user) i dodać go do listy ACL dla zbioru danych nextcloud (zgodnie z instrukcjami w Sekcji 2), nadając mu uprawnienia Full Control.

    Poradnik: Automatyczne Montowanie Udziału w Ubuntu przez /etc/fstab

    Aby uniknąć konieczności ręcznego łączenia się z udziałem sieciowym po każdym uruchomieniu komputera, możemy skonfigurować system Ubuntu tak, aby robił to automatycznie. Wykorzystamy do tego plik /etc/fstab.

    1. Instalacja narzędzi: Najpierw należy upewnić się, że zainstalowany jest pakiet cifs-utils:sudo apt-get update && sudo apt-get install cifs-utils
    2. Stworzenie punktu montowania: Należy utworzyć pusty folder, w którym pojawi się zawartość udziału sieciowego:sudo mkdir /media/nasza_biblioteka
    3. Stworzenie pliku z danymi logowania: Przechowywanie hasła bezpośrednio w pliku /etc/fstab jest niebezpieczne. Lepszym rozwiązaniem jest stworzenie osobnego, chronionego pliku:
      • Należy utworzyć plik: nano ~/.smbcredentials
      • W pliku należy wpisać dane w formacie:username=smb_user password=haslo_uzytkownika
      • Należy zabezpieczyć plik, nadając mu odpowiednie uprawnienia: chmod 600 ~/.smbcredentials
    4. Dodanie wpisu do /etc/fstab: Należy otworzyć plik /etc/fstab z uprawnieniami administratora (sudo nano /etc/fstab) i dodać na końcu nową linię, zastępując adres IP, ścieżki i nazwę użytkownika swoimi danymi://192.168.0.13/nextcloud /media/nasza_biblioteka cifs credentials=/home/nazwa_uzytkownika/.smbcredentials,uid=1000,gid=1000,iocharset=utf8,vers=3.0 0 0
      • //192.168.0.13/nextcloud: Adres sieciowy i nazwa udziału SMB.
      • /media/nasza_biblioteka: Lokalny punkt montowania.
      • credentials=...: Ścieżka do pliku z danymi logowania.
      • uid=1000,gid=1000: Ustawia lokalnego użytkownika i grupę jako właścicieli zamontowanego folderu, co zapewnia pełne uprawnienia do zapisu.
      • vers=3.0: Wymusza użycie nowoczesnej i bezpiecznej wersji protokołu SMB.

    Po zapisaniu pliku /etc/fstab i ponownym uruchomieniu komputera, folder z biblioteką będzie automatycznie dostępny w lokalizacji /media/nasza_biblioteka, gotowy do łatwego dodawania nowych książek i magazynów.

    Sekcja 6: Biblioteka w Twojej Kieszeni: Dostęp Mobilny i Zdalny

    Stworzyliśmy potężny system, ale jego prawdziwa wartość ujawnia się, gdy możemy z niego korzystać swobodnie, niezależnie od tego, gdzie jesteśmy. W tej sekcji skonfigurujemy dostęp do naszej biblioteki z urządzeń mobilnych oraz bezpieczny dostęp zdalny z dowolnego miejsca na świecie, bez narażania naszej sieci domowej na niebezpieczeństwo.

    Aplikacja bez App Store: Kavita jako Progresywna Aplikacja Webowa (PWA)

    Jedną z najmocniejszych stron Kavity jest jej nowoczesny interfejs webowy, który został zaprojektowany jako Progresywna Aplikacja Webowa (PWA).7 PWA to technologia, która pozwala stronie internetowej zachowywać się jak natywna aplikacja mobilna. Możemy ją „zainstalować” na ekranie głównym smartfona lub tabletu, a po uruchomieniu otworzy się na pełnym ekranie, bez paska adresu przeglądarki, oferując płynne i zintegrowane doświadczenie.15

    Instalacja PWA jest niezwykle prosta i nie wymaga wizyty w żadnym sklepie z aplikacjami 16:

    • Na urządzeniach z systemem iOS (iPhone/iPad):
      1. Należy otworzyć przeglądarkę Safari i przejść pod adres lokalny naszej instancji Kavity (np. http://192.168.0.13:5000).
      2. Należy dotknąć ikony „Udostępnij” (kwadrat ze strzałką w górę).
      3. Z listy opcji należy wybrać „Dodaj do ekranu początkowego”.
      4. Należy potwierdzić nazwę i dotknąć „Dodaj”. Na ekranie głównym pojawi się ikona Kavity.
    • Na urządzeniach z systemem Android:
      1. Należy otworzyć przeglądarkę Chrome i przejść pod adres lokalny Kavity.
      2. Należy dotknąć menu z trzema kropkami w prawym górnym rogu.
      3. Z menu należy wybrać opcję „Zainstaluj aplikację” lub „Dodaj do ekranu głównego”.
      4. Ikona Kavity zostanie dodana do listy aplikacji i na ekran główny.

    Dzięki PWA, czytanie w podróży staje się równie wygodne, jak w dedykowanej aplikacji, z zachowaniem pełnej prywatności i kontroli.

    Bezpieczna Brama na Świat: Nginx Proxy Manager i Cloudflare

    Aby uzyskać dostęp do naszej biblioteki spoza sieci domowej, moglibyśmy po prostu przekierować porty na naszym routerze. Jest to jednak rozwiązanie niebezpieczne, ponieważ wystawia nasz serwer bezpośrednio na ataki z internetu, a także zdradza nasz domowy adres IP. Znacznie bezpieczniejszym i bardziej profesjonalnym podejściem jest użycie odwrotnego serwera proxy (reverse proxy) w połączeniu z usługą Cloudflare.

    Cel: Chcemy uzyskać dostęp do naszej biblioteki pod przyjaznym adresem, np. kavita.mojadomena.pl, z szyfrowaniem SSL, bez otwierania wielu portów i bez ujawniania naszego adresu IP.

    Krok 1: Konfiguracja Cloudflare

    Cloudflare to usługa, która stanie się pośrednikiem między internetem a naszym serwerem. Oferuje darmowy plan, który jest w zupełności wystarczający dla naszych potrzeb.

    1. Rejestracja i dodanie domeny: Należy założyć darmowe konto na Cloudflare i dodać swoją domenę (jeśli jej nie posiadamy, można ją tanio zarejestrować). Cloudflare poinstruuje, jak zmienić serwery nazw (nameservers) u rejestratora domeny.
    2. Tworzenie tokenu API: Nasz serwer proxy będzie potrzebował sposobu na automatyczne udowodnienie, że jest właścicielem domeny, aby uzyskać certyfikat SSL. Jest to kluczowe, zwłaszcza przy zmiennym adresie IP.
      • W panelu Cloudflare należy przejść do My Profile -> API Tokens -> Create Token.
      • Należy użyć szablonu Edit zone DNS.
      • W sekcji Zone Resources należy wybrać konkretną domenę, której token ma dotyczyć.
      • Po utworzeniu tokenu należy go skopiować i zapisać w bezpiecznym miejscu. Będzie potrzebny tylko raz.23

    Krok 2: Instalacja i Konfiguracja Nginx Proxy Manager (NPM)

    NPM to łatwy w zarządzaniu odwrotny serwer proxy z graficznym interfejsem. Będzie on działał na naszym serwerze TrueNAS i pełnił rolę „dyspozytora ruchu”.

    1. Uwolnienie portów 80 i 443: Domyślnie interfejs webowy TrueNAS może zajmować standardowe porty HTTP (80) i HTTPS (443). Zanim zainstalujemy NPM, należy w ustawieniach TrueNAS (System Settings -> General) zmienić te porty na inne, np. 81 i 444.24
    2. Instalacja NPM: Należy zainstalować aplikację nginx-proxy-manager z katalogu TrueNAS Community. Podczas instalacji należy upewnić się, że w sekcji Network Configuration porty HTTP Port i HTTPS Port są ustawione odpowiednio na 80 i 443.23
    3. Pierwsze logowanie: Dostęp do panelu administracyjnego NPM uzyskujemy pod adresem IP serwera i portem webowym (domyślnie 81 lub inny skonfigurowany, np. http://192.168.0.13:81). Domyślne dane logowania to admin@example.com z hasłem changeme, które należy natychmiast zmienić.26
    4. Tworzenie certyfikatu SSL:
      • W panelu NPM należy przejść do SSL Certificates -> Add SSL Certificate -> Let's Encrypt.
      • W polu Domain Names należy wpisać naszą domenę w formie wildcard, np. *.mojadomena.pl.
      • Należy włączyć opcję Use a DNS Challenge.
      • Jako DNS Provider należy wybrać Cloudflare.
      • W polu Credentials File Content należy wkleić skopiowany wcześniej token API od Cloudflare.23
      • Po zaakceptowaniu warunków i zapisaniu, NPM automatycznie uzyska ważny certyfikat SSL dla naszej domeny i wszystkich jej subdomen.
    5. Konfiguracja hosta proxy dla Kavity:
      • Należy przejść do Hosts -> Proxy Hosts -> Add Proxy Host.
      • W zakładce Details:
        • Domain Names: kavita.mojadomena.pl
        • Scheme: http
        • Forward Hostname / IP: lokalny adres IP serwera TrueNAS (np. 192.168.0.13)
        • Forward Port: port, na którym działa Kavita (np. 5000)
        • Należy włączyć opcje Block Common Exploits i Websockets Support.
      • W zakładce SSL:
        • SSL Certificate: Należy wybrać z listy utworzony wcześniej certyfikat wildcard.
        • Należy włączyć opcje Force SSL i HTTP/2 Support.
      • Po zapisaniu, NPM zacznie automatycznie kierować cały ruch przychodzący na adres https://kavita.mojadomena.pl do naszej lokalnej instancji Kavity, szyfrując całą komunikację.

    Dzięki tej konfiguracji uzyskujemy bezpieczny, profesjonalny dostęp zdalny. Nasz domowy adres IP pozostaje ukryty, a cała komunikacja jest szyfrowana. Dodanie dostępu do innych usług, takich jak Nextcloud, sprowadza się do stworzenia kolejnego hosta proxy (np. cloud.mojadomena.pl) – bez konieczności otwierania dodatkowych portów na routerze.

    Zakończenie: Twoje Prywatne Cyfrowe Sanktuarium

    Po przejściu przez kolejne etapy konfiguracji, od fundamentalnych ustawień systemu plików po zaawansowaną konfigurację sieciową, stworzyliśmy coś znacznie więcej niż tylko serwer plików. Zbudowaliśmy w pełni funkcjonalny, prywatny ekosystem cyfrowy, który oddaje nam pełną kontrolę nad jedną z naszych najcenniejszych własności – wiedzą i rozrywką zawartą w naszej bibliotece.

    System ten opiera się na solidnych i sprawdzonych technologiach. Niezawodny fundament ZFS w TrueNAS SCALE chroni integralność każdego bitu naszych danych. Wszechstronność Nextcloud zapewnia bezproblemowe zarządzanie plikami i ich synchronizację, stanowiąc solidne zaplecze logistyczne. Wreszcie, elegancja i szybkość Kavity przekształcają surowe pliki w piękną, interaktywną czytelnię. Całość, spięta bezpiecznym dostępem zdalnym za pomocą Nginx Proxy Manager i Cloudflare, tworzy rozwiązanie klasy korporacyjnej, dostępne w zaciszu własnego domu.

    Wartość tego projektu wykracza poza czystą technologię. Jest to praktyczne zastosowanie idei cyfrowej suwerenności. Wysiłek włożony w konfigurację owocuje systemem, który jest w pełni nasz – prywatny, wolny od komercyjnych ograniczeń, subskrypcji i śledzenia. To my decydujemy, kto ma dostęp do naszych książek, jak są one prezentowane i na jakich urządzeniach możemy je czytać.

    Stworzenie tak potężnego i zintegrowanego systemu jest możliwe tylko dzięki wysiłkowi tysięcy programistów i entuzjastów z całego świata, którzy tworzą i rozwijają oprogramowanie open-source. Projekty takie jak TrueNAS, Nextcloud i Kavita są świadectwem siły współpracy i wspólnego dążenia do tworzenia narzędzi, które wzmacniają pozycję użytkownika. Mamy nadzieję, że ten przewodnik nie tylko posłużył jako mapa do osiągnięcia celu, ale także zainspirował do dalszego odkrywania fascynującego świata self-hostingu i otwartego oprogramowania.