
Spis treści
Cześć!
Dzisiaj skoncentrujemy się na przygotowaniu przewodnika, który pokaże Ci, jak zmienić domyślne porty WWW (HTTP: 80 i HTTPS: 443) na serwerach plików Synology. Te porty są zazwyczaj zablokowane, ale z tym przewodnikiem będziesz w stanie je odblokować i dostosować do potrzeb Nginx Proxy Manager.
Wstęp do naszego projektu
Poradnik podzielę na kilka etapów – zaczniemy od konfiguracji w Synology DSM, a następnie przejdziemy do instalacji Nginx Proxy Manager w Docker Compose poprzez Portainera. Na koniec ustawię nazwę domeny z której będziemy mogli korzystać, aby zalogować się do systemu DSM w Synology (bez używania adresu IP). Przepisywanie DNSu skonfiguruję na już zainstalowanym lokalnym serwerze DNS AdGuard Home.
Czym jest Synology DSM?
Synology DiskStation Manager to system operacyjny stworzony przez firmę Synology Inc. Specjalnie zaprojektowany do pracy na ich serwerach NAS. DSM oferuje intuicyjne i zintegrowane środowisko do zarządzania danymi, udostępniania plików, tworzenia kopii zapasowych, a także obsługi różnorodnych aplikacji.
Czym jest Nginx Proxy Manager?
Nginx Proxy Manager to narzędzie służące do łatwego zarządzania i konfiguracji serwera proxy Nginx. Umożliwia użytkownikom konfigurowanie reguł przekierowań i zarządzanie ruchem HTTP. Jest szczególnie przydatne w kontekście obsługi wielu aplikacji na jednym serwerze. NPM dostarcza interfejs graficzny, dzięki czemu nawet osoby bez głębokiego doświadczenia w konfiguracji proxy mogą efektywnie korzystać z usług Nginx.
Przygotowanie
W celu przygotowania poradnika, przyjmiemy ustaloną nazwę domeny oraz określone nazwy konfiguracyjne, przedstawione poniżej. Dla dostosowania konfiguracji do własnych potrzeb, należy zastosować ustawienia według indywidualnych wymagań.
- Pełna nazwa domeny (FQDN) Synology DSM: https://dsm.xyz.com,
- Pełna nazwa domeny (FQDN) Nginx Proxy Manager: https://npm.xyz.com,
- Pełna nazwa domeny (FQDN) AdGuard Home: https://dns.xyz.com,
- Zainstalowany na Synology poprzez Docker: Portainer, AdGuard Home,
- Zainstalowany na Synology poprzez Centrum pakietów: Container Manager,
- Na serwerze DHCP routera, wskazany adres IP serwera DNS (AdGuard Home) zainstalowanego na Synology.
Krok 1 – Zmiana domyślnych portów na Synology DSM
Konfigurację portów WWW zaczniemy od modyfikacji domyślnych ustawień logowania do DiskStation Managera. Pozostawienie fabrycznie ustawionych portów, takich jak 5000 dla HTTP i 5001 dla HTTPS – powszechnie znanych i stanowiących potencjalne ryzyko bezpieczeństwa – jest krokiem, który warto poddać modyfikacji. Przeorganizowanie tych portów na bardziej niestandardowe wartości ma na celu podniesienie poziomu bezpieczeństwa Twojego serwera Synology, minimalizując potencjalne zagrożenia związane z używaniem powszechnie znanych numerów portów.
- Zaloguj się do swojego Synology za pomocą konta administratora – korzystając jeszcze ze starego portu do DiskStation Managera,
- Przejdź do Panelu Sterowania, a następnie z sekcji System wybierz Portal logowania,
- Wprowadź następujące modyfikacje w sekcji Usługi WWW:
- Port DSM (HTTP): np. 44444
- Port DSM (HTTPS): np. 44445
- Zaznacz Automatycznie przekieruj połączenia HTTP na HTTPS w wersji na pulpit w systemie DSM.
- Zapisz ustawienia przyciskiem zlokalizowanym w prawym dolnym rogu na niebieskim tle.
- Po zastosowaniu zmian zaloguj się ponownie do DSMa, korzystając już z nowego portu w przeglądarce.
Krok 2 – Dezaktywacja nasłuchu portów 80 i 443 przez Synology
Synology NAS (DSM) domyślnie nasłuchuje na portach 80 i 443 po każdym ponownym uruchomieniu – co oznacza, że zmiany które byśmy wprowadzili w konfiguracji zostaną utracone po każdym restarcie. Aby obejść ten problem, konieczne jest uruchamianie skryptu, który zwalnia te porty za każdym razem, gdy serwer się uruchamia.
Poniższa komenda realizuje to, zwalniając porty 80 i 443 na serwerze WWW Nginx w serwerze do momentu ponownego uruchomienia systemu. Usuwa porty z konfiguracji Nginx i restartuje usługę Nginx.
sed -i -e 's/80/81/' -e 's/443/444/' /usr/syno/share/nginx/server.mustache /usr/syno/share/nginx/DSM.mustache /usr/syno/share/nginx/WWWService.mustache
synosystemctl restart nginx
Ten skrypt zamienia port 80 na 81 i port 443 na 444 w określonych plikach konfiguracyjnych Nginx. Po wykonaniu tej komendy Nginx zostanie ponownie uruchomiony, co zapewni, że zmiany będą obowiązywać do czasu kolejnego ponownego uruchomienia systemu.
Krok 3 – Utworzenie zaplanowanego zadania w Synology
Aby zachować wprowadzone zmiany, utworzymy zaplanowane zadanie, które uruchomi powyższy skrypt za każdym razem, gdy system będzie się uruchamiał.
- Przejdź do Panelu sterowania, a następnie zjedź na dół aby odnaleźć Harmonogram zadań.
- Kliknij Utwórz i wybierz Uruchamiane zadanie – Skrypt zdefiniowany przez użytkownika,
- W zakładce Tworzenie zadania – Ogólne wprowadź następujące wartości:
- Zadanie: Remaping 80/443 ports,
- Użytkownik: root,
- W zakładce Tworzenie zadania – Ustawienia zadania wprowadź następujące wartości:
- Prześlij szczegóły uruchomienia w wiadomości email: Zaznacz i wprowadź swój adres mailowy,
- Prześlij szczegóły uruchomienia tylko, gdy skrypt zostanie nieoczekiwanie zakończony: Zaznacz,
- Uruchom polecenie: Wklej poniższy skrypt w edytor tekstu:
sed -i -e 's/80/82/' -e 's/443/444/' /usr/syno/share/nginx/server.mustache /usr/syno/share/nginx/DSM.mustache /usr/syno/share/nginx/WWWService.mustache
synosystemctl restart nginx
- Po wprowadzeniu tych ustawień, kliknij OK, aby zapisać i aktywować nowe zaplanowane zadanie.
Teraz nasz skrypt będzie działał automatycznie po każdym restarcie systemu, dbając o to, aby porty 80 i 443 nie były aktywne na Twoim Synology NAS (DSM).
Aby zapewnić, że wprowadzone zmiany zadziałają jak należy, zachęcam do ponownego uruchomienia serwera Synology NAS (DSM). To proste działanie gwarantuje, że wszystkie modyfikacje związane z wyłączeniem nasłuchiwania na portach 80 i 443 zostaną skutecznie uwzględnione podczas ponownego uruchamiania systemu. Po tych przyjemnych krokach, nowe ustawienia powinny śmigać bez zarzutu po restarcie serwera.
Krok 4 – Utworzenie folderów w Synology
- Zaloguj się na swoim serwerze plików i otwórz aplikację File Station.
- W folderze współdzielonym o nazwie docker, utwórz nowy folder i nazwij go npm.
- Wewnątrz folderu npm utwórz dwa dodatkowe foldery – data oraz letsencrypt
Krok 5 – Instalacja Nginx Proxy Manager
Instalacja i konfiguracja po stronie Portainera
- Zaloguj się na swoje konto i przejdź do interfejsu administracyjnego
- Wybierz z dashboardu Stacks.
- Z prawego górnego rogu (pod twoim loginem) wybierz Add stack.
- Wypełnij tworzenie pliku Docker Compose przy użyciu następujących wartości:
- Name: npm
- Build method: Web editor
- Web editor: skopiuj zawartość opisaną poniżej i wklej
version: "3"
services:
app:
image: 'jc21/nginx-proxy-manager:2.10.2'
container_name: nginxproxymanager
restart: unless-stopped
user: root
ports:
# These ports are in format <host-port>:<container-port>
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
# Uncomment the next line if you uncomment anything in the section
#environment:
# Uncomment this if you want to change the location of
# the SQLite DB file within the container
# DB_SQLITE_FILE: "/volume2/docker/npm/data/database.sqlite"
# Uncomment this if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- /volume1/docker/npm/data:/data
- /volume1/docker/npm/letsencrypt:/etc/letsencrypt
- Kliknij przycisk Deploy the stack i poczekaj, aż Portainer pobierze zawartość i utworzy kontener.
- Jeśli wszystko przebiegnie pomyślnie, w prawym górnym rogu ekranu pojawi się komunikat Success: Stack successfully deployed, a nastepnie w liście kontenerów pojawi się jeden nowo utworzony kontener.
Pierwsze uruchomienie kontenera
Po pierwszym uruchomieniu aplikacji Nginx Proxy Manager (NPM) zachodzą następujące kluczowe zdarzenia:
- W pierwszym kroku, następuje generowanie kluczy GPG, których istotność polega na zapewnieniu bezpiecznej komunikacji i szyfrowania. Wygenerowane klucze są następnie zapisywane w folderze danych.
- Następnie, aplikacja przechodzi do inicjalizacji bazy danych, tworząc niezbędne struktury tabel do przechowywania konfiguracji, informacji o użytkownikach i innych danych związanych z funkcjonalnością proxy.
- W trzecim etapie, tworzony jest domyślny użytkownik administratora, który otrzymuje pełny dostęp do interfejsu graficznego oraz pełnej kontroli nad konfiguracją proxy.
Cały proces inicjalizacji może trwać kilka minut, w zależności od wydajności Twojego systemu. W tym czasie aplikacja przygotowuje się do sprawnej i poprawnej pracy, przygotowując niezbędne elementy do skutecznego działania.
Krok 6 – Logowanie do Proxy Managera
Po pomyślnym wdrożeniu Nginx Proxy Manager (NPM), należy podjąć kilka istotnych kroków w celu skonfigurowania i zabezpieczenia aplikacji. Oto pierwsze czynności, które warto wykonać po zakończeniu procesu deploy:
- Zaloguj się do menadżera:
- Otwórz przeglądarkę internetową i przejdź pod adres na którym działa NPM (np. http://ADRES-IP-SYNOLOGY:81)
- Zaloguj się używając domyślnego adresu e-mail: [email protected] oraz hasła changeme.
Działający prawidłowo Proxy Manager pozwoli Ci zobaczyć taki komunikat, gdy przeglądasz go przez przeglądarkę internetową na porcie 80 lub 443.
Krok 7 – Ustawienie certyfikatu SSL dla domeny z wykorzystaniem Cloudflare
Generowanie Tokena API Użytkownika w Cloudflare
Upewnij się, że Twoja domena jest zarejestrowana i zarządzana przez Cloudflare. Jeśli jeszcze tego nie zrobiłeś, dodaj domenę do Cloudflare i skonfiguruj jej obsługę.
Nginx Proxy Manager będzie używał wygenerowanego Tokena API w Cloudflare do przeprowadzenia wyzwania DNS podczas wydawania certyfikatu Let’s Encrypt SSL.
- Przejdź do menu tworzenia Tokena API użytkownika w Cloudflare:
- Przejdź do strony głównej i wybierz nazwę swojej domeny,
- W interfejsie zarządzania domeną (karta Overview), po prawej stronie wyszukaj i kliknij Get your API Token,
- W wykazie twoich Tokenów API, kliknij Create Token,
- W menu tworzenia Tokena API, kliknij na Get Started przy Create Custom Token w sekcji Custom Token.
- Po przejściu do tworzenia Custom Tokena API, wypełnij formularz następującymi wartościami:
- Token name: np. npm-xyzcom,
- Permissions: Ustaw następująco Zone | DNS | Edit,
- Zone Resources: Ustaw następująco Include | Specific zone | Twoja domena xyz.com,
- Client IP Address Filtering: pozostaw bez uzupełniania,
- TTL: pozostaw bez uzupełniania.
- Po przejściu do tworzenia Custom Tokena API, wypełnij formularz następującymi wartościami:
- Podczas ostatniego etapu pojawi się podsumowanie tworzenia Tokena API. Jeśli wszystkie informacje są poprawne, kliknij Create Token.
- Po utworzeniu Tokena API otrzymasz szczegółowe informacje o nim, wraz z opcją przetestowania go w terminalu.
- Skopiowany Token API zapisz w notatniku, ponieważ będzie Ci potrzebny podczas konfiguracji certyfikatu SSL w Proxy Managerze.
Utworzenie certyfikatu w Proxy Managerze
- Zaloguj się do panelu administracyjnego i przejdź do zakładki SSL Certificates,
- Kliknij przycisk Add SSL Certificate, a następnie Let’s Encrypt.Wypełnij formularz, podając następujące wartości:
- Domain names: xyz.com, *.xyz.com
- Email Address for Let’s Encrypt: wprowadź ten, który jest powiązany z kontem Cloudflare,
- Use a DNS Challange: Zaznacz tą opcję,
- DNS Provider: wybierz z listy Cloudflare,
- Credintials File Content: uzupełnij zgodnie z poniższym schematem,
- P{ropagation Seconds: pozostaw bez uzupełniania,
- I Agree to the Let’s Encrypt Terms of Service:” Zaznacz tę opcję.
# Cloudflare API token
dns_cloudflare_api_token = TU WPROWADŹ SKOPIOWANY TOKEN API
- Zapisz konfigurację przyciskiem Save i poczekaj na wygenerowanie certyfikatu SSL. Po zatwierdzeniu, Let’s Encrypt rozpocznie proces weryfikacji poprzez wyzwanie DNS-01, używając podanych informacji. Po pomyślnej weryfikacji certyfikat zostanie automatycznie dodany do Twojej konfiguracji SSL.
Utworzenie Proxy Host dla NPM
Po pomyślnym uzyskaniu certyfikatu SSL przy użyciu DNS-01 Challenge, możemy przejść do konfiguracji Proxy Hosta – dla przykładu zrobię najpierw dla Proxy Managera.
- Kliknij w Hosts, a następnie z menu Proxy Hosts,
- W prawym górnym rogu kliknij Add Proxy Hosts.
- Uzupełnij parametry następującymi wartościami:
- Domain Names: npm.xyz.com
- Scheme: https
- Forward Hostname/IP: IP-ADRES-SYNOLOGY
- Forward Port: 81
- W oknie Edit Proxy Host na zakładce Details zaznacz:
- Cache Assets,
- Websockets Support,
- oraz Block Common Exploits.
- Następnie przejdź do zakładki SSL, wybierz swój certyfikat SSL i zaznacz wszystkie dostępne opcje dodatkowe:
- Force SSL,
- HTTP/2 Support,
- HSTS Enabled,
- oraz HSTS Subdomains.
Utworzenie Proxy Host dla Synology DSM
Aby skonfigurować proxy dla systemu operacyjnego Synology, podczas edycji Proxy Hosta należy w miejscu Forward Portu wprowadzić port 44445 jako HTTPS dla DSM.
Krok 7 – Konfiguracja w AdGuard Home
Aby uzyskać dostęp z naszego komputera do Nginx Proxy Managera poprzez zdefiniowaną nazwę domeny (np. npm.xyz.com) w naszej sieci lokalnej, konieczne jest skonfigurowanie serwera DNS, aby wskazywał na lokalizację tej strony.
- Zaloguj się do panelu administracyjnego AdGuard Home.
- Przejdź do zakładki Filtry, a następnie z menu wybierz opcję Przepisywanie DNS.
- Kliknij Dodaj przepisywanie DNS, a następnie wypełnij pola z następującymi wartościami:
- Wpisz nazwę domeny, który chcesz przepisać: npm.xyz.com
- Adres IP: IP-ADRES-SYNOLOGY
- Gotowe! Poczekaj chwilę, aż konfiguracja zostanie zapisana. Po zakończeniu procesu, dostęp do serwera będzie możliwy pod adresem npm.xyz.com. 🚀
Krok 8 – Dostęp zewnętrzny i konfiguracja na routerze
Aby umożliwić dostęp z zewnątrz do Twojego serwera Synology, musisz skonfigurować przekierowanie portów na routerze. Oto ogólny przewodnik (na przykładzie MikroTika), zakładając, że korzystasz ze statycznego adresu IP:
Przekierowanie na routerze
Konfiguracja przekierowania portów (port forwarding) w MikroTiku w sekcji NAT (Network Address Translation) umożliwia przekierowanie ruchu z określonego portu zewnętrznego na port wewnętrzny na konkretnym urządzeniu w sieci lokalnej.
- Uruchom program WinBox i zaloguj się na swoje konto administratora,
- Przejdź do zakładki IP, a następnie wybierz Firewall z menu.
- Kliknij zakładkę NAT,
- Kliknij w lewym górnym rogu okna na znak + w celu dodania nowej polityki przekierowania.
- W zakładce General ustaw parametry opisane poniżej:
- Chain: dstnat
- Protocol: 6 (tcp)
- Dst. Port: 443
- In. Interface List: WAN lub In. Interface: Wybierz swój interfejs WAN (zazwyczaj ether01)
- Przejdź do zakładki Action i ustaw parametry opisane poniżej:
- Action: dst-nat
- To Addresses: IP-ADRES-SYNOLOGY
- To Ports: 443
Po wykonaniu tych kroków, ruch z zewnątrz, kierując się do portu 443 (HTTPS), zostanie przekierowany na odpowiedni port Twojego serwera Synology. Dodatkowo, możesz dostosować inne reguły NAT według indywidualnych potrzeb i wymagań.
Ustawienie adresu IP w Cloudflare
Dokonaj aktualizacji rekordu DNS A w Cloudflare, aby wskazywał aktualny zewnętrzny adres IP Twojego routera. Dzięki temu ruch będzie kierowany poprzez Cloudflare, zwiększając poziom bezpieczeństwa Twojego serwera.
Przeczytaj także
- Czy używasz już Authentik i Portainer? Dowiedz się, jak skonfigurować jednokrotne logowanie, aby łatwo i bezpiecznie zalogować się do Portainera. Przeczytaj prosty poradnik tutaj, aby zwiększyć wygodę korzystania z tych aplikacji.
- Odkryj, jak łatwo zainstalować odbiornik ADS-B na Raspberry Pi i rozpocznij śledzenie lotów w czasie rzeczywistym. Zapoznaj się tutaj z prostym poradnikiem, który otworzy przed Tobą fascynujący świat obserwacji nieba!
- Zanurz się w świecie monitorowania pojazdów dzięki Traccar na swoim Synology! Przewodnik krok po kroku wraz z użyciem Docker’a umożliwi Ci szybką i efektywną instalację. Śledź swoje pojazdy, analizuj dane i kontroluj trasę.
Dodatkowe źródła i informacje
W celu dalszego zgłębienia tematu i uzyskania szczegółowych informacji, polecam sprawdzenie poniższych linków. Są one wartościowymi źródłami, które zostały wykorzystane podczas opracowywania tego poradnika.
- Instalacja proxy: https://nginxproxymanager.com/setup/#running-the-app
- Stacks w Portainerze: https://docs.portainer.io/user/docker/stacks
- Jakie porty wykorzystywane są przez usługi DSM: https://kb.synology.com/pl-pl/DSM/tutorial/What_network_ports_are_used_by_Synology_services
Dodaj komentarz