Siirry suoraan sisältöön

Evästeasetukset

Valitse, mitä evästetyyppejä sallit. Voit muuttaa valintaasi milloin tahansa jokaisen sivun alareunassa olevasta kohdasta Evästeasetukset. Tietosuojaseloste

Välttämättömät

Aina käytössä

Tarvitaan sisäänkirjautumiseen, ostoskorin säilyttämiseen ja valintojesi muistamiseen. Nämä ovat aina käytössä.

Mitkä evästeet?
  • weboke_sessie, weboke_klant, weboke_remember: istuntosi ja sisäänkirjautuneena pysyminen
  • weboke_basket: ostoskorisi
  • wkBtwIncl: hintojen näyttäminen verollisina tai verottomina
  • wok_cookies: evästevalintasi, 12 kuukautta

Mittaa, mikä mainos johtaa käyntiin tai tilaukseen, jotta emme maksa mainoksista, joista ei ole hyötyä.

Mitkä evästeet?
  • Google Ads Google Tag Managerin kautta (_gcl_au, _gcl_aw), enintään 90 päivää
  • OpenAI Ads, mainokset ChatGPT-palvelussa
  • wok_aff: minkä kumppanin kautta tulit meille (kumppaniohjelma), 60 päivää

4,6

Maa ja kieli

Jokaisella maalla on oma sivustonsa, jossa on kyseisen maan hinnat ja ALV.

Näytä

Reseptit: Uptime Kuma ja Vaultwarden

Moduuli 9: Docker ja docker compose · Lukuaika: 13 minuuttia

Tavoite: Tämän oppitunnin jälkeen osaat ajaa Uptime Kumaa ja Vaultwardenia docker composella Caddyn takana niin, että käytössä on https, rekisteröinti on suljettu, volyymit varmuuskopioidaan ja päivität palvelut aina samalla tavalla.

Keskeiset käsitteet: käänteisen välityspalvelimen kontti, Caddyfile, automaattinen https, Uptime Kuma, Vaultwarden, DOMAIN, SIGNUPS_ALLOWED, ADMIN_TOKEN, Argon2, .env, websocketit, volyymien varmuuskopiointi, docker compose pull, oma otsake

Mitä rakennamme

Kaksi kätevää palvelua omalle palvelimellesi, kumpikin omassa aliverkkotunnuksessaan:

  • Uptime Kuma osoitteessa status.example.com: verkkokäyttöliittymällä varustettu valvontaohjelma, joka tarkkailee sivustojasi, porttejasi ja varmenteitasi ja lähettää sinulle ilmoituksen, jos jokin lakkaa toimimasta (oppitunti 8.3). Huomaa: valvonta, joka toimii samalla palvelimella kuin valvottava kohde, ei huomaa, jos koko palvelin kaatuu. Käytä sitä siis muiden sivustojesi ja palveluidesi valvontaan tai asenna se toiselle palvelimelle.
  • Vaultwarden osoitteessa kluis.example.com: kevyt, itsenäinen palvelinversio, joka toimii Bitwardenin sovellusten ja selainlaajennusten kanssa. Salasanaholvi on arkaluonteinen ohjelmisto: ota se käyttöön vain, jos olet valmis pitämään sen ajan tasalla ja varmuuskopioimaan sen kunnolla. On myös täysin hyvä vaihtoehto käyttää jonkin palveluntarjoajan salasanojen hallintaa.

Niiden eteen laitamme kontissa toimivan Caddyn: se vastaanottaa portit 80 ja 443, hoitaa itse Let's Encryptin varmenteet (oppitunnit 7.3 ja 7.4) ja ohjaa liikenteen oikeaan konttiin. Uptime Kuma ja Vaultwarden eivät itse julkaise yhtään porttia (oppitunti 9.3).

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

Ennen aloitusta

  1. Docker Engine ja compose-lisäosa (oppitunti 9.2).
  2. Kaksi palvelimeesi osoittavaa DNS-tietuetta, A ja AAAA (oppitunti 7.1): status.example.com ja kluis.example.com.
  3. Portit 80 ja 443 vapaina palvelimella. Jos näissä porteissa toimii jo järjestelmän nginx tai Caddy, Caddy-kontti ei voi käyttää niitä. Valitse silloin: joko pysäytät järjestelmän verkkopalvelimen tai annat sen hoitaa välitystyön ja julkaiset kontit osoitteessa 127.0.0.1 (oppitunti 9.3). Tässä reseptissä työn tekee Caddy-kontti.
  4. Avaa ufw:ssä 80/tcp, 443/tcp ja HTTP/3:a varten myös 443/udp (oppitunti 5.2). Tarkkaan ottaen Docker ohittaa ufw:n, mutta näin palomuurisi yhteenveto vastaa todellisuutta.

