Hogyan üzemeltess egyszerű weboldalt saját domainnel Synology® Nasról?

Talán felmerült már benned a kérdés hogy lehet e egyszerű weboldalt üzemelni otthonról? Vannak oldalak ahol találunk ehhez segítséget, de a legtöbb weboldalon csak a DDNS címmel érhetjük el a saját honlapunkat. De mi van akkor ha van egy domain nevünk, és az alapján akarjuk elérni a weboldalunkat?

Jó megoldás például egy fájlmegosztó szerver, úgynevezett nas. A tesztalanyunk egy Synology DS118. Nem egy erőgép, de amire nekünk kell megteszi. Ha beüzemeltük a saját nasunkat, (az alábbi cikk segítségével) akkor lássunk hozzá!

A saját domain nevünket az alábbi weboldalon regisztráljuk:https://www.cloudflare.com/
Az oldal angol nyelvű. A „sign up” gombbal regisztrálhatunk a kért adatok megadásával. Ez az oldal kell a DDNS szolgáltatáshoz.

A Synology DS118 sajnos nem rendelkezik Docker alkalmazással és nem telepíthető rá, ezért kerülő megoldással lehet beállítani a Cloudflare DDNS-t.

Első lépésként engedélyezzük a nas (úgynevezett: DSM) vezérlőpultban az SSH-t.

Második lépésként töltsük le a PUTTY alkalmazást (ha nincs a gépünkön) és lépjünk be PUTTY-al a nasunkra. Beírjuk a 22-es portot (ha nem változtattuk meg) az IP-címet és csatlakozásnál az admin felhasználónevünket és jelszavunkat.

Harmadik lépés a neheze: a parancssor

Töltsük le a DDNS szkriptet:

$ sudo wget https://raw.githubusercontent.com/joshuaavalon/SynologyCloudflareDDNS/master/cloudflareddns.sh -O /sbin/cloudflaredns_sajatdomainnev.sh

Adjunk neki jogokat:

$ sudo chmod +x /sbin/cloudflaredns_sajatdomainnev.sh

DDNS lista konfigurálás a DSM-en:

$ sudo echo "[Cloudflare]">>/etc.defaults/ddns_provider.conf
$ sudo echo "  modulepath=/sbin/cloudflaredns_sajatdomainnev.sh">>/etc.defaults/ddns_provider.conf
$ sudo echo "  queryurl=https://www.cloudflare.com/">>/etc.defaults/ddns_provider.conf

Na tegyük egy kicsit félre a parancssort. Menjünk a Cloudflare dashboard felületére és az alábbi lépéseket tegyük.

  1. Írjuk le a Zone ID-t a domainünknek (Overview fül és ott jobb oldalt találjuk).
  2. Menjünk az alábbi oldalra a „Get your API token” és a „Create token” gomb megnyomásával állítsuk be a következőt:
  • Zone — Zone — Read
  • Zone — DNS — Edit

Így kell kinéznie: (természetesen az elnevezés a sajátunk legyen)

Figyelem! Az „API token”-t csak egyszer jeleníti meg a rendszer így írjuk le mert később szükséges lesz!

Most menjünk vissza a nas DSM felületére.

Itt indítsuk el a Vezérlőpultot és ott a külső hozzáférés lehetőségre kattintsunk.

DDNS fülön válasszuk a hozzáadást és ott írjuk be a következőket:
Gazdanév: domain nevünk
Felhasználónév: Zone ID
Jelszó/kulcs: API token

Ha mindent jól csináltunk akkor most már elérhetjük a weboldalunkat de még csak HTTP-s protokollon keresztül!

Megjegyzés: A HTTP protokoll a Cloudflare dashboard felületén az SSL/TLS fülön Off (not secure) beállításon legyen.

A cikk folytatódik a HTTPS protokoll beállítással! (Frissítve: 2023.11.08)

HTTPS

A https kapcsolódáshoz tanúsítvány szükséges.

Első lépésben nézzük meg a NAS-unkon hogy a HTTP/2 engedélyezve van e (Vezérlőpult/Hálózat/Csatlakozási lehetőségek) ha igen tiltsuk le.

A korábban leírt módon csatlakozzunk root joggal a nasunkhoz SSH-n keresztül.

Az alábbi parancsot futtassuk le:

sudo wget -O /usr/local/bin/reload-certs.sh https://github.com/bartowl/synology-stuff/raw/master/reload-certs.sh
sudo chmod +x /usr/local/bin/reload-certs.sh

sudo -i
wget https://github.com/Neilpang/acme.sh/archive/master.tar.gz
tar xvf master.tar.gz
cd acme.sh-master/
./acme.sh --install --nocron --home /usr/local/share/acme.sh --accountemail "[email protected]"
sudo chown -R sajatdomain.hu /usr/local/share/acme.sh/
sudo chmod 755 /usr/local/share/acme.sh

Ha rendben lefutott a parancs, akkor adjuk meg a Cloudflare API kulcsot amit a cloudflare dashboard felületre belépve bal oldalon megtaláljuk a Zone ID az Account ID és Get your API token-en belül a Global API Key-t.

Ezeket írjuk le és ahogy említve is volt az API tokent csak egyszer mutatja a felület!
Ha készen vagyunk akkor az alábbi parancsot adjuk meg:

export CF_Key="Saját Global API Key....."
export CF_Email="[email protected]"
export CF_Token="Egyszer mutatott API TOKEN....."


export CF_Account_ID="Saját Account ID......"
export CF_Zone_ID="Saját Zone ID......."

Ha jól csináltunk mindent nem jelenik meg hibaüzenet.

További lépésként:

cd /usr/local/share/acme.sh 
./acme.sh --issue -d "sajatdomain.hu" \
      --dns dns_cf --home \
     $PWD

A parancs végigfutása után nincs más dolgunk mint importálni a tanúsítványt a következőképp:

export SYNO_Username="felhasznalonevunk"
export SYNO_Password='jelszavunk'
export SYNO_Certificate="Egysoros leírás a tanúsítványnak" 
export SYNO_Create=1
export SYNO_Scheme="http"
export SYNO_Host="localhost"
export SYNO_Port="5000"

Természetesen ha más http portot adtunk meg akkor azt kell az export SYNO_Port=” után írnunk.

Már csak egy lépés van hátra hogy működjön a https. Az alábbi parancsot futtassuk le:

./acme.sh -d "sajatdomain.hu" --deploy \
   --deploy-hook synology_dsm \
   --reloadcmd "/usr/local/bin/reload-certs.sh" \
   --dnssleep 20 \
   --home $PWD

Fontos! Az előző parancs kiadásával ha nem ír ki hibát akkor mindent jól csináltunk.

Extra

Mint minden tanúsítvány időnként lejár. Az alábbi kódot másoljuk be a DSM felületünkön a Vezérlőpult/Feladatidőzítő lapon a következőképp.

Létrehozás gomb Ütemezett feladatok és ott a Felhasználó által definiált szkriptre kattintsunk.

Itt elnevezzük, kiválasztjuk a felhasználói fiókot és megadjuk az ütemezés módját (havonta vagy 3 havonta elég 1x elindíttatni).

Na és a lényeg a szkript:

# Renew single certificate
/usr/local/share/acme.sh/acme.sh --renew -d "sajatdomain.hu" --home /usr/local/share/acme.sh

Sikeres munkát kívánok mindenkinek!

A fenti leírás az alábbi angol cikk alapján készült: https://corcoran.medium.com/using-cloudflare-for-ddns-and-tls-certificates-on-synology-dsm6-1549e55d557f