szjani.hu

A régi blogom, ahova lehet írok majd még...

Honlap saját domain alatt Synology NAS-on

2018-10-04 4 perc olvasási idő

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.

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.

Domain beállítás

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.

comments powered by Disqus