Ugrás a tartalomhoz

Sütibeállítások

Típusonként válassza ki, mely sütiket engedélyezi. Választását bármikor módosíthatja a Sütibeállítások linken, amely minden oldal alján megtalálható. Adatvédelmi nyilatkozat

Szükséges

Mindig bekapcsolva

A bejelentkezéshez, a kosár megőrzéséhez és a választásai megjegyzéséhez szükségesek. Ezek mindig be vannak kapcsolva.

Milyen sütik?
  • weboke_sessie, weboke_klant, weboke_remember: a munkamenet és a bejelentkezve maradás
  • weboke_basket: a kosár
  • wkBtwIncl: az árak megjelenítése ÁFÁ-val vagy anélkül
  • wok_cookies: a sütiválasztás, 12 hónap

Méri, melyik hirdetés vezet látogatáshoz vagy rendeléshez, hogy ne fizessünk hatástalan hirdetésekért.

Milyen sütik?
  • Google Ads a Google Tag Manageren keresztül (_gcl_au, _gcl_aw), legfeljebb 90 napig
  • OpenAI Ads, hirdetések a ChatGPT-ben
  • wok_aff: melyik partnerünk ajánlására érkezett (partnerprogram), 60 nap

4,6

Ország és nyelv

Minden országnak saját oldala van, az adott ország áraival és ÁFA-jával.

Megtekintés

Receptek: Uptime Kuma és Vaultwarden

Modul 9: Docker és docker compose · Olvasási idő: 13 perc

Tanulási cél: A lecke után Ön képes lesz az Uptime Kumát és a Vaultwardent docker compose segítségével Caddy mögött futtatni, https-sel, zárt regisztrációval, a volume-ok biztonsági mentésével és a frissítés állandó módjával.

Kulcsfogalmak: reverse proxy konténer, Caddyfile, automatikus https, Uptime Kuma, Vaultwarden, DOMAIN, SIGNUPS_ALLOWED, ADMIN_TOKEN, Argon2, .env, websocketek, volume-ok mentése, docker compose pull, saját fejléc

Mit építünk

Két hasznos szolgáltatást a saját szerverén, mindegyiket külön aldomainen:

  • Uptime Kuma a(z) status.example.com címen: webes felülettel rendelkező felügyeleti program, amely figyeli a webhelyeit, portjait és tanúsítványait, és értesítést küld, ha valami leáll (8.3. lecke). Figyelem: az a felügyelet, amely ugyanazon a szerveren fut, mint amit figyel, nem veszi észre, ha az egész szerver leáll. Használja tehát a többi webhelyéhez és szolgáltatásához, vagy telepítse egy második szerverre.
  • Vaultwarden a(z) kluis.example.com címen: könnyű, független szerverváltozat, amely a Bitwarden alkalmazásaival és böngészőbővítményeivel működik. A jelszótároló érzékeny szoftver: csak akkor vágjon bele, ha kész rendszeresen karbantartani és menteni. Az is teljesen rendben van, ha egyszerűen egy szolgáltató jelszókezelőjét használja.

Eléjük egy konténerben futó Caddy kerül: ez fogadja a 80-as és 443-as porton érkező forgalmat, maga intézi a Let's Encrypt tanúsítványokat (7.3. és 7.4. lecke), és a forgalmat a megfelelő konténerhez továbbítja. Az Uptime Kuma és a Vaultwarden maga nem tesz közzé portot (9.3. lecke).

internet ──443──> caddy ──> uptime-kuma:3001
                        └─> vaultwarden:80

