janos.szurovecz.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.

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.

comments powered by Disqus