Tiedostot

Kaikki tulee yhteen kansioon, /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:

Tarkista ennen aloittamista, mikä on Vaultwardenin uusin versio (julkaisut GitHubissa), ja merkitse se tagiin. Vain Caddy julkaisee portteja, ja niiden on oltava julkisia. Volyymit caddy-data (varmenteet), uptime-kuma ja kansio vw-data sisältävät kaiken, mikä sinun pitää säilyttää.

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 hakee molemmille nimille automaattisesti varmenteen ja ohjaa http-liikenteen https:ään. uptime-kuma ja vaultwarden ovat compose-tiedoston palvelunimiä: Caddy löytää ne sisäverkosta. header-lohko lisää ylimääräisen otsakerivin jokaiseen osoitteen status.example.com vastaukseen. Käytät sitä tehtävässä todisteena siitä, että oma välityspalvelinkonttisi on käynnissä. defer asettaa otsakkeen vasta sen jälkeen, kun taustalla oleva palvelu on antanut vastauksensa. Jos haluat myös HSTS:n ja muut oppitunnin 7.4 tietoturvaotsakkeet, lisää ne samaan lohkoon.

Vaultwardenin turvallinen määrittäminen

Neljä asiaa ratkaisee, onko holvi turvallinen vai vaarallinen.

Yksi: vain https:n kautta. Bitwardenin verkkoholvi käyttää selaimen kryptografiaa, ja selaimet antavat sen käyttöön vain https-sivuilla. Ilman https:ää se ei siis toimi kunnolla, ja hyvä niin. Vaultwardenin dokumentaatio suosittelee https:ää varten käänteistä välityspalvelinta, kuten tässä Caddya. Aseta DOMAIN täydeksi https-osoitteeksi.

Kaksi: rekisteröinti kiinni. Asetuksella SIGNUPS_ALLOWED: "true" kuka tahansa sivun löytävä voi luoda tilin palvelimellesi. Käynnistä siis palvelu, luo heti oma tilisi tai tilisi, vaihda arvoksi "false" ja suorita docker compose up -d uudelleen. Jos haluat myöhemmin lisätä jonkun, käytä hallintanäkymän kutsutoimintoa.

Kolme: tiivistetty hallintatunnus. Hallintanäkymä (/admin) on suojattu asetuksella ADMIN_TOKEN. Älä laita siihen luettavaa salasanaa, vaan Argon2-tiiviste. Sen teet Vaultwardenilla itsellään:

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

Laita tämä rivi tiedostoon .env (eli VW_ADMIN_TOKEN='$argon2id$...', yksinkertaisin lainausmerkein) ja tee tiedostosta vain rootin luettavissa oleva: sudo chmod 600 .env. .env-tiedostossa $-merkkejä ei tarvitse kahdentaa. Jos laitat tiivisteen suoraan compose-tiedostoon kohtaan environment:, ne pitää kahdentaa (jokainen $ muuttuu muotoon $$), muuten Compose yrittää täyttää ne muuttujina. Kirjaudut osoitteeseen /admin kirjoittamallasi salasanalla, et tiivisteellä. Huomaa: hallintanäkymässä tallentamasi asetukset menevät tiedostoon vw-data/config.json ja ohittavat silloin ympäristömuuttujat.

Neljä: varmuuskopiointi ja palautus. Kaikki on kansiossa vw-data: tietokanta, liitteet ja avaimet. Ota kansio mukaan restic-varmuuskopioosi (oppitunti 8.2) ja noudata tietokannan osalta Vaultwardenin wikin varmuuskopio-ohjeita, jotta et kopioi puoliksi kirjoitettua tiedostoa. Testaa palautus (tehtävä O8.2): holvi ilman toimivaa varmuuskopiota on riski kaikille salasanoillesi.

Laitteiden väliset ilmoitukset (websocketit) kulkevat Vaultwardenin uusissa versioissa saman portin kautta. Caddy välittää ne ilman lisäasetuksia.

Uptime Kuman määrittäminen

Komennon docker compose up -d jälkeen avaa https://status.example.com. Ensimmäisellä käynnillä Uptime Kuma pyytää luomaan ylläpitäjän tilin. Tee se heti: niin kauan kuin tiliä ei ole, kuka tahansa sivun löytävä voi luoda sen. Jos et halua ottaa tätäkään riskiä, jätä status-lohko ensin pois Caddyfilestä, luo tili SSH-tunnelin kautta (oppitunti 2.3) ja palauta lohko sen jälkeen.

Lisää sen jälkeen valvontakohteet: HTTP-valvonta sivustollesi, TCP-valvonta portille, varmenteen vanhenemisvaroitus ja ilmoituskanava (sähköposti, pikaviestin tai push-palvelu). Ota myös kaksivaiheinen tunnistautuminen käyttöön Uptime Kuman asetuksista.