Előfeltételek

  1. Docker Engine a compose bővítménnyel (9.2. lecke).
  2. Két DNS-rekord, amely a szerverére mutat, A és AAAA (7.1. lecke): status.example.com és kluis.example.com.
  3. Szabad 80-as és 443-as port a szerveren. Ha ezeken a portokon már fut a rendszer saját nginxe vagy Caddyje, a Caddy konténer nem tudja használni őket. Ilyenkor válasszon: vagy leállítja a rendszer webszerverét, vagy rábízza a proxyfeladatot, és a konténereket a(z) 127.0.0.1 címen teszi közzé (9.3. lecke). Ebben a receptben a Caddy konténer végzi ezt.
  4. Az ufw-ben nyissa meg a 80/tcp, a 443/tcp és a HTTP/3 miatt a 443/udp portot is (5.2. lecke). Szigorúan véve a Docker megkerüli az ufw-t, de így a tűzfal áttekintése megegyezik a valósággal.

A fájlok

Minden egyetlen mappába kerül: /srv/diensten/.

/srv/diensten/
├── compose.yaml
├── Caddyfile
└── .env

compose.yaml

services:
  caddy:
    image: caddy:2
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data
      - caddy-config:/config

  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    volumes:
      - uptime-kuma:/app/data

  vaultwarden:
    image: vaultwarden/server:1.37.5
    restart: unless-stopped
    environment:
      DOMAIN: "https://kluis.example.com"
      SIGNUPS_ALLOWED: "true"
      ADMIN_TOKEN: ${VW_ADMIN_TOKEN}
    volumes:
      - ./vw-data:/data

volumes:
  caddy-data:
  caddy-config:
  uptime-kuma:

Mielőtt hozzákezd, nézze meg, melyik a Vaultwarden legújabb verziója (a GitHubon lévő kiadásoknál), és írja be azt a tagbe. Csak a Caddy tesz közzé portokat, ezeknek nyilvánosnak kell lenniük. A(z) caddy-data (tanúsítványok) és uptime-kuma volume, valamint a(z) vw-data mappa tartalmaz mindent, amit meg kell őriznie.

Caddyfile

{
	email beheer@example.com
}

status.example.com {
	reverse_proxy uptime-kuma:3001
	header {
		X-Weboke-Cursus "jouw-code-uit-de-opdracht"
		defer
	}
}

kluis.example.com {
	reverse_proxy vaultwarden:80
}

A Caddy mindkét névhez magától szerez tanúsítványt, és a http-t átirányítja https-re. A(z) uptime-kuma és a(z) vaultwarden a compose-fájlban szereplő szolgáltatásnevek: a Caddy a belső hálózaton megtalálja őket. A(z) header blokk egy további fejlécsort tesz a(z) status.example.com minden válaszába; ezt használja majd a feladatban annak bizonyítására, hogy az Ön proxykonténere fut. A(z) defer hatására a fejléc azután kerül beállításra, hogy a háttérszolgáltatás megadta a válaszát. Ha a HSTS-t és a 7.4. lecke többi biztonsági fejlécét is szeretné, tegye őket ugyanebbe a blokkba.

A Vaultwarden biztonságos beállítása

Négy dolog dönti el, hogy biztonságos vagy veszélyes lesz-e a jelszótároló.

Egy: csak https-en keresztül. A Bitwarden webes tárolója a böngésző kriptográfiáját használja, a böngészők pedig ezt csak https-oldalakon teszik elérhetővé. Https nélkül tehát nem működik rendesen, és ez így van jól. A Vaultwarden dokumentációja a https-hez reverse proxyt javasol, mint itt a Caddyt. Állítsa a(z) DOMAIN értékét a teljes https-címre.

Kettő: zárt regisztráció. A(z) SIGNUPS_ALLOWED: "true" beállítással bárki, aki megtalálja az oldalt, fiókot hozhat létre az Ön szerverén. Indítsa el tehát, hozza létre azonnal a saját fiókjá(ka)t, állítsa az értéket "false" értékre, és futtassa újra a(z) docker compose up -d parancsot. Ha később valakit hozzá szeretne adni, használja a kezelőfelület meghívó funkcióját.

Három: hash-elt kezelői token. A kezelőfelületet (/admin) a(z) ADMIN_TOKEN védi. Ne olvasható jelszót írjon bele, hanem egy Argon2-hasht. Ezt magával a Vaultwardennel állíthatja elő:

