- 5 Kwiecień 2008
- 10 234
- 2 560
- 405
- Odznaki
- 205
- QNAP
- TS-x77
- Ethernet
- 1 GbE
Trzy aplikacje i jeden QNAP. Urządzamy sobie własny kawałek sieci
Czytnik wiadomości, porządna strona startowa i pliki, które można obejrzeć oraz udostępnić przez przeglądarkę. Wszystko na własnym NAS-ie. Najpierw oddamy WebHostPro porty 80 i 443, potem uruchomimy FreshRSS, Heimdalla i FileRise. Krok po kroku, z poleceniami i z wyjaśnieniem, co właściwie robią.
Siemanko, QNAP-owcy!
Miał być spokojny wieczór przy komputerze. Kilka wiadomości do przeczytania, zdjęcie do pokazania domownikom, może drobny porządek w zakładkach. Tyle że każda aplikacja ma inny adres, wiadomości czekają na kilku stronach, a potrzebny plik znowu leży gdzieś głębiej. Dobry materiał na mały warsztat, po którym zostaje coś działającego.
Zaczniemy od WebHostPro. Na nim postawimy trzy aplikacje open source, każdą we własnym folderze. FreshRSS zbierze nowe teksty z wybranych stron. Heimdall uporządkuje wejścia do usług na NAS-ie. FileRise da plikom podgląd i linki do udostępniania. Na koniec sprawdzimy najczęstsze potknięcia oraz drogę powrotną do serwera WWW z QTS.
Zanim zaczniemy: sprzęt, adres i miejsce na aplikacje
Potrzebujesz QNAP-a Intel/AMD, w architekturze x86_64, z QTS 6.0 albo QuTS hero 6.0 lub nowszym. Instalujemy WebHostPro 0.8.2 i korzystamy z PHP 8.4. Wybierz aktualne wydanie poprawkowe PHP 8.4 dostępne w WebHostPro.
W App Center → Ustawienia → Repozytorium aplikacji → Dodaj wpisz nazwę QNAP Utilities i adres
https://www.qnaputilities.com/repo.xml. Następnie z listy QNAP Utilities zainstaluj (example) WebHostPro. Pomoc ze zrzutami znajdziesz także w poradniku o hostingu.Pliki aplikacji pobierzemy przez FAQ SSH na koncie administratora. Włącz je w Panel sterowania → Usługi sieci i plików → Telnet / FAQ SSH, zaznaczając „Zezwól na połączenie FAQ SSH”. WebHostPro nie ma w panelu funkcji przesyłania plików; można korzystać z FAQ SSH, SMB albo File Station.
Przykładowy adres NAS-a to 192.168.1.20. Wszędzie podstaw własny, również w nazwach:
| Aplikacja | Nazwa witryny | Serwer WWW |
|---|---|---|
| FreshRSS | rss.192-168-1-20.nip.io | httpd |
| Heimdall | home.192-168-1-20.nip.io | nginx |
| FileRise | files.192-168-1-20.nip.io | httpd |
Usługa nip.io odczytuje adres z nazwy:
rss.192-168-1-20.nip.io wskazuje 192.168.1.20. Dla NAS-a pod 10.0.0.5 użyjesz rss.10-0-0-5.nip.io.To nadal sieć lokalna. Nazwa nip.io wskazująca prywatny adres nie publikuje witryny w Internecie. Komputer lub telefon musi mieć dostęp do tej sieci, bezpośrednio albo przez odpowiednio skonfigurowany VPN. W tym poradniku nie tworzymy przekierowań na routerze. Witryny uruchomimy bez TLS, czyli przez HTTP; ten wariant służy pracy w zaufanej sieci lokalnej. HTTP nie szyfruje przesyłanych danych ani danych logowania.
1. Zróbmy miejsce na portach 80 i 443
WebHostPro ma własny serwer frontowy nginx. Początkowo przyjmuje połączenia na 9542 dla HTTP i 9543 dla HTTPS. Panel zarządzania działa osobno, na 9541. Warto zapamiętać tę różnicę, żeby później nie szukać strony w oknie administracyjnym.
Pierwsze logowanie
Kliknij Otwórz w App Center albo przejdź do
https://192.168.1.20:9541/. Panel używa certyfikatu samopodpisanego. Jeśli przeglądarka pyta o zaufanie, sprawdź, czy otwierasz właściwy lokalny adres NAS-a.Na stronie „Pierwsze logowanie” wpisz dwukrotnie hasło mające co najmniej 10 znaków i kliknij „Ustaw hasło”. Formularz przyjmuje je z komputera w LAN, w ciągu 60 minut od uruchomienia panelu.
Sprawdź, kto zajmuje porty
Otwórz „Serwer frontowy i porty”. Komunikat „Porty 80 i 443 są zajęte: serwer frontowy zostaje na 9542 i 9543” oznacza, że najpierw trzeba zwolnić wskazane porty. Panel pokazuje program, potrzebną zmianę w QTS i jej konsekwencje. WebHostPro nie przestawia ustawień QTS za Ciebie.
Zwolnij port 80
W Panel sterowania → Aplikacje → Serwer WWW odznacz „Włącz serwer WWW” i kliknij „Zastosuj”.
QTS wyświetli ostrzeżenie: „Wyłączenie serwera WWW może wpłynąć na działanie aplikacji w App Center”. Zatwierdź przez OK. Dotychczasowe aplikacje obsługiwane przez ten serwer WWW przestaną być przez niego udostępniane. Dotyczy to również adresów takich jak
/phpMyAdmin/, jeżeli korzystały z tego mechanizmu. Przeniesienie frontu nie jest automatyczną migracją każdej takiej aplikacji.Przenieś panel QTS na 8443
Otwórz Panel sterowania → System → Ustawienia ogólne → Zarządzanie systemem. Przy „Włącz bezpieczne połączenie (HTTPS)” zmień „Numer portu” z 443 na 8443, następnie kliknij „Zastosuj”.
Nowy adres panelu to
https://192.168.1.20:8443/. Adres http://192.168.1.20:8080/ pozostaje alternatywą, jeśli dostęp HTTP jest nadal włączony na tym porcie. Popraw zakładki i zapisane linki, w tym odwołania myQNAPcloud.Jeżeli masz już przekierowanie routera prowadzące na port 443 NAS-a, sprawdź jego cel: po zmianie będzie tam odpowiadać WebHostPro. Samo przeniesienie panelu QTS nie aktualizuje reguły routera.
Oddaj porty WebHostPro
Wróć do „Serwer frontowy i porty”. Gdy zobaczysz „Porty 80 i 443 są wolne.”, kliknij „Przenieś serwer frontowy na 80 i 443”. Aplikacja sprawdzi konfigurację serwerów, zastosuje zmianę i zachowa poprzednie pliki w migawce.
Otwórz
http://192.168.1.20/. Witryna domyślna udostępnia folder Web z QTS dla nazw, których nie wykorzystuje żadna Twoja witryna, również dla samego adresu NAS-a. Uruchamia PHP i odczytuje .htaccess. Zawartość strony zależy od plików w Web; ilustracja pokazuje przykład z index.php.Ustawienia znajdziesz w „Witryny” → „Witryna domyślna”. Po HTTPS używa ona certyfikatu QTS. Jeśli jest samopodpisany, przeglądarka zgłosi ostrzeżenie. Witryna domyślna nie wyświetla listy plików ani nie udostępnia folderów Twoich witryn, nazw zaczynających się od kropki (z wyjątkiem
.well-known) czy folderów QTS zaczynających się od @.2. Każda aplikacja dostaje własny pokój
WebHostPro tworzy dla witryny osobny folder, konto i PHP. Odwiedzający widzi jej podfolder
public. Przejdźmy kreator dla FreshRSS; później powtórzysz tę samą drogę dla dwóch pozostałych nazw.1. Domena. W „Witryny” kliknij „Dodaj witrynę”. Wpisz
rss.192-168-1-20.nip.io i odznacz „Także www.rss.192-168-1-20.nip.io”. Gdy panel zapyta o miejsce zapisywania witryn, wybierz folder udostępniony Web. Do niego odnoszą się polecenia poniżej. W QuTS hero folder przeznaczony na witryny nie może mieć włączonych zaawansowanych uprawnień folderów (Advanced Folder Permissions). Jeśli panel zgłosi ten problem, wskaż odpowiedni osobny folder i uwzględnij jego ścieżkę w poleceniach.2. DNS. Wybierz „Mój rejestrator lub dostawca DNS”. Wyczyść oba pola publicznych adresów NAS-a: IPv4 i IPv6. Nazwa nip.io już wskazuje właściwy adres. Komunikat „Bez adresu IPv4 nie ma rekordów do pokazania ani listy kontrolnej; witryna działa dla nazw, na które ten NAS odpowiada.” jest tutaj oczekiwany.
3. Rejestrator. Dla nip.io niczego tu nie zmieniasz.
4. Witryna. Wybierz PHP. W polu „Serwer WWW” ustaw httpd dla FreshRSS i FileRise; ich reguły
.htaccess muszą być odczytywane. Dla Heimdalla wybierzesz nginx. W polu „Wersja PHP” ustaw 8.4 i zanotuj lokalizację po „Jej folder: …”.5. Baza danych. Zostaw „Bez bazy danych”. Aplikacje użyją plików albo SQLite; nie tworzymy osobnego serwera SQL.
6. Certyfikat. Wybierz „Bez TLS”. Przeniesienie frontu na 443 nie włącza automatycznie HTTPS w każdej witrynie. Konfigurację publicznej domeny z Let's Encrypt opisuje osobny poradnik o hostingu.
7. Podsumowanie. Sprawdź ustawienia, kliknij „Podgląd zmian”, przeczytaj listę plików i wyniki sprawdzenia konfiguracji. Następnie wybierz „Zastosuj ten plan”. Sam podgląd pozostawia zmiany jako szkic.
8. Uprawnienia: po wgraniu aplikacji. Pliki skopiowane kontem administratora trzeba przekazać kontu witryny. Na karcie „Pliki” kliknij „Napraw uprawnienia” i potwierdź. Wykonasz to po każdej z poniższych instalacji, przed pierwszym otwarciem aplikacji.
Polecenia poniżej służą świeżej instalacji w osobnych katalogach utworzonych przez kreator. Jeśli wybrałeś inne miejsce niż Web, dostosuj
cd do „Jej folder: …”. Sprawdź, czy zmiana katalogu się powiodła, zanim wykonasz następne polecenia. Tych sekwencji nie traktuj jako instrukcji aktualizowania istniejących instalacji.3. FreshRSS: niech wiadomości przychodzą do Ciebie
Czytnik RSS ma przyjemną właściwość: pozwala wybrać źródła i zebrać je w jednym miejscu. Wieczorne zaglądanie na znajome strony może się zacząć od jednej listy. Postawimy FreshRSS 1.30.4, na PHP 8.4 i httpd.
Zaloguj się przez FAQ SSH jako administrator i wykonaj:
Bash:
cd /share/Web/rss.192-168-1-20.nip.io
wget -O FreshRSS-1.30.4.zip https://github.com/FreshRSS/FreshRSS/archive/refs/tags/1.30.4.zip
unzip -q FreshRSS-1.30.4.zip
cp -a FreshRSS-1.30.4/. public/
cp public/.htaccess.dist public/.htaccess
rm -r FreshRSS-1.30.4 FreshRSS-1.30.4.zip
FreshRSS trzyma strony w
p, a WebHostPro udostępnia public. Dlatego kopiujemy cały projekt do public i włączamy dostarczony .htaccess.dist. Reguły .htaccess blokują dostęp do data, app i pozostałych wewnętrznych folderów. W tej konfiguracji potrzebujesz httpd; nginx tych plików nie odczytuje.Kliknij „Napraw uprawnienia”, następnie otwórz
http://rss.192-168-1-20.nip.io/. Instalator przeprowadzi Cię przez język, sprawdzenie wymagań, wybór SQLite i utworzenie pierwszego użytkownika.Ostrzeżenie, że katalog główny serwera nie wskazuje
./p/, wynika z przyjętego układu. Sprawdź przy tym, czy wejście na http://rss.192-168-1-20.nip.io/data/ jest zablokowane: odpowiedź 403 lub 404 jest pożądana; zawartość danych nie powinna się otwierać. Jeśli się otwiera, wróć do wyboru httpd i kopiowania .htaccess. Sam błąd dla adresu katalogu nie dowodzi jednak ochrony plików w środku. Zachowaj dostarczone z aplikacją pliki .htaccess, również te w data i app z regułą Require all denied, oraz obsługujący je serwer httpd.Kanał dodasz przyciskiem + obok „Zarządzanie subskrypcjami”. Na początek możesz wybrać:
- NASA Image of the Day:
https://www.nasa.gov/feeds/iotd-feed/. - selfh.st:
https://selfh.st/rss/. - Hacker News:
https://news.ycombinator.com/rss.
Język zmienisz w ustawieniach, w części „Wyświetlanie”. Jasny lub ciemny wygląd podąża za ustawieniem przeglądarki. Przycisk „Aktualizuj kanały” pobiera nowe artykuły ręcznie. Żeby czytnik robił to sam, potrzebujemy jeszcze harmonogramu.
Pół godziny między obchodami: online cron
WebHostPro nie ma własnego harmonogramu. Użyjemy mechanizmu online cron opisanego w dokumentacji FreshRSS.
Pod przyciskiem z kołem zębatym otwórz Profil. W polu „Główny token uwierzytelniania” ustaw długi losowy token i kliknij „Zatwierdź”. Do tego polecenia wybierz losowy ciąg liter i cyfr, bez znaków specjalnych wymagających dodatkowego kodowania w adresie lub powłoce. Zastąp
ola własnym użytkownikiem, YOUR_TOKEN tokenem, a nazwę witryny dostosuj do adresu NAS-a:
Bash:
echo "13,43 * * * * curl -s -H 'Host: rss.192-168-1-20.nip.io' 'http://127.0.0.1/p/i/?c=feed&a=actualize&maxFeeds=10&ajax=1&user=ola&token=YOUR_TOKEN' >/dev/null 2>&1" >> /etc/config/crontab
crontab /etc/config/crontab && /etc/init.d/crond.sh restart
Żądanie uruchamia się w 13. i 43. minucie każdej godziny. Adres
127.0.0.1 kieruje do tego samego NAS-a, a nagłówek Host wskazuje witrynę FreshRSS. Ten zapis zakłada front na porcie 80. maxFeeds=10 ogranicza pojedyncze wywołanie; nie obiecuje odświeżenia dowolnie dużej listy kanałów za jednym razem.Operator
>> dopisuje wiersz. Dodaj go raz; późniejsze poprawki wprowadzaj w istniejącym wpisie, żeby nie mnożyć identycznych zadań.4. Heimdall: jedna zakładka do całego NAS-a
Teraz Heimdall 2.8.3. Dodaj witrynę
home.192-168-1-20.nip.io, wybierz PHP 8.4 i nginx, pozostałe kroki wykonaj jak wcześniej. Heimdall wymaga PHP 8.4 lub nowszego. nginx w WebHostPro kieruje adresy niepasujące do pliku do index.php, zgodnie z wymaganiami aplikacji.Przez FAQ SSH wykonaj:
Bash:
cd /share/Web/home.192-168-1-20.nip.io
wget -O Heimdall-2.8.3.zip https://github.com/linuxserver/Heimdall/archive/refs/tags/v2.8.3.zip
unzip -q Heimdall-2.8.3.zip
cp -a Heimdall-2.8.3/. .
rm -r Heimdall-2.8.3 Heimdall-2.8.3.zip
cp .env.example .env
sed -i 's|tempnam("/tmp"|tempnam(sys_get_temp_dir()|' app/Helper.php
Folder
public Heimdalla trafia do public witryny. Kopiowanie .env.example do .env to krok z README Heimdalla; przy pierwszym wejściu aplikacja utworzy klucz i bazę SQLite.Ostatni wiersz poprawia wybór folderu tymczasowego. Heimdall sprawdza ikonę kafelka w pliku pod
/tmp, a PHP witryny ma dostęp do własnego folderu i własnego katalogu tymczasowego. sys_get_temp_dir() pozwala użyć tego właściwego. Bez poprawki zapis kafelka z ikoną może kończyć się „500 Server Error”.Kliknij „Napraw uprawnienia” i otwórz
http://home.192-168-1-20.nip.io/.Kliknij „Add an application here”. Wybierz „typ aplikacji”, np. QNAP. Heimdall uzupełni ikonę i kolor. Wpisz nazwę oraz adres: dla przeniesionego panelu QTS będzie to
https://192.168.1.20:8443/; pokazany na ilustracji http://192.168.1.20:8080/ też ma sens, jeśli nadal używasz tego wejścia. Kliknij „Zapisz”.Jeżeli aplikacji nie ma na liście, wybierz None i użyj „Prześlij plik”, aby dodać ikonę. Zacznij od FreshRSS, FileRise, QTS i WebHostPro. Potem dołóż używane usługi: Rtorrent 16, Radarr, Sonarr, Prowlarr, Seerr czy Bucket & Code Server IDE. Każdy kafelek ma prowadzić tam, gdzie rzeczywiście zaglądasz. To skróty do istniejących usług; dodanie kafelka nie instaluje aplikacji.
5. FileRise: obejrzyj plik i podaj dalej
FileRise 3.38.0 uruchomimy pod
files.192-168-1-20.nip.io. W kreatorze wybierz PHP 8.4 i httpd. Aplikacja wymaga PHP 8.3 lub nowszego, a jej .htaccess zawiera reguły adresów oraz blokady bezpośredniego wywoływania wewnętrznych plików PHP.Przez FAQ SSH wykonaj:
Bash:
cd /share/Web/files.192-168-1-20.nip.io
wget -O FileRise-v3.38.0.zip https://github.com/error311/FileRise/releases/download/v3.38.0/FileRise-v3.38.0.zip
unzip -q -o FileRise-v3.38.0.zip
rm FileRise-v3.38.0.zip
sed -i "s|'/var/www/|PROJECT_ROOT . '/|" config/config.php
sed -i "s|'America/New_York'|'Europe/Warsaw'|" config/config.php
mkdir -p uploads users metadata
Archiwum nie ma folderu nadrzędnego: jego
public trafia wprost do public witryny. Pierwsze sed przenosi konfigurację katalogów uploads, users i metadata z /var/www do folderu aplikacji, obok public. Drugie ustawia strefę czasową. Taki sposób dostosowania lokalizacji opisuje dokumentacja FileRise.Kliknij „Napraw uprawnienia”, otwórz
http://files.192-168-1-20.nip.io/ i utwórz konto administratora.W tej konfiguracji FileRise pracuje we własnym folderze witryny. Pokazuje pliki przesłane przez aplikację lub skopiowane do jej uploads; nie otwiera automatycznie wszystkich folderów udostępnionych NAS-a. To ważne, gdy po zalogowaniu zastanawiasz się, gdzie podziała się domowa kolekcja zdjęć.
Język zmienisz w „Panel użytkownika”. Folder dodasz przez New → „Utwórz folder”. Następnie kliknij „Wybierz pliki” i „Prześlij”.
Przełącz widok na galerię, aby zobaczyć miniatury. Zdjęcia i filmy otworzysz w podglądzie strony; PDF pojawi się w nowej karcie, w przeglądarce PDF Twojej przeglądarki internetowej.
Udostępnianie bez zakładania konta odbiorcy
Przy pliku kliknij przycisk udostępniania. Wybierz ważność linku: od 30 minut do doby albo własny okres. Możesz też dodać hasło. Kliknij „Generuj link udostępniania”, następnie „Kopiuj link”. Można udostępniać także foldery.
Odbiorca nie potrzebuje konta FileRise. Zobaczy plik oraz przyciski otwierania i pobierania; jeśli ustawiłeś hasło linku, będzie musiał je podać. Musi jednak mieć dostęp do tej sieci lokalnej albo połączyć się przez VPN. Wysłanie adresu
files.192-168-1-20.nip.io komuś poza domem nie otwiera mu drogi do Twojego NAS-a.6. Gdy coś się potknie, zacznij od objawu
| Objaw | Co sprawdzić |
|---|---|
| Nazwa nip.io się nie otwiera | Router może blokować odpowiedzi na prywatne IP przez ochronę DNS rebinding. Dopuść potrzebne nazwy albo dodaj nazwy i adres NAS-a do pliku hosts komputera. |
| „Przenieś serwer frontowy na 80 i 443” jest szare | Na stronie „Witryny” mogą czekać szkice. Wykonaj „Podgląd zmian” i zastosuj je albo odrzuć. |
| Porty nadal są zajęte | Przeczytaj wskazany program na stronie „Serwer frontowy i porty”; zmień ustawienia właściwej usługi. |
| Nowa witryna odpowiada 403 | Sprawdź zawartość public oraz „Napraw uprawnienia”. |
| Pierwsze wejście do Heimdalla kończy się 500 | Sprawdź obecność .env i uprawnienia witryny. W świeżej instalacji wykonaj krok kopiowania .env.example oraz „Napraw uprawnienia”. |
| Heimdall zgłasza „500 Server Error” przy ikonie | Sprawdź poprawkę tempnam z polecenia sed. |
| FreshRSS nie pobiera wiadomości | Użyj „Aktualizuj kanały”; potem sprawdź wpis cron, użytkownika, token, Host i port frontu. |
| Aktualizacja QTS ponownie zajęła port 80 | Sprawdź właściciela portu. WebHostPro oferuje powrót frontu na 9542 i 9543. |
7. Powrót do portów QTS: kolejność ma znaczenie
Najpierw zwalniamy porty w WebHostPro, dopiero później oddajemy je QTS.
- W „Serwer frontowy i porty” kliknij „Przenieś serwer frontowy z powrotem na 9542 i 9543”.
- W QTS → Panel sterowania → System → Ustawienia ogólne → Zarządzanie systemem przywróć HTTPS na 443.
- W Panel sterowania → Aplikacje → Serwer WWW ponownie zaznacz „Włącz serwer WWW” i zastosuj.
Witryny WebHostPro pozostają dostępne z numerem portu, np.
http://rss.192-168-1-20.nip.io:9542/. Popraw również kafelki Heimdalla.Pamiętaj o cron: we wcześniejszym wpisie zmień
http://127.0.0.1/p/i/ na http://127.0.0.1:9542/p/i/. Reszta adresu, użytkownik, token i nagłówek Host pozostają. Po edycji /etc/config/crontab ponownie wykonaj:
Bash:
crontab /etc/config/crontab && /etc/init.d/crond.sh restart
Na koniec otwórz własną stronę startową
Na stronie „Witryny” powinieneś rozpoznać trzy utworzone aplikacje. Otwórz każdą: dodaj kanał, sprawdź kafelek, prześlij plik i wypróbuj jego link w innej sesji przeglądarki.
To dobry finał jesiennego wieczoru. Masz czytnik z własnymi źródłami, uporządkowane wejścia do usług i miejsce na pliki do pokazania domownikom. A przy okazji wiesz, gdzie są ich katalogi, kto obsługuje porty i dlaczego jedna aplikacja potrzebuje httpd, a druga pracuje na nginx.
Następnym razem otworzysz już tylko Heimdalla. Przynajmniej taki jest plan.
Wersje, źródła i ilustracje
| Aplikacja | Wersja w poradniku | Licencja lub dostępność |
|---|---|---|
| WebHostPro | 0.8.2 | Bezpłatny, repozytorium QNAP Utilities |
| FreshRSS | 1.30.4 | AGPL-3.0 |
| Heimdall | 2.8.3 | MIT |
| FileRise | 3.38.0 | Podstawowa wersja MIT; FileRise Pro jest osobną, płatną wersją |
- Poradnik o hostingu na WebHostPro, również z filmem po polsku.
- Repozytorium QNAP Utilities dla App Center.
- Dokumentacja FreshRSS.
- README i repozytorium Heimdalla.
- Repozytorium FileRise i dokumentacja.
- nip.io.
Ilustracje pochodzą z materiałów QNAP Forum Polska do tego poradnika. Przykładowe zdjęcia NASA (AS08-14-2383, AS17-148-22727, AS11-40-5903 i KSC-69PC-413) pochodzą z images.nasa.gov. Film to „Artemis I Rollout for Launch - TIMELAPSE”, NASA/Frank Michaux i Kim Shiflett. Raport NASA SP-214, „Apollo 11 Preliminary Science Report”, jest dostępny w NTRS.
qnaputilities.com