Poniżej za zachętą, która padła gdzieś na forum ze strony fracz oraz po błogosławieństwie lesny8 umieszczam opis instalacji własnego serwera Supla na urządzeniach Synology NAS.
Temat wykorzystania fajnych serwerów sieciowych NAS (Network Attached Storage) od firmy Symology przewija się na forum tu i ówdzie.
Część ludzi dała sobie radę, część pewnie nie ...
Pewnie po niewielkiej modyfikacji poniższy sposób może posłużyć właścicielom podobnych urządzeń od firmy QNAP lub innych.
Tego nie wiem, bo nie miałem nigdy NAS-a z tej firmy, ale pewnie idea jest podobna ...
A więc, aktualna wersja systemu na dzień pisania posta to DSM 6.2.2-24922 Update 3.
Zakładam, że wiesz, że docker działa tylko na wybranym sprzęcie (poniżej aktualny wykaz):
https://www.synology.com/pl-pl/dsm/packages/Docker
Seria 20: FS6400, DS620slim, SA3400
Seria 19: RS1619xs+, RS1219+, DS2419+, DS1819+, DS1019+, DVA3219
Seria 18: FS1018, RS3618xs, RS2818RP+, RS2418RP+, RS2418+, RS818RP+, RS818+, DS3018xs, DS1618+, DS918+, DS718+, DS218+
Seria 17: FS3017, FS2017, RS18017xs+, RS4017xs+, RS3617xs+, RS3617RPxs, RS3617xs, DS3617xs, DS1817+, DS1517+
Seria 16: RS18016xs+, RS2416RP+, RS2416+, DS916+, DS716+, DS716+II, DS216+, DS216+II
Seria 15: RS815RP+, RS815+, RC18015xs+, DS3615xs, DS2415+, DS1815+, DS1515+, DS415+
Seria 14: RS3614xs+, RS3614RPxs, RS3614xs, RS2414RP+, RS2414+, RS814RP+, RS814+
Seria 13: RS10613xs+, RS3413xs+, DS2413+, DS1813+, DS1513+, DS713+
Seria 12: RS3412RPxs, RS3412xs, RS2212RP+, RS2212+, RS812RP+, RS812+, DS3612xs, DS1812+, DS1512+, DS712+, DS412+
Seria 11: RS3411RPxs, RS3411xs, RS2211RP+, RS2211+, DS3611xs, DS2411+, DS1511+, DS411+, DS411+II
*Seria 10: RS810RP+, RS810+, DS1010+, DS710+
W skrócie - poniższy tutorial nie różni się tak bardzo od już istniejącego tutoriala autorstwa lesny8 viewtopic.php?f=23&t=4081 z tym, że:
- robimy wszystko jako wersja standalone,
- po uruchomieniu serwera wykorzystujemy systemowe narzędzia DSM do uruchomienia serwera reverse proxy,
- po wystawieniu serwisu pod jakąś nazwą domenową wykorzystujemy ponownie systemowe narzędzia DSM tym razem do uzyskania certyfikatu Let’s Encrypt.
A więc lecimy - początek jest taki sam:
1. Router i Domena - jak w oryginalnym tutorialu lesny8 z uwzględnieniem oczywiście innego urządzenia - Synology zamiast RaspberryPi
Co potrzebujemy mieć i jak skonfigurowane, na wstępie?
Synology NAS i działający DSM w wersji co najmniej powyżej przywołanej.
Zewnętrzny adres IP:
Jeśli mamy stały IP to potrzebna jest własna domena.
Może być darmowa np. zarejestrowana w http://www.dot.tk/en/index.html?lang=en
U rejestratora domeny w strefie ustawień serwera DNS ustawiamy rekordy A wskazujące na nasz adres IP, dla domeny i subdomen (cloud, scripts czy czegokolwiek innego).
Jeśli mamy zmienne IP (Neustrada, Netia, Internet mobilny itd.) trzeba skonfigurować DDNS w posiadanym routerze.
https://www.youtube.com/watch?v=1_aISlMQeSc do filmu wyjaśniającego w czym rzecz.
W routerze rezerwujemy jakiś wewnętrzny adres IP dla naszego Synology.
Jeśli klasa adresowa naszego routera to 192.168.0.0/24 i router jest bramką i ma adres 192.168.0.1, to Synology niech ma adres 192.168.0.2 lub każdy inny wolny z tej klasy. Ważne, żeby przypisać go na stałe, by DHCP zawsze dawał naszemu hostowi ten sam adres. Jest to konieczne z uwagi na przekierowanie portów.
Robimy przekierowanie portów TCP 80 i 443 na wewnętrzny adres IP Synology.
Sprawdźcie to w pierwszej kolejności, czy posiadany router/dostawca internetu daje wam możliwość przekierowania poru 80 TCP, jest to kluczowy warunek dla Let’s Encrypt podczas weryfikacji domeny. Jeśli nie to trzeba szukać alternatywnego firmware dla routera albo zmienić router/dostawcę internetu na taki z możliwością przekierowania portu TCP 80.
Robimy przekierowanie portów TCP 2015 i 2016.
W przypadku np. routera Synology RT2600ac (takim sprzętem dysponuję) wygląda to mniej więcej tak:
Jest to wymagane do działania APP na smartfonach i tabletach.
Ustawiamy NAT Loopback / hairpinning - większość routerów na rynku ma tą funkcjonalność domyślnie włączoną i nawet użytkownik nie może tego wyłączyć bo i tak nie ma gdzie
Jeśli tego nie ustawimy, a nasz router jest ograniczony funkcjonalnie lub to jest po prostu tańszy model otrzymany od providera, to będąc w sieci LAN nie połączymy się do usług po nazwie domeny/subdomeny, a tylko po nazwie możemy się do nich podłączyć w omawianym trybie proxy. Od strony WAN-u będzie wszystko działać.
Eleganckim rozwiązaniem będzie w takim wypadku uruchomienie u siebie na hoście Synology własnego serwera DNS z gotowego pakietu --> Centrum pakietów --> Wszystkie pakiety --> DNS Server
Tu jest to ładnie opisane jak należy to zrobić:
https://originwww.synology.com/pl-pl/kn ... DNS_Server
Tutaj więcej:
https://pronas.pl/qnap/dns-server.320/
Należy przy tym zadbać aby wszystkie wpisy na serwerach DNS były zgodne za sobą (lokalnie na Synology DNS Server i zdalnie na serwerze DNS rejestratora domeny).
Jest to tak zwany split DNS, Split-Horizon DNS lub split-brain DNS.
Nie chciałbym tego wątku za bardzo opisywać, po pierwsze że najczęściej nie będzie to potrzebne, a po drugie konfiguracja własnego serwera DNS jest dość skomplikowana. Co prawda ja mam to tak właśnie zrobione, ale dlatego że posługuję się nazwami domenowymi w swojej domowej sieci LAN. Jeśli będzie zainteresowanie tym wątkiem to takie uzupełnienie może się pojawić w miarę potrzeb
2. Podczas pierwszej instalacji całego pakietu dockera (Centrum pakietów --> Wszystkie pakiety --> Docker) tworzy się folder współdzielony o nazwie docker, zlokalizowany --> /volume1/docker.
Domyślnie nasz codzienny użytkownik Synology - przyjmijmy że nazywa się xyz - nie będący adminem, jest członkiem grupy administrators oraz users - otrzymuje prawa zapisu/odczytu do tego folderu. Dla spokoju ducha warto to sprawdzić wchodząc --> Panel sterowania --> Folder współdzielony --> docker --> Edytuj --> Uprawnienia.
3. Korzystając z np. PuTTY łączymy się do swojego hosta Synology wpisując adres IP, potem swojego użytkownika (tu xyz) oraz podając hasło.
Oczywiście wcześniej musimy mieć włączone --> Panel sterowania --> Terminal i SNMP --> Włącz usługę SSH, oraz określony port na którym usługa działa (poniżej zamaskowany).
4. Tworzymy z linii poleceń folder /supla:
Code: Select all
mkdir /volume1/docker/supla
Nie musimy go jakoś konfigurować, instalujemy go i tyle.
Klonujemy do stworzonego przed chwilą folderu całego git-a:
Code: Select all
git clone https://github.com/SUPLA/supla-docker.git /volume1/docker/supla/
Code: Select all
./supla.sh
Wiadomo, że w urządzeniach Synology frontend działa właśnie na portach 80 i 443 i koniecznie trzeba je zmienić
Jeśli port jest wolny to polecenie nie zwróci nam wyniku (poniżej przykład moich wolnych portów 8080 oraz 4443):
Code: Select all
xyz@DS716:/volume1/docker/supla$ sudo netstat -tulpn | grep :8080
Password:
xyz@DS716:/volume1/docker/supla$
xyz@DS716:/volume1/docker/supla$ sudo netstat -tulpn | grep :4443
Password:
xyz@DS716:/volume1/docker/supla$
Code: Select all
tcp6 0 0 :::8888 :::* LISTEN -
Aha, przy okazji DS716 to nazwa mojego hosta jaką nadałem mu w panelu sterowania.
8. Edytujemy powstały plik:
Code: Select all
vi .env
9. Wpisujemy swoje dane w treści pliku - poniższe wartości są bardzo istotne i jeśli są wątpliwości co do właściwych wpisów po polecam poszukanie na forum - jest to dobrze opisane.
Ja zmieniłem linię 2, 5 i 6, 14-19, 22, 28 i 29 (insert rozpoczyna edycję)
Code: Select all
# Where the SUPLA Cloud will be accessible? Put domain or IP address here with port.
CLOUD_DOMAIN=twoja.domena.pl
# Initial user account details; delete these settings after the first launch
FIRST_USER_EMAIL=prawdziwy_adres@mailowy.pl
FIRST_USER_PASSWORD=nasze_haslo
# Google ReCaptcha settings
RECAPTCHA_ENABLED=false
RECAPTCHA_PUBLIC_KEY=
RECAPTCHA_PRIVATE_KEY=
# Mailer settings (SMTP)
MAILER_HOST=nazwa_serwera_pocztowego.pl
MAILER_PORT=465
MAILER_USER=uzytkownik@nazwa_serwera_pocztowego.pl
MAILER_PASSWORD=haslo_do_podanego_konta_pocztowego
MAILER_ENCRYPTION=ssl
MAILER_FROM=uzytkownik@nazwa_serwera_pocztowego.pl
# If you want to be notified about some server errors, set this
ADMIN_EMAIL=uzytkownik@nazwa_serwera_pocztowego.pl
# Where to store SUPLA Cloud's data
VOLUME_DATA=./var
# On which ports the SUPLA Cloud should listen (only if standalone mode)
PORT_HTTP=8080
PORT_HTTPS=4443
REQUIRE_REGULATIONS_ACCEPTANCE=false
REQUIRE_COOKIE_POLICY_ACCEPTANCE=false
BRUTE_FORCE_AUTH_PREVENTION_ENABLED=true
# These options protect your application
DB_PASSWORD=passwordpasswordpasswordpassword
SECRET=passwordpasswordpasswordpassword
COMPOSE_PROJECT_NAME=supla
COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=docker-compose.yml:docker-compose.standalone.yml
10. Zapisujemy naszą pracę:
Code: Select all
:wq
Code: Select all
xyz@DS716:/volume1/docker/supla$ mkdir /volume1/docker/supla/var/mysql
xyz@DS716:/volume1/docker/supla$ mkdir /volume1/docker/supla/var/cloud-local
xyz@DS716:/volume1/docker/supla$ mkdir /volume1/docker/supla/var/cloud-logs
Code: Select all
sudo ./supla.sh start
Code: Select all
...
Starting SUPLA containers
Removing supla-cloud
supla-db is up-to-date
Recreating d235373e912d_supla-cloud ...
Recreating d235373e912d_supla-cloud ... done
Creating supla-server ...
Creating supla-server ... done
SUPLA containers has been started.