anna@web1:/srv/diensten$ sudo docker compose exec vaultwarden /vaultwarden hash
Password:
Confirm Password:

ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$...'

Ezt a sort tegye a(z) .env fájlba (vagyis VW_ADMIN_TOKEN='$argon2id$...', egyszeres idézőjelekkel), és tegye a fájlt csak a root számára olvashatóvá: sudo chmod 600 .env. Egy .env fájlban nem kell megduplázni a(z) $ karaktereket; ha viszont a hasht közvetlenül a compose-fájlba, a(z) environment: alá írja, akkor igen (minden $ helyére $$ kerül), különben a Compose változóként próbálja kitölteni őket. A(z) /admin oldalra a begépelt jelszóval jelentkezik be, nem a hash-sel. Figyelem: a kezelőfelületen mentett beállítások a(z) vw-data/config.json fájlba kerülnek, és ezután elsőbbséget élveznek a környezeti változókkal szemben.

Négy: mentés és visszaállítás. Minden a(z) vw-data mappában van: az adatbázis, a mellékletek és a kulcsok. Vegye bele ezt a mappát a restic-mentésbe (8.2. lecke), az adatbázishoz pedig kövesse a Vaultwarden-wiki mentési útmutatását, hogy ne félig megírt fájlt másoljon. Tesztelje a visszaállítást (O8.2 feladat): egy működő mentés nélküli jelszótároló az összes jelszavát veszélyezteti.

Az eszközök közötti értesítések (websocketek) a Vaultwarden újabb verzióiban ugyanazon a porton működnek; a Caddy külön beállítás nélkül továbbítja őket.

Az Uptime Kuma beállítása

A(z) docker compose up -d után nyissa meg a(z) https://status.example.com címet. Az első látogatáskor az Uptime Kuma kéri, hogy hozzon létre egy rendszergazdai fiókot. Tegye ezt meg azonnal: amíg ez a fiók nem létezik, bárki létrehozhatja, aki megtalálja az oldalt. Ha ezt a kockázatot egyáltalán nem szeretné vállalni, először hagyja ki a(z) status blokkot a Caddyfile-ból, hozza létre a fiókot egy SSH-alagúton keresztül (2.3. lecke), majd tegye vissza a blokkot.

Ezután vegyen fel monitorokat: egy HTTP-monitort a webhelyéhez, egy TCP-monitort egy porthoz, egy tanúsítványfigyelmeztetést és egy értesítési csatornát (e-mail, csevegőprogram vagy push-szolgáltatás). Kapcsolja be a kétlépcsős azonosítást is az Uptime Kuma beállításaiban.

Indítás és ellenőrzés

anna@web1:/srv/diensten$ sudo docker compose up -d
anna@web1:/srv/diensten$ sudo docker compose ps
NAME                     SERVICE       STATUS          PORTS
diensten-caddy-1         caddy         Up 2 minutes    0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, ...
diensten-uptime-kuma-1   uptime-kuma   Up 2 minutes (healthy)
diensten-vaultwarden-1   vaultwarden   Up 2 minutes (healthy)
anna@web1:/srv/diensten$ sudo docker compose logs caddy | grep -i "certificate obtained"
anna@web1:~$ curl -sI https://status.example.com | grep -i x-weboke
x-weboke-cursus: jouw-code-uit-de-opdracht

Csak a Caddynek vannak portjai. Ha a tanúsítvány nem jön létre, a Caddy naplóiban megtalálja az okát: többnyire a DNS még nem mutat a szerverre, vagy a 80-as port nem érhető el (7.3. lecke).

Frissítés

A konténereket az unattended-upgrades nem frissíti (4.2. lecke). Jelöljön ki rá állandó időpontot, például kéthetente:

anna@web1:/srv/diensten$ sudo docker compose pull
anna@web1:/srv/diensten$ sudo docker compose up -d
anna@web1:/srv/diensten$ sudo docker image prune

A(z) pull a választott tagen belül tölti le a legújabb image-eket (így a(z) caddy:2 a 2-es verzión belül marad). A verziószámmal megadott Vaultwardennél előbb a kiadási megjegyzések elolvasása után módosítsa a taget. Új főverziónál mindig olvassa el a kiadási megjegyzéseket: néha a beállításain is változtatni kell. Nagyobb frissítés előtt készítsen mentést a volume-okról.

Kövesse a fejlesztők biztonsági közleményeit is. A Vaultwarden vagy a Caddy sérülékenysége csak akkor szűnik meg, ha Ön letölti az új verziót.

A gyakorlatban

Ez a recept bármely Dockert futtató VPS-en működik, a WebOkénál vagy más szolgáltatónál. Önkiszolgáló megoldás: a VPS szolgáltatója semmit sem kezel a konténerein belül. Az első telepítés előtt készítsen pillanatképet (snapshotot), így nyugodtan kísérletezhet.

Összefoglalás

  • Egyetlen compose-fájl, a Caddy reverse proxy konténerként; csak a Caddy tesz közzé portot (80 és 443), a szolgáltatások semmit.
  • A Caddy automatikusan intézi a tanúsítványokat és a https-t, és a(z) header segítségével saját fejlécsorokat is beállíthat.
  • Vaultwarden: kötelező a https, a(z) DOMAIN a https-címre mutat, a saját fiók után zárt regisztráció, a(z) ADMIN_TOKEN Argon2-hashként egy 600-as jogosultságú .env fájlban.
  • Uptime Kuma: azonnal hozza létre a rendszergazdai fiókot, és kapcsolja be a kétlépcsős azonosítást; elsősorban más szervereket és webhelyeket figyeljen vele.
  • Mentse a volume-okat és a(z) vw-data mappát, és frissítsen a(z) docker compose pull és a(z) up -d paranccsal egy állandó időpontban.

Kvíz

1. Miért nem tesz közzé maga portot ebben a receptben az Uptime Kuma és a Vaultwarden?



2. Miért nem működik rendesen a Vaultwarden webes tárolója sima http-n keresztül?



3. Létrehozta a saját Vaultwarden-fiókját. Mi a következő lépés?



4. A kezelői token Argon2-hashét közvetlenül a(z) environment: alá írja a(z) compose.yaml fájlban, és ismeretlen változókra vonatkozó figyelmeztetéseket kap. Miért?



5. Hogyan frissíti ezeket a szolgáltatásokat?



Feladat

Feladat Z9.4: Bizonyítsa, hogy a konténere fut. Kérje le a feladatban a személyes kódját, és írja be a Caddy konténere Caddyfile-jába X-Weboke-Cursus fejlécként az egyik saját aldomainjéhez (például status.<jouwdomein>). Töltse újra a Caddyt, és adja meg a hosztnevet. A program lekéri a(z) https://<hostnaam>/ címet, és ellenőrzi, hogy a tanúsítvány érvényes-e, és a fejléc pontosan az Ön kódját tartalmazza-e. Emellett illessze be a(z) docker compose ps kimenetét, és válaszolja meg, melyik szolgáltatás az egyetlen, amely portokat tesz közzé.

Z9.4. feladat: Bizonyítsa, hogy a konténere fut

Kattintson a „Kódom megjelenítése” gombra, és vegye fel az X-Weboke-Cursus fejlécet ezzel a kóddal a Caddyfile-jába, például: header { X-Weboke-Cursus "<code>" }. Kívülről nem látható, hogy valami konténerben fut-e, ezért a docker compose ps kimenetét is illessze be (ezt nem tároljuk).




Amit beír, és amit találunk, azt nem tároljuk. A böngészője megjegyzi a válaszait és azt, hogy teljesítette e a feladatot. Ha bejelentkezett, a Fiókomban csak azt tároljuk, hogy a feladat (majdnem) helyes volt; ott ezt is törölheti.

További olvasnivaló

Egy pillanat…

Domainek beállítása

Állítsa be domainenként a névszervereket, a tárhelyhez való kapcsolást és azt, hogy ki legyen a tulajdonos.

Domainek betöltése…