2024. április 28., vasárnap

Gyorskeresés

Let's Encrypt otthonra

Írta: | Kulcsszavak: nginx . lets encrypt . proxy . cert . ssl

[ ÚJ BEJEGYZÉS ]

Apró hálózatom kozmetikázásának következő állomása az, hogy ellátom a különböző szervereket, szolgáltatásokat saját domain névvel, hogy úgy nézzen ki, olyan csinálta, aki ért hozzá. Persze önmagában egy alias még nem kihívás, használjunk SSL/TLS hitelesítést is, ahol csak lehet.

Első lépésben vettem magamnak saját publikus domain nevet, ezt több módon is megtehetjük, én a GoDaddy-nél vettem, mert szeretem a kihívásokat:
- a kosár funkcionalitás nem működik vásárláskor
- vagy mégis, csak nem látszik, mert fizetéskor a fizetendő összeg többszörösét kellett volna hirtelen leszurkolni
- aminek az az oka, hogy érdemesebb előbb a profilban kitölteni a lakcímedet, mert bizonyos domain nevek (.eu és társai) csak korlátozásokkal vehetőek igénybe

Amire még szükségünk lesz, az egy API hozzáférés, hogy tudjuk babrálni a DNS bejegyzéseinket is, ezt a GoDaddy-nél pár kattintásból megoldhatjuk, végén kapunk egy secret-et és egy key-t, ezekre a certificate beszerzésénél lesz szükségünk.

Ha valakinek van bevált alternatívája, írja meg kommentben.

Nginx Proxy Manager a http(s) szolgáltatásokhoz

Nem szeretnék minden egyes webes felülettel rendelkező app-ot és egyebet külön abajgatni, ezért mindent megpróbálok egy proxy mögé rakni, ahol mindent egy helyen tudok kezelni. Ehhez az Nginx Proxy Manager-t fogom használni, amit láthatunk, hogy nem hibátlan, de a célnak megfelel.

A proxy container-ben fog futni a mini gépemen, ehhez előbb telepíteni kell a podman-t a gépre, majd jöhet is a container beállítása, amit vanilla módon végzünk most, nem bonyolítjuk az életünket.

Következő lépésben elébe megyünk a bajnak, mert hamar gondban leszünk, ha nem tákolunk egy kicsit. Van egy GoDaddy-vel kapcsolatos bug, ezt fogjuk megkerülni.

A gépen /etc/nginx-proxy-manager directory-ba fogok pakolni mindent, a javításhoz szükségünk lesz az eredeti certbot-dns-plugins.json fájlra, ebben kell a GoDaddy plugin verzióját beállítanunk "~=2.8.0"-ra.

Most már jöhet a container izzítása, néhány dolgot kell csak megadnunk neki, mint mondtam, legegyszerűbb felállásban fogjuk használni.

Pár megjegyzés:
- attól függően, hogy a container milyen mount-okat kap, a host-on minden directory-t létre kell hoznunk előre
- a create oldalon a Cockpit-ben a Create gombra nyomjunk, ne akarjuk el is indítani, mert utóbbi esetben, ha valami nem kerek, nem lesz container, és bukjuk az eddig bevitt adatokat is

Első lépés az image beszerzése:

Majd a container paraméterezése:

Compose fájlként valahogy így néz ki ez nálam:

version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- /etc/nginx-proxy-manager/data:/data
- /etc/nginx-proxy-manager/letsencrypt:/etc/letsencrypt
- /etc/nginx-proxy-manager/certbot-dns-plugins.json:/app/global/certbot-dns-plugins.json

Create után már indíthatjuk is, ha mindent jól csináltunk, akkor rendben el fog indul:

Itt érdemes ellenőrizni, hogy a választott domain a megfelelő címre mutat-e, attól függően, mit és hogyan szeretnénk, kellhet egy A record (domain.eu) és egy wildcard-os CNAME (*.domain.eu.) a proxy server címére.

Jöhet a beállítás, új user, password, de ugorjunk az érdekesebb részekhez, szerezzünk certificate-et https kapcsolathoz!

SSL certificates menüpontba navigáljunk először, és szerezzünk egy certificate-et a Let's Encrypt-től DNS-01 challenge-et alkalmazva (nem akarok portot nyitni, stb). Itt jön el az idő, amikor szükségünk lesz a generált API key-ünkre, hogy a certbot, amit a proxy manager container futtat létre tudja hozni a szükséges TXT record-okat, amikor ellenőrzi a domain nevet, hogy valóban hozzánk tartozik-e.

Amennyiben mindent jól megadtunk, kapnunk egy kell egy használhato certificate-et:

Innen már könnyű a dolgunk, csak a szükséges proxy-kat kell beállítanunk, például egy egyszerű proxy az Nginx proxy manager fölé így néz ki:

Ezek után a böngészőnkben már elérhető a saját kis domain neve alatt https-sel:

Bizonyos alkalmazásoknak esetleg még kellhet extra konfigurálás, hogy tudjanak proxy mögül operálni, ilyen maga a Cockpit is.

Ami még baj maradt nálam, hogy sújt egy másik bug is, custom location-t nem tudok használni. Később lehet, megtákolom ezt is, hogy menjen, de az sem elképzelhetetlen, hogy valami kevésbé fancy, de stabilabban működő megoldásra váltok.

Hozzászólások

(#1) Peter Kiss


Peter Kiss
senior tag
LOGOUT blog

Lehet, legközelebb a router-emre rakom a proxy-t is. :P

(#2) Zsolt_16


Zsolt_16
tag

Jó kis leírás szerintem sokak számára nagy segítség lesz. Emlékszem még mikor certbotot és alap nginxet használtunk és a config fáljba kellet szenvedni vele. Ez azért egyfokkal szebb megoldás már. Mondjuk én úgy emlékszem hogy valahogy belelehet játszani a custom location-t hogy működőn az „Advanced” fül alatt nginx configgal tudod neki megadni.

Bár ha nincs semmilyen port specifikus szolgáltatásod otthon (pl vpn) akkor nézd meg a cloudflare szolgáltatásait is. Ott nagyon jó auth megoldásokat tudsz alkalmazni egyszerűen. :K

(#3) sonar


sonar
addikt

visszatalálos hsz

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

További hozzászólások megtekintése...
Copyright © 2000-2024 PROHARDVER Informatikai Kft.