Mine sisu juurde

Küpsiste seaded

Vali iga liigi kohta, milliseid küpsiseid lubad. Oma valikut saad alati muuta iga lehe allosas oleva lingi „Küpsiste seaded“ kaudu. Privaatsuspoliitika

Vajalikud

Alati sees

Vajalikud sisselogimiseks, ostukorvi säilitamiseks ja sinu valikute meelespidamiseks. Need on alati sees.

Millised küpsised?
  • weboke_sessie, weboke_klant, weboke_remember: sinu seanss ja sisselogituks jäämine
  • weboke_basket: sinu ostukorv
  • wkBtwIncl: hindade näitamine koos käibemaksuga või ilma
  • wok_cookies: sinu küpsisevalik, 12 kuud

Mõõdab, milline reklaam viib külastuse või tellimuseni, et me ei maksaks reklaamide eest, mis midagi ei anna.

Millised küpsised?
  • Google Ads Google Tag Manageri kaudu (_gcl_au, _gcl_aw), kuni 90 päeva
  • OpenAI Ads, reklaamid ChatGPT-s
  • wok_aff: millise partneri kaudu meie juurde jõudsid (partnerprogramm), 60 päeva

4,6

Riik ja keel

Igal riigil on oma sait, selle riigi hindade ja käibemaksuga.

Vaata

Retseptid: Uptime Kuma ja Vaultwarden

Moodul 9: Docker ja docker compose · Lugemisaeg: 13 minutit

Õpieesmärk: Pärast seda õppetundi oskad käivitada Uptime Kuma ja Vaultwardeni docker compose'iga Caddy taga, koos https-i, suletud registreerimise, volume'ite varunduse ja kindla uuendamise viisiga.

Põhimõisted: pöördpuhverserveri (reverse proxy) konteiner, Caddyfile, automaatne https, Uptime Kuma, Vaultwarden, DOMAIN, SIGNUPS_ALLOWED, ADMIN_TOKEN, Argon2, .env, websocketid, volume'ite varundamine, docker compose pull, oma päis

Mida me ehitame

Kaks kasulikku teenust sinu enda serveris, kumbki oma alamdomeenil:

  • Uptime Kuma aadressil status.example.com: veebiliidesega jälgimisprogramm, mis hoiab silma peal su veebisaitidel, portidel ja sertifikaatidel ning saadab sulle teate, kui midagi maha kukub (õppetund 8.3). Pane tähele: jälgimine, mis töötab samas serveris kui see, mida ta jälgib, ei märka, kui kogu server maha kukub. Kasuta seda seega oma teiste saitide ja teenuste jaoks või pane see teise serverisse.
  • Vaultwarden aadressil kluis.example.com: kerge, sõltumatu serveriversioon, mis töötab Bitwardeni rakenduste ja brauserilaiendustega. Paroolihoidla on tundlik tarkvara: tee seda ainult siis, kui oled valmis seda korralikult hooldama ja varundama. Täiesti mõistlik on kasutada ka mõne teenusepakkuja paroolihaldurit.

Nende ette paneme konteinerisse Caddy: see võtab vastu pordid 80 ja 443, hoolitseb ise Let's Encrypti sertifikaatide eest (õppetunnid 7.3 ja 7.4) ja suunab liikluse õigesse konteinerisse. Uptime Kuma ja Vaultwarden ise ei avalda ühtegi porti (õppetund 9.3).

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

Enne alustamist

  1. Docker Engine koos compose'i pistikprogrammiga (õppetund 9.2).
  2. Kaks DNS-kirjet, mis osutavad su serverile, A ja AAAA (õppetund 7.1): status.example.com ja kluis.example.com.
  3. Pordid 80 ja 443 serveris vabad. Kui neil portidel töötab juba süsteemi nginx või Caddy, ei saa Caddy konteiner neid kasutada. Siis vali: kas peatad süsteemi veebiserveri või lased tal puhverserveri töö ära teha ja avaldad konteinerid aadressil 127.0.0.1 (õppetund 9.3). Selles retseptis teeb seda Caddy konteiner.
  4. Ava ufw-s 80/tcp, 443/tcp ja HTTP/3 jaoks ka 443/udp (õppetund 5.2). Rangelt võttes läheb Docker ufw-st mööda, kuid nii vastab su tulemüüri ülevaade tegelikkusele.

Failid

Kõik läheb ühte kausta, /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:

Enne alustamist vaata, milline Vaultwardeni versioon on uusim (releases GitHubis), ja pane see tag'i. Porte avaldab ainult Caddy; need peavad olema avalikud. Volume'id caddy-data (sertifikaadid), uptime-kuma ja kaust vw-data sisaldavad kõike, mida pead alles hoidma.

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
}

Caddy hangib mõlemale nimele ise sertifikaadi ja suunab http ümber https-ile. uptime-kuma ja vaultwarden on teenusenimed compose-failist: Caddy leiab need sisevõrgust. Plokk header lisab igale status.example.com vastusele lisapäise; seda kasutad ülesandes tõendina, et sinu puhverserveri konteiner töötab. Valikuga defer seatakse päis pärast seda, kui taustal olev teenus on oma vastuse andnud. Kui soovid ka HSTS-i ja teisi turvapäiseid õppetunnist 7.4, pane need samasse plokki.

Vaultwardeni turvaline seadistamine

Neli asja teevad vahe turvalise ja ohtliku hoidla vahel.

Üks: ainult https-i kaudu. Bitwardeni veebihoidla kasutab brauseri krüptograafiat ja brauserid teevad selle kättesaadavaks ainult https-lehtedel. Ilma https-ita see seega korralikult ei tööta, ja hea ongi. Vaultwardeni dokumentatsioon soovitab https-i jaoks pöördpuhverserverit, nagu siin Caddy. Sea DOMAIN täielikule https-aadressile.

Kaks: registreerimine kinni. Seadega SIGNUPS_ALLOWED: "true" saab igaüks, kes lehe leiab, sinu serverisse konto teha. Seega käivita, loo kohe oma konto(d), sea väärtuseks "false" ja käivita uuesti docker compose up -d. Kui soovid hiljem kedagi lisada, kasuta halduslehe kutsefunktsiooni.

Kolm: räsitud haldustoken. Halduslehte (/admin) kaitseb ADMIN_TOKEN. Ära pane sinna loetavat parooli, vaid Argon2-räsi. Selle teed Vaultwardeni enda abil:

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$...'

Pane see rida faili .env (st VW_ADMIN_TOKEN='$argon2id$...', ühekordsete jutumärkidega) ja tee fail loetavaks ainult root'ile: sudo chmod 600 .env. Failis .env ei pea $-märke kahekordistama; kui paned räsi otse compose-failis environment: alla, siis pead (iga $ muutub $$-ks), muidu proovib Compose neid muutujatena täita. Lehele /admin logid sisse parooliga, mille sisestasid, mitte räsiga. Pane tähele: halduslehel salvestatud seaded lähevad faili vw-data/config.json ja on siis keskkonnamuutujatest ülimuslikud.

Neli: varundus ja taastamine. Kõik asub kaustas vw-data: andmebaas, manused ja võtmed. Võta see kaust oma restic-varundusse (õppetund 8.2) ja järgi andmebaasi puhul Vaultwardeni wiki varundusjuhiseid, et sa ei kopeeriks poolikult kirjutatud faili. Testi taastamist (ülesanne O8.2): hoidla ilma toimiva varunduseta on risk kõigile su paroolidele.

Seadmetevahelised teated (websocketid) töötavad Vaultwardeni uuemates versioonides sama pordi kaudu; Caddy edastab need ilma lisaseadeteta.

Uptime Kuma seadistamine

Pärast käsku docker compose up -d ava https://status.example.com. Esimesel külastusel palub Uptime Kuma sul luua administraatori konto. Tee seda kohe: seni kuni seda kontot pole, saab igaüks, kes lehe leiab, selle ise luua. Kui sa ei taha seda riski üldse võtta, jäta plokk status esialgu Caddyfile'ist välja, loo konto SSH-tunneli kaudu (õppetund 2.3) ja pane plokk siis tagasi.

Seejärel lisa monitorid: HTTP-monitor oma veebisaidile, TCP-monitor pordile, sertifikaadihoiatus ja teavituskanal (e-post, vestlusprogramm või push-teenus). Lülita Uptime Kuma seadetes sisse ka kaheastmeline kinnitamine.

Käivitamine ja kontrollimine

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

Porte on ainult Caddyl. Kui sertifikaadi hankimine ei õnnestu, on Caddy logides kirjas, miks: enamasti ei osuta DNS veel serverile või pole port 80 kättesaadav (õppetund 7.3).

Uuendamine

unattended-upgrades ei uuenda konteinereid (õppetund 4.2). Tee sellest kindel harjumus, näiteks iga kahe nädala tagant:

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

pull tõmbab uusimad image'id sinu valitud tag'i piires (seega jääb caddy:2 versiooni 2 piiresse). Versiooninumbriga Vaultwardeni puhul muuda esmalt tag'i, kui oled release notes'id läbi lugenud. Uue põhiversiooni puhul loe alati release notes'e: vahel tuleb seadetes midagi muuta. Enne suurt uuendust varunda volume'id.

Jälgi ka tegijate turvateateid. Vaultwardeni või Caddy haavatavus parandatakse ainult siis, kui sa ise uue versiooni alla tõmbad.

Praktikas

See retsept töötab igas Dockeriga VPS-is, nii WebOkés kui ka mõne teise teenusepakkuja juures. See on iseabi: su VPS-i pakkuja ei halda midagi su konteinerite sees. Tee enne esimest seadistamist hetktõmmis (snapshot), siis saad rahuliku südamega katsetada.

Kokkuvõte

  • Üks compose-fail, kus Caddy on pöördpuhverserveri konteiner; porte 80 ja 443 avaldab ainult Caddy, teenused mitte midagi.
  • Caddy hoolitseb sertifikaatide ja https-i eest automaatselt ning saab header abil lisada oma päiseid.
  • Vaultwarden: https on kohustuslik, DOMAIN https-aadressile, registreerimine kinni pärast oma konto loomist, ADMIN_TOKEN Argon2-räsina failis .env õigustega 600.
  • Uptime Kuma: loo kohe administraatori konto ja lülita sisse kaheastmeline kinnitamine; jälgi sellega peamiselt teisi servereid ja saite.
  • Varunda volume'id ja kaust vw-data ning uuenda kindlal ajal käskudega docker compose pull ja up -d.

Test (quiz)

1. Miks ei avalda Uptime Kuma ja Vaultwarden selles retseptis ise porte?



2. Miks ei tööta Vaultwardeni veebihoidla tavalise http kaudu korralikult?



3. Oled oma Vaultwardeni konto loonud. Mis on järgmine samm?



4. Paned haldustokeni Argon2-räsi otse environment: alla failis compose.yaml ja saad hoiatusi tundmatute muutujate kohta. Miks?



5. Kuidas neid teenuseid uuendada?



Ülesanne

Ülesanne Z9.4: Tõesta, et su konteiner töötab. Hangi ülesandes oma isiklik kood ja pane see oma Caddy konteineri Caddyfile'i päisena X-Weboke-Cursus mõnele oma alamdomeenile (näiteks status.<jouwdomein>). Laadi Caddy uuesti ja sisesta hostinimi. Programm laadib https://<hostnaam>/ ja kontrollib, et sertifikaat on kehtiv ja päis sisaldab täpselt sinu koodi. Lisaks kleebi käsu docker compose ps väljund ja vasta, milline teenus ainsana porte avaldab.

Ülesanne Z9.4: Tõesta, et su konteiner töötab

Klõpsa nupul "Näita minu koodi" ja lisa oma Caddyfile'i päis X-Weboke-Cursus selle koodiga, näiteks: header { X-Weboke-Cursus "<code>" }. Väljastpoolt ei ole näha, kas miski töötab konteineris, seepärast kleebi ka käsu docker compose ps väljund (me seda ei salvesta).




Seda, mida sisestad, ja mida leiame, me ei salvesta. Su brauser jätab meelde su vastused ja selle, kas sooritasid ülesande. Kui oled sisse loginud, salvestame Minu kursustes ainult info, et sul oli ülesanne (peaaegu) õige; ka selle saad sealt kustutada.

Loe edasi

Hetk…

Seadista oma domeenid

Määra iga domeeni jaoks nimeserverid, seos sinu majutusega ja kes saab omanikuks.

Laadin sinu domeene…