Käynnistys ja tarkistus

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

Vain Caddylla on portteja. Jos varmenteen hakeminen epäonnistuu, Caddyn lokeista näet syyn: yleensä DNS ei vielä osoita palvelimeen tai portti 80 ei ole tavoitettavissa (oppitunti 7.3).

Päivittäminen

unattended-upgrades ei päivitä kontteja (oppitunti 4.2). Tee päivittämisestä säännöllinen tapa, esimerkiksi joka toinen viikko:

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 hakee uusimmat imaget valitsemasi tagin sisällä (eli caddy:2 pysyy versiossa 2). Versionumerolla merkityn Vaultwardenin kohdalla muutat ensin tagin, kun olet lukenut julkaisutiedot. Lue uuden pääversion kohdalla aina julkaisutiedot: joskus asetuksiisi täytyy tehdä muutoksia. Varmuuskopioi volyymit ennen suurta päivitystä.

Seuraa myös tekijöiden tietoturvatiedotteita. Vaultwardenin tai Caddyn haavoittuvuus korjaantuu vain, jos haet itse uuden version.

Käytännössä

Tämä resepti toimii millä tahansa VPS:llä, jossa on Docker, niin WebOkéllä kuin muulla palveluntarjoajalla. Kyse on omatoimisesta ylläpidosta: VPS:n tarjoaja ei hallinnoi mitään konttiesi sisällä. Ota tilannevedos ennen ensimmäistä asennusta, niin voit kokeilla huoletta.

Yhteenveto

  • Yksi compose-tiedosto, jossa Caddy toimii käänteisen välityspalvelimen konttina. Vain Caddy julkaisee portit 80 ja 443, palvelut eivät mitään.
  • Caddy hoitaa varmenteet ja https:n automaattisesti ja voi asettaa omia otsakerivejä header-direktiivillä.
  • Vaultwarden: https pakollinen, DOMAIN https-osoitteeksi, rekisteröinti kiinni oman tilin luomisen jälkeen, ADMIN_TOKEN Argon2-tiivisteenä tiedostossa .env oikeuksin 600.
  • Uptime Kuma: luo ylläpitäjän tili heti ja ota kaksivaiheinen tunnistautuminen käyttöön. Valvo sillä ennen kaikkea muita palvelimia ja sivustoja.
  • Varmuuskopioi volyymit ja kansio vw-data, ja päivitä komennoilla docker compose pull ja up -d säännöllisesti.

Tietovisa (quiz)

1. Miksi Uptime Kuma ja Vaultwarden eivät tässä reseptissä itse julkaise portteja?



2. Miksi Vaultwardenin verkkoholvi ei toimi kunnolla pelkällä http:llä?



3. Olet luonut oman Vaultwarden-tilisi. Mikä on seuraava vaihe?



4. Laitat hallintatunnuksen Argon2-tiivisteen suoraan kohtaan environment: tiedostossa compose.yaml ja saat varoituksia tuntemattomista muuttujista. Miksi?



5. Miten päivität nämä palvelut?



Tehtävä

Tehtävä Z9.4: Todista, että konttisi on käynnissä. Hae tehtävästä henkilökohtainen koodisi ja lisää se Caddy-konttisi Caddyfileen otsakkeeksi X-Weboke-Cursus jollekin omalle aliverkkotunnuksellesi (esimerkiksi status.<jouwdomein>). Lataa Caddyn asetukset uudelleen ja syötä isäntänimi. Ohjelma hakee osoitteen https://<hostnaam>/ ja tarkistaa, että varmenne on voimassa ja että otsake sisältää täsmälleen sinun koodisi. Liitä lisäksi komennon docker compose ps tuloste ja vastaa, mikä palvelu ainoana julkaisee portteja.

Tehtävä Z9.4: Todista, että konttisi on käynnissä

Napsauta "Näytä koodini" ja lisää Caddyfileesi otsakerivi X-Weboke-Cursus, jonka arvona on tämä koodi, esimerkiksi: header { X-Weboke-Cursus "<code>" }. Ulkopuolelta ei näe, toimiiko jokin kontissa. Siksi liität myös komennon docker compose ps tulosteen (emme tallenna sitä).




Sitä, mitä kirjoitat ja mitä löydämme, ei tallenneta. Selaimesi muistaa vastauksesi ja sen, oletko suorittanut tehtävän. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että tehtävä oli (lähes) oikein; voit poistaa sen myös sieltä.

Lue lisää

Hetkinen…

Määritä verkkotunnuksesi

Määritä kullekin verkkotunnukselle nimipalvelimet, liitos webhotelliin ja se, kuka tulee omistajaksi.

Ladataan verkkotunnuksia…