Pereiti prie turinio

Slapukų nustatymai

Pasirinkite, kokių rūšių slapukus leidžiate. Pasirinkimą bet kada galite pakeisti per „Slapukų nustatymai“ kiekvieno puslapio apačioje. Privatumo pareiškimas

Būtinieji

Visada įjungti

Reikalingi prisijungti, išsaugoti krepšelį ir įsiminti Jūsų pasirinkimus. Jie visada įjungti.

Kokie slapukai?
  • weboke_sessie, weboke_klant, weboke_remember: Jūsų sesija ir prisijungimo išlaikymas
  • weboke_basket: Jūsų krepšelis
  • wkBtwIncl: kainų rodymas su PVM arba be PVM
  • wok_cookies: Jūsų slapukų pasirinkimas, 12 mėnesių

Matuoja, kuri reklama atveda prie apsilankymo ar užsakymo, kad nemokėtume už neveiksmingas reklamas.

Kokie slapukai?
  • Google Ads per Google Tag Manager (_gcl_au, _gcl_aw), iki 90 dienų
  • OpenAI Ads, reklamos ChatGPT
  • wok_aff: per kurį partnerį atėjote pas mus (partnerių programa), 60 dienų

4,6

Šalis ir kalba

Kiekviena šalis turi savo svetainę su tos šalies kainomis ir PVM.

Peržiūrėti

Receptai: Uptime Kuma ir Vaultwarden

9 modulis: Docker ir docker compose · Skaitymo laikas: 13 min.

Mokymosi tikslas: Po šios pamokos galėsite paleisti Uptime Kuma ir Vaultwarden su docker compose už Caddy, su https, uždara registracija, tomų atsarginėmis kopijomis ir nuolatiniu atnaujinimo būdu.

Pagrindinės sąvokos: atvirkštinio tarpinio serverio (reverse proxy) konteineris, Caddyfile, automatinis https, Uptime Kuma, Vaultwarden, DOMAIN, SIGNUPS_ALLOWED, ADMIN_TOKEN, Argon2, .env, websockets, tomų atsarginės kopijos, docker compose pull, nuosava antraštė

Ką sukursime

Dvi naudingas paslaugas Jūsų serveryje, kiekvieną savo subdomene:

  • Uptime Kuma adresu status.example.com: stebėsenos programa su žiniatinklio sąsaja, kuri stebi Jūsų svetaines, prievadus ir sertifikatus bei siunčia Jums pranešimą, kai kas nors nustoja veikti (pamoka 8.3). Atkreipkite dėmesį: stebėsena, veikianti tame pačiame serveryje kaip ir tai, ką ji stebi, nepastebės, kad sutriko visas serveris. Todėl naudokite ją kitoms savo svetainėms ir paslaugoms arba įdiekite ją antrame serveryje.
  • Vaultwarden adresu kluis.example.com: lengva, nepriklausoma serverio versija, veikianti su Bitwarden programėlėmis ir naršyklės plėtiniais. Slaptažodžių saugykla yra jautri programinė įranga: imkitės jos tik tada, jei esate pasirengę ją tinkamai prižiūrėti ir daryti jos atsargines kopijas. Visiškai tinka ir paprasčiausiai naudoti paslaugų teikėjo slaptažodžių tvarkyklę.

Priešais jas konteineryje paleisime Caddy: jis priima 80 ir 443 prievadus, pats tvarko Let's Encrypt sertifikatus (pamokos 7.3 ir 7.4) ir nukreipia srautą į reikiamą konteinerį. Uptime Kuma ir Vaultwarden patys neskelbia jokių prievadų (pamoka 9.3).

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

Prieš pradedant

  1. Docker Engine su compose papildiniu (pamoka 9.2).
  2. Du DNS įrašai, nukreipti į Jūsų serverį, A ir AAAA (pamoka 7.1): status.example.com ir kluis.example.com.
  3. Laisvi 80 ir 443 prievadai serveryje. Jei tuose prievaduose jau veikia sistemos nginx arba Caddy, Caddy konteineris negalės jų naudoti. Tada pasirinkite: arba sustabdote sistemos žiniatinklio serverį, arba leidžiate jam atlikti tarpinio serverio darbą ir skelbiate konteinerius adresu 127.0.0.1 (pamoka 9.3). Šiame recepte tai atlieka Caddy konteineris.
  4. Atidarykite ufw prievadus 80/tcp, 443/tcp, o HTTP/3 atveju ir 443/udp (pamoka 5.2). Griežtai kalbant, Docker apeina ufw, tačiau taip Jūsų užkardos apžvalga atitiks tikrovę.

Failai

Viskas dedama į vieną katalogą, /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:

Prieš pradėdami patikrinkite, kuri Vaultwarden versija yra naujausia (leidimai GitHub), ir įrašykite ją į žymą (tag). Prievadus skelbia tik Caddy; jie turi būti vieši. Tomuose caddy-data (sertifikatai), uptime-kuma ir kataloge vw-data yra viskas, ką turite išsaugoti.

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 savaime gauna sertifikatą abiem pavadinimams ir nukreipia http į https. uptime-kuma ir vaultwarden yra paslaugų pavadinimai iš compose failo: Caddy jas randa vidiniame tinkle. Blokas header prideda papildomą antraštės eilutę prie kiekvieno status.example.com atsakymo; ją užduotyje naudosite kaip įrodymą, kad veikia būtent Jūsų tarpinio serverio konteineris. Su defer antraštė nustatoma po to, kai užpakalinė paslauga pateikia savo atsakymą. Jei norite ir HSTS bei kitų saugumo antraščių iš pamokos 7.4, įrašykite jas į tą patį bloką.

Saugus Vaultwarden nustatymas

Keturi dalykai lemia skirtumą tarp saugios ir pavojingos saugyklos.

Pirma: tik per https. Bitwarden žiniatinklio saugykla naudoja naršyklės kriptografiją, o naršyklės ją suteikia tik https puslapiuose. Todėl be https ji tinkamai neveikia, ir tai tik į gera. Vaultwarden dokumentacija https užtikrinti rekomenduoja atvirkštinį tarpinį serverį, pavyzdžiui, kaip čia, Caddy. Nustatykite DOMAIN į visą https adresą.

Antra: uždaryta registracija. Su SIGNUPS_ALLOWED: "true" bet kas, radęs puslapį, gali susikurti paskyrą Jūsų serveryje. Todėl paleiskite, iš karto susikurkite savo paskyrą (-as), nustatykite reikšmę į "false" ir dar kartą įvykdykite docker compose up -d. Jei vėliau norėsite ką nors pridėti, naudokite kvietimo funkciją administravimo lange.

Trečia: maišos funkcija apsaugotas administravimo raktas. Administravimo langas (/admin) apsaugotas su ADMIN_TOKEN. Neįrašykite ten skaitomo slaptažodžio, o Argon2 maišą (hash). Ją sukursite pačiu Vaultwarden:

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

Įrašykite šią eilutę į .env (t. y. VW_ADMIN_TOKEN='$argon2id$...', su viengubomis kabutėmis) ir padarykite failą skaitomą tik root: sudo chmod 600 .env. Faile .env ženklų $ dvigubinti nereikia; jei maišą įrašote tiesiai po environment: compose faile, tada reikia (kiekvienas $ tampa $$), kitaip Compose bandys juos pakeisti kaip kintamuosius. Prisijungiate prie /admin su slaptažodžiu, kurį įvedėte, o ne su maiša. Atkreipkite dėmesį: nustatymai, kuriuos išsaugote administravimo lange, patenka į vw-data/config.json ir tada turi pirmenybę prieš aplinkos kintamuosius.

Ketvirta: atsarginė kopija ir atkūrimas. Viskas yra kataloge vw-data: duomenų bazė, priedai ir raktai. Įtraukite šį katalogą į savo restic atsarginę kopiją (pamoka 8.2), o duomenų bazei laikykitės Vaultwarden wiki pateiktų atsarginių kopijų nurodymų, kad nenukopijuotumėte pusiau įrašyto failo. Išbandykite atkūrimą (užduotis O8.2): saugykla be veikiančios atsarginės kopijos kelia riziką visiems Jūsų slaptažodžiams.

Pranešimai tarp įrenginių (websockets) naujausiose Vaultwarden versijose veikia per tą patį prievadą; Caddy juos perduoda be papildomų nustatymų.

Uptime Kuma nustatymas

Po docker compose up -d atidarykite https://status.example.com. Pirmojo apsilankymo metu Uptime Kuma paprašys sukurti administratoriaus paskyrą. Padarykite tai iš karto: kol tokios paskyros nėra, ją gali sukurti bet kas, radęs puslapį. Jei visai nenorite šios rizikos, iš pradžių pašalinkite bloką status iš Caddyfile, sukurkite paskyrą per SSH tunelį (pamoka 2.3) ir tada grąžinkite bloką atgal.

Tada pridėkite stebėjimo taškus (monitors): HTTP stebėjimą savo svetainei, TCP stebėjimą prievadui, sertifikato įspėjimą ir pranešimų kanalą (el. paštą, pokalbių programą arba tiesioginių pranešimų paslaugą). Taip pat įjunkite dviejų veiksnių autentifikavimą Uptime Kuma nustatymuose.

Paleidimas ir patikra

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

Prievadus turi tik Caddy. Jei sertifikato gauti nepavyksta, Caddy žurnaluose nurodyta priežastis: dažniausiai DNS dar nenukreiptas į serverį arba 80 prievadas nepasiekiamas (pamoka 7.3).

Atnaujinimas

Konteinerio unattended-upgrades neatnaujina (pamoka 4.2). Nustatykite tam pastovų laiką, pavyzdžiui, kas dvi savaites:

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 parsiunčia naujausius atvaizdus pagal Jūsų pasirinktą žymą (taigi caddy:2 lieka 2 versijos ribose). Vaultwarden su versijos numeriu atveju pirmiausia, perskaitę leidimo pastabas (release notes), pakeiskite žymą. Išleidus naują pagrindinę versiją, visada perskaitykite leidimo pastabas: kartais reikia ką nors pakeisti Jūsų nustatymuose. Prieš didelį atnaujinimą padarykite tomų atsarginę kopiją.

Taip pat sekite kūrėjų saugumo pranešimus. Vaultwarden arba Caddy pažeidžiamumas bus ištaisytas tik tada, kai parsisiųsite naują versiją.

Praktikoje

Šis receptas veikia bet kuriame VPS su Docker, WebOké ar kitame paslaugų teikėjo serveryje. Tai savipagalba: Jūsų VPS paslaugų teikėjas nieko nevaldo Jūsų konteinerių viduje. Prieš diegdami pirmą kartą, padarykite momentinę kopiją (snapshot), tada galėsite ramiai eksperimentuoti.

Santrauka

  • Vienas compose failas su Caddy kaip atvirkštinio tarpinio serverio konteineriu; tik Caddy skelbia 80 ir 443 prievadus, paslaugos nieko neskelbia.
  • Caddy automatiškai tvarko sertifikatus ir https, o su header gali nustatyti nuosavas antraštės eilutes.
  • Vaultwarden: https privalomas, DOMAIN nustatytas į https adresą, registracija uždaroma susikūrus savo paskyrą, ADMIN_TOKEN kaip Argon2 maiša faile .env su teisėmis 600.
  • Uptime Kuma: iš karto sukurkite administratoriaus paskyrą ir įjunkite dviejų veiksnių autentifikavimą; ja daugiausia stebėkite kitus serverius ir svetaines.
  • Darykite tomų ir katalogo vw-data atsargines kopijas, o atnaujinkite su docker compose pull ir up -d pastoviu laiku.

Testas (quiz)

1. Kodėl šiame recepte Uptime Kuma ir Vaultwarden patys neskelbia prievadų?



2. Kodėl Vaultwarden žiniatinklio saugykla tinkamai neveikia per paprastą http?



3. Susikūrėte savo Vaultwarden paskyrą. Koks kitas žingsnis?



4. Įrašote administravimo rakto Argon2 maišą tiesiai po environment: faile compose.yaml ir gaunate įspėjimus apie nežinomus kintamuosius. Kodėl?



5. Kaip atnaujinti šias paslaugas?



Užduotis

Užduotis Z9.4: Įrodykite, kad Jūsų konteineris veikia. Užduotyje gaukite savo asmeninį kodą ir įrašykite jį į savo Caddy konteinerio Caddyfile kaip antraštę X-Weboke-Cursus vienam savo subdomenui (pavyzdžiui, status.<jouwdomein>). Iš naujo įkelkite Caddy ir įveskite serverio vardą. Programa atsisiunčia https://<hostnaam>/ ir patikrina, ar sertifikatas galioja ir ar antraštėje yra būtent Jūsų kodas. Be to, įklijuokite docker compose ps išvestį ir atsakykite, kuri paslauga vienintelė skelbia prievadus.

Užduotis Z9.4: Įrodykite, kad Jūsų konteineris veikia

Spustelėkite „Rodyti mano kodą“ ir įrašykite antraštę X-Weboke-Cursus su tuo kodu į savo Caddyfile, pavyzdžiui: header { X-Weboke-Cursus "<code>" }. Iš išorės nematyti, ar kas nors veikia konteineryje, todėl taip pat įklijuokite docker compose ps išvestį (jos nesaugome).




Ko, ką įvedate ir ką randame, nesaugome. Jūsų naršyklė atsimena Jūsų atsakymus ir tai, ar užduotį atlikote. Jei esate prisijungę, skiltyje Mano kursai išsaugome tik tai, kad užduotis buvo atlikta (ar beveik atlikta); ten tai galite ir pašalinti.

Skaitykite daugiau

Akimirką…

Nustatykite domenus

Kiekvienam domenui nustatykite vardų serverius, susiejimą su talpinimu ir tai, kas taps valdytoju.

Įkeliami Jūsų domenai…