Prijeđite na sadržaj

Postavke kolačića

Za svaku vrstu odaberite koje kolačiće dopuštate. Svoj odabir uvijek možete promijeniti putem poveznice Postavke kolačića na dnu svake stranice. Izjava o privatnosti

Nužni

Uvijek uključeni

Potrebni za prijavu, čuvanje košarice i pamćenje Vaših odabira. Uvijek su uključeni.

Koji kolačići?
  • weboke_sessie, weboke_klant, weboke_remember: Vaša sesija i to da ostanete prijavljeni
  • weboke_basket: Vaša košarica
  • wkBtwIncl: prikaz cijena s PDV-om ili bez njega
  • wok_cookies: Vaš odabir kolačića, 12 mjeseci

Mjeri koji oglas dovodi do posjeta ili narudžbe, kako ne bismo plaćali oglase koji ništa ne donose.

Koji kolačići?
  • Google Ads putem Google Tag Managera (_gcl_au, _gcl_aw), do 90 dana
  • OpenAI Ads, oglasi u ChatGPT-u
  • wok_aff: preko kojeg ste partnera došli k nama (partnerski program), 60 dana

4,6

Država i jezik

Svaka država ima vlastitu stranicu, s cijenama i PDV-om te države.

Pogledajte

Recepti: Uptime Kuma i Vaultwarden

Modul 9: Docker i docker compose · Vrijeme čitanja: 13 minuta

Cilj učenja: Nakon ove lekcije moći ćete pokrenuti Uptime Kuma i Vaultwarden s docker compose iza Caddyja, s https-om, zatvorenom registracijom, sigurnosnom kopijom volumena i ustaljenim načinom ažuriranja.

Ključni pojmovi: reverse proxy kontejner, Caddyfile, automatski https, Uptime Kuma, Vaultwarden, DOMAIN, SIGNUPS_ALLOWED, ADMIN_TOKEN, Argon2, .env, websocketi, sigurnosna kopija volumena, docker compose pull, vlastito zaglavlje

Što gradimo

Dvije korisne usluge na Vašem vlastitom poslužitelju, svaka na svojoj poddomeni:

  • Uptime Kuma na status.example.com: program za nadzor s web-sučeljem koji prati Vaše web-stranice, priključke i certifikate te Vam šalje obavijest kada nešto prestane raditi (lekcija 8.3). Pazite: nadzor koji radi na istom poslužitelju kao i ono što nadzire ne vidi kada cijeli taj poslužitelj padne. Koristite ga stoga za svoje druge stranice i usluge ili ga postavite na drugi poslužitelj.
  • Vaultwarden na kluis.example.com: lagana, neovisna poslužiteljska verzija koja radi s aplikacijama i proširenjima preglednika tvrtke Bitwarden. Trezor lozinki osjetljiv je softver: postavite ga samo ako ste ga spremni redovito održavati i izrađivati sigurnosne kopije. Sasvim je u redu i jednostavno koristiti upravitelj lozinki nekog pružatelja usluge.

Ispred njih postavljamo Caddy u kontejneru: on prima promet na priključcima 80 i 443, sam se brine za certifikate od Let's Encrypt (lekcije 7.3 i 7.4) i prosljeđuje promet odgovarajućem kontejneru. Uptime Kuma i Vaultwarden sami ne objavljuju priključke (lekcija 9.3).

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

Prije početka

  1. Docker Engine s compose dodatkom (lekcija 9.2).
  2. Dva DNS zapisa koja pokazuju na Vaš poslužitelj, A i AAAA (lekcija 7.1): status.example.com i kluis.example.com.
  3. Slobodni priključci 80 i 443 na poslužitelju. Ako na tim priključcima već radi sistemski nginx ili Caddy, Caddy kontejner ih ne može koristiti. U tom slučaju odaberite: ili zaustavite sistemski web-poslužitelj, ili prepustite njemu posao proxyja i objavite kontejnere na 127.0.0.1 (lekcija 9.3). U ovom receptu to radi Caddy kontejner.
  4. U ufw otvorite 80/tcp, 443/tcp i za HTTP/3 i 443/udp (lekcija 5.2). Strogo uzevši, Docker zaobilazi ufw, ali ovako pregled Vašeg vatrozida odgovara stvarnom stanju.

Datoteke

Sve ide u jednu mapu, /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:

Prije početka provjerite koja je najnovija verzija Vaultwardena (izdanja na GitHubu) i upišite je u oznaku (tag). Samo Caddy objavljuje priključke; oni moraju biti javni. Volumeni caddy-data (certifikati), uptime-kuma i mapa vw-data sadrže sve što morate sačuvati.

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 za oba naziva sam preuzima certifikat i preusmjerava http na https. uptime-kuma i vaultwarden su nazivi servisa iz compose datoteke: Caddy ih pronalazi na internoj mreži. Blok header dodaje dodatni redak zaglavlja u svaki odgovor s status.example.com; to zaglavlje koristite u zadatku kao dokaz da Vaš proxy kontejner radi. S defer zaglavlje se postavlja nakon što je pozadinska usluga dala svoj odgovor. Želite li i HSTS te ostala sigurnosna zaglavlja iz lekcije 7.4, stavite ih u isti blok.

Sigurno postavljanje Vaultwardena

Četiri stvari čine razliku između sigurnog i opasnog trezora.

Prvo: samo putem https-a. Web-trezor Bitwardena koristi kriptografiju preglednika, a preglednici je omogućuju samo na https stranicama. Bez https-a stoga ne radi kako treba, i to je dobro. Dokumentacija Vaultwardena preporučuje reverse proxy za https, poput Caddyja ovdje. Postavite DOMAIN na punu https adresu.

Drugo: zatvorena registracija. S SIGNUPS_ALLOWED: "true" svatko tko pronađe stranicu može otvoriti račun na Vašem poslužitelju. Zato pokrenite uslugu, odmah izradite svoj račun (ili račune), postavite vrijednost na "false" i ponovno pokrenite docker compose up -d. Želite li kasnije nekoga dodati, koristite funkciju pozivnice u administratorskom sučelju.

Treće: hashirani administratorski token. Administratorsko sučelje (/admin) zaštićeno je s ADMIN_TOKEN. Ondje nemojte upisati čitljivu lozinku, nego Argon2 hash. Izradit ćete ga pomoću samog Vaultwardena:

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

Upišite taj redak u .env (dakle VW_ADMIN_TOKEN='$argon2id$...', s jednostrukim navodnicima) i učinite datoteku čitljivom samo za root: sudo chmod 600 .env. U datoteci .env ne morate udvostručavati znakove $; ako hash stavite izravno pod environment: u compose datoteci, onda morate (svaki $ postaje $$), inače ih Compose pokušava popuniti kao varijable. Na /admin se prijavljujete lozinkom koju ste upisali, a ne hashom. Pazite: postavke koje spremite u administratorskom sučelju zapisuju se u vw-data/config.json i tada imaju prednost pred varijablama okruženja.

Četvrto: sigurnosna kopija i vraćanje. Sve se nalazi u vw-data: baza podataka, privici i ključevi. Uključite tu mapu u svoju restic sigurnosnu kopiju (lekcija 8.2), a za bazu podataka slijedite upute za sigurnosno kopiranje iz Vaultwarden wikija kako ne biste kopirali napola zapisanu datoteku. Testirajte vraćanje (zadatak O8.2): trezor bez ispravne sigurnosne kopije rizik je za sve Vaše lozinke.

Obavijesti između uređaja (websocketi) u novijim verzijama Vaultwardena rade preko istog priključka; Caddy ih prosljeđuje bez dodatnih postavki.

Postavljanje Uptime Kume

Nakon docker compose up -d otvorite https://status.example.com. Pri prvom posjetu Uptime Kuma traži da izradite administratorski račun. Učinite to odmah: dok taj račun ne postoji, svatko tko pronađe stranicu može ga izraditi. Ne želite li uopće preuzeti taj rizik, najprije uklonite blok status iz Caddyfilea, izradite račun preko SSH tunela (lekcija 2.3) i zatim vratite blok.

Nakon toga dodajte monitore: HTTP monitor za svoju web-stranicu, TCP monitor za priključak, upozorenje za certifikat i kanal za obavijesti (e-pošta, program za razgovor ili push usluga). U postavkama Uptime Kume uključite i dvofaktorsku autentifikaciju.

Pokretanje i provjera

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

Samo Caddy ima priključke. Ako preuzimanje certifikata ne uspije, u zapisima Caddyja piše zašto: najčešće DNS još ne pokazuje na poslužitelj ili priključak 80 nije dostupan (lekcija 7.3).

Ažuriranje

Kontejner se ne ažurira putem unattended-upgrades (lekcija 4.2). Odredite stalni termin, primjerice svaka dva tjedna:

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 preuzima najnovije imageove unutar oznake koju ste odabrali (dakle caddy:2 ostaje unutar verzije 2). Za Vaultwarden s brojem verzije najprije prilagodite oznaku nakon čitanja bilješki o izdanju (release notes). Kod nove glavne verzije uvijek pročitajte bilješke o izdanju: ponekad morate nešto promijeniti u postavkama. Prije većeg ažuriranja izradite sigurnosnu kopiju volumena.

Pratite i sigurnosne obavijesti autora. Ranjivost u Vaultwardenu ili Caddyju bit će otklonjena tek kada preuzmete novu verziju.

U praksi

Ovaj recept radi na svakom VPS-u s Dockerom, kod WebOké ili kod drugog pružatelja. Riječ je o samopomoći: pružatelj Vašeg VPS-a ne upravlja ničim unutar Vaših kontejnera. Prije prvog postavljanja izradite snapshot, pa možete eksperimentirati bez brige.

Sažetak

  • Jedna compose datoteka s Caddyjem kao reverse proxy kontejnerom; samo Caddy objavljuje priključke 80 i 443, usluge ništa.
  • Caddy automatski upravlja certifikatima i https-om te pomoću header može postaviti vlastite retke zaglavlja.
  • Vaultwarden: https je obavezan, DOMAIN na https adresi, registracija zatvorena nakon izrade vlastitog računa, ADMIN_TOKEN kao Argon2 hash u .env s pravima 600.
  • Uptime Kuma: odmah izradite administratorski račun i uključite dvofaktorsku autentifikaciju; njime prije svega nadzirite druge poslužitelje i stranice.
  • Izrađujte sigurnosne kopije volumena i mape vw-data te ažurirajte s docker compose pull i up -d u stalnom terminu.

Kviz

1. Zašto Uptime Kuma i Vaultwarden u ovom receptu sami ne objavljuju priključke?



2. Zašto web-trezor Vaultwardena ne radi kako treba preko običnog http-a?



3. Izradili ste svoj Vaultwarden račun. Koji je sljedeći korak?



4. Argon2 hash administratorskog tokena stavili ste izravno pod environment: u compose.yaml i dobivate upozorenja o nepoznatim varijablama. Zašto?



5. Kako ažurirate ove usluge?



Zadatak

Zadatak Z9.4: Dokažite da Vaš kontejner radi. U zadatku preuzmite svoj osobni kod i upišite ga u Caddyfile svog Caddy kontejnera kao zaglavlje X-Weboke-Cursus za jednu svoju poddomenu (poput status.<jouwdomein>). Ponovno učitajte Caddy i upišite naziv hosta. Program dohvaća https://<hostnaam>/ i provjerava je li certifikat valjan te sadrži li zaglavlje točno Vaš kod. Uz to zalijepite izlaz naredbe docker compose ps i odgovorite koja jedina usluga objavljuje priključke.

Zadatak Z9.4: Dokažite da Vaš kontejner radi

Kliknite "Prikaži moj kod" i postavite zaglavlje X-Weboke-Cursus s tim kodom u svoj Caddyfile, na primjer: header { X-Weboke-Cursus "<code>" }. Izvana se ne vidi radi li nešto u kontejneru; zato zalijepite i izlaz naredbe docker compose ps (njega ne spremamo).




Ono što unesete i što pronađemo ne spremamo. Vaš preglednik pamti Vaše odgovore i je li zadatak položen. Ako ste prijavljeni, u Moji tečajevi čuvamo samo podatak da ste zadatak (gotovo) uspješno riješili; ondje to možete i izbrisati.

Dodatno štivo

Trenutak…

Postavite svoje domene

Za svaku domenu odredite nameservere, povezivanje s hostingom i tko postaje vlasnik.

Učitavanje Vaših domena…