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.
- Írjuk le a Zone ID-t a domainünknek (Overview fül és ott jobb oldalt találjuk).
- 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