Honlap saját domain alatt Synology NAS-on
Egy egyszerűbb statikus weboldal kiszolgálása nem okozhat gondot az otthoni Synology NAS-unknak. A következőkben ezen honlap, vagyis az szjani.hu beállítását fogom taglalni.
Domain beállítás
Saját domain használatához mindenekelőtt szükségünk lesz egy domain-re. A regisztráció folyamatát nem részletezném, hisz rengeteg szolgáltató közül választhatunk, ráadásul a folyamat nagy mértékben függ a választott TLD-től.
Az egyik legelső probléma, amibe belefutunk, hogy az internet hozzáférésünk nem biztosít fix IP címet. Sok ingyenes dinamikus DNS szolgáltatónál csak előre meghatározott domain címekből lehet választani. Nem ilyen a Dynu. Regisztráljunk és vegyük fel a DDNS szekcióban a már tulajdonunkban lévő domaint.
A DSM alapból nem támogatja a Dynu-t, de ezt könnyen orvosolhatjuk. A Vezérlőpult/Külső hozzáférés/DDNS
alatt
a Testreszabás
gombra kattintva a Szolgáltató
-hoz írjuk be, hogy Dynu.com
, a Query URL
-hez pedig a következőt:
http://api.dynu.com/nic/update?hostname=__HOSTNAME__&username=__USERNAME__&myip=__MYIP__&password=__PASSWORD__
Ezután a Hozzáadás
gombra kattintva már kiválaszthatjuk a Dynu.com
kiszolgálót. A Gazdanév
-hez írjuk be a domain
címünket, a valamint a Dynu-s bejelentkezési adatainkat.
Egy dolog még hátra van. A regisztrátorunk adminisztrációs oldalán a domainünknél meg kell adnunk a Dynu DNS szervereit:
Ha mindent jól csináltunk, akkor egy kis idő múlva a domain címünket pingelve a NAS-unk külső IP-jét látjuk viszont:
C:\Users\szjani>ping szjani.hu
Pinging szjani.hu [188.156.211.84] with 32 bytes of data:
Reply from 188.156.211.84: bytes=32 time=7ms TTL=63
Reply from 188.156.211.84: bytes=32 time<1ms TTL=63
Reply from 188.156.211.84: bytes=32 time<1ms TTL=63
Reply from 188.156.211.84: bytes=32 time<1ms TTL=63
Ping statistics for 188.156.211.84:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 7ms, Average = 1ms
Nginx telepítése Docker-rel
A Web Station kiváló megoldást nyújt a legegyszerűbb problémákra, azonban rájöttem, hogy amire nekem szükségem van, azt nem támogatja. Ilyen például a gzip tömörítés, vagy a régi URL-ek átirányítása az új címekre. A Docker azonban elég rugalmas ehhez, a következőkben ennek a beállítását fogom bemutatni.
Először is telepítsük fel a Dockert a Csomagkezelési központ
-ban. Ezután a Docker
alkalmazást elindítva keressünk
rá az nginx
képre és töltsük le a stable-alpine
verziót. Az alpine Linux egy lecsupaszított, minimális
erőforrásigényű környezet, amelyben tökéletesen fut az nginx.
A Kép
menüpontban a letöltött Docker imaget kiválasztva kattintsunk az Indítás
gombra. A megjelenő ablakban
kattintsunk a Speciális beállítások
-ra. Adjuk hozzá a honlapunk gyökérkönyvtárát a következő útvonalhoz /usr/share/nginx/html
.
Pipáljuk be, hogy Csak olvasható
legyen ez a kötet. Az nginx konfigurációs fájlját is írjuk felül, ezt a /etc/nginx/conf.d/default.conf
útvonalon kell elérhetővé tenni.
Az nginx konfigurációs fájlt nem részletezném, az enyém így néz ki:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
location = /about-me {
return 301 https://szjani.hu/page/rolam/;
}
location = /blog-entry/read/jenkins-es-a-php {
return 301 https://szjani.hu/article/jenkins-es-a-php/;
}
location = /blog-entry/read/elmelkedes-a-php-keretrendszerekrol {
return 301 https://szjani.hu/article/elmelkedes-a-php-keretrendszerekrol/;
}
location = /blog-entry/read/domain-driven-design-eloadas {
return 301 https://szjani.hu/video/domain-driven-design-eloadas/;
}
location ~ ^/blog-entry/list/tag/(.+[^/])/?$ {
return 301 https://szjani.hu/tags/$1/;
}
location ~ ^/blog-entry/read/(.+[^/])/?$ {
return 301 https://szjani.hu/code/$1/;
}
location / {
index index.html index.htm;
}
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 365d;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
gzip on;
gzip_http_version 1.0;
gzip_vary on;
gzip_comp_level 6;
gzip_proxied any;
gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
gzip_buffers 16 8k;
A Port beállítások
fülön a tároló 80
-as portját irányítsuk a helyi 5180
-as portra. Ez utóbbi szabadon változtatható, de fontos
hogy olyan portot adjunk meg, amit a DSM nem használ. Befejezve a folyamatot a Tárolók
között megjelenik egy új elem, amit indítsunk el.
Ezután a honlapunk elérhető lesz a NAS-unk belső IP címén az imént megadott porton. Nálam ez a következő: http://10.0.0.111:5180/
.
Elérhetőség az internet felől
Ahhoz, hogy a honlapunk elérhető legyen bárki számára, a router adminisztrációs felületén át kell irányítani (port forward) a 80
-as és 443
-as portot a NAS felé.
A NAS IP címe vagy legyen fix, vagy a NAS MAC címéhez adjunk fix IP címet a DHCP beállításokban. Az, hogy ezt miként tehetjük meg, routerenként eltérő.
Ekkor a domain címet beírva a böngészőbe még nem töltődik be a honlapunk. Egy reverse proxy segítségével össze kell kötni a bejövő 80
-as portot a Docker
tárolónk 5180
-as portjával. Ehhez lépjünk be a Vezérlőpult/Alkalmazásportál/Fordított proxy
oldalra és hozzunk létre egy szabályt a következő módon:
Ezen a ponton a honlapunk elérhetővé válik a domain címen, jelen esetben a http://szjani.hu
címen.
Let’s Encrypt
Az oldalunkat célszerű https-en is elérhetővé tenni, ehhez szükséges a 443
-as port. Ez azonban önmagában nem elég, egy tanúsítvány is szükséges,
amely alapján a böngésző eldöntheti, biztonságos-e a kapcsolat a szerverünkkel.
A Let’s Encrypt egy olyan szolgáltató, aki ingyenes tanúsítványt állít ki. Navigáljunk a Vezérlőpult/Biztonság/Tanúsítvány
oldalra, és hozzunk létre egy új tanúsítványt.
Ezután a Konfigurálás
gombra kattintva a domain címünk mellett válasszuk ki az imént létrehozott új tanúsítványt.
Amint ezzel kész vagyunk, készítsünk egy újabb reverse proxy szabályt a 443
-as porthoz, így https-en is elérhetővé válik a honlapunk.