Pāriet uz saturu

Sīkdatņu iestatījumi

Izvēlieties, kāda veida sīkdatnes atļaujat. Savu izvēli varat jebkurā laikā mainīt sadaļā Sīkdatņu iestatījumi katras lapas apakšā. Privātuma politika

Nepieciešamās

Vienmēr ieslēgtas

Vajadzīgas, lai pieteiktos, saglabātu grozu un atcerētos Jūsu izvēles. Tās vienmēr ir ieslēgtas.

Kuras sīkdatnes?
  • weboke_sessie, weboke_klant, weboke_remember: Jūsu sesija un pieteikšanās saglabāšana
  • weboke_basket: Jūsu grozs
  • wkBtwIncl: cenu rādīšana ar PVN vai bez PVN
  • wok_cookies: Jūsu sīkdatņu izvēle, 12 mēneši

Mēra, kura reklāma noved pie apmeklējuma vai pasūtījuma, lai mēs nemaksātu par reklāmām, kas neko nedod.

Kuras sīkdatnes?
  • Google Ads ar Google Tag Manager (_gcl_au, _gcl_aw), līdz 90 dienām
  • OpenAI Ads, reklāmas ChatGPT
  • wok_aff: caur kuru partneri nonācāt pie mums (partneru programma), 60 dienas

4,6

Valsts un valoda

Katrai valstij ir sava vietne ar attiecīgās valsts cenām un PVN.

Skatīt

Receptes: Uptime Kuma un Vaultwarden

9. modulis: Docker un docker compose · Lasīšanas laiks: 13 min.

Mācīšanās mērķis: Pēc šīs nodarbības Jūs varēsiet palaist Uptime Kuma un Vaultwarden ar docker compose aiz Caddy, ar https, slēgtu reģistrāciju, sējumu rezerves kopijām un noteiktu atjaunināšanas kārtību.

Pamatjēdzieni: reversā starpniekservera konteiners, Caddyfile, automātisks https, Uptime Kuma, Vaultwarden, DOMAIN, SIGNUPS_ALLOWED, ADMIN_TOKEN, Argon2, .env, websockets, sējumu rezerves kopēšana, docker compose pull, sava galvene

Ko mēs veidojam

Divi noderīgi pakalpojumi Jūsu serverī, katrs savā apakšdomēnā:

  • Uptime Kuma adresē status.example.com: uzraudzības programma ar tīmekļa saskarni, kas pārrauga Jūsu vietnes, portus un sertifikātus un nosūta Jums paziņojumu, ja kaut kas pārstāj darboties (nodarbība 8.3). Ievērībai: uzraudzība, kas darbojas tajā pašā serverī, ko tā uzrauga, nepamana, ka viss serveris ir izgājis no ierindas. Tāpēc izmantojiet to citām savām vietnēm un pakalpojumiem vai uzstādiet to otrā serverī.
  • Vaultwarden adresē kluis.example.com: viegla, neatkarīga servera versija, kas darbojas ar Bitwarden lietotnēm un pārlūka paplašinājumiem. Paroļu glabātuve ir jutīga programmatūra: uzstādiet to tikai tad, ja vēlaties to rūpīgi uzturēt un regulāri veidot rezerves kopijas. Pilnīgi pieņemami ir arī vienkārši izmantot kāda pakalpojumu sniedzēja paroļu pārvaldnieku.

Tiem priekšā mēs novietojam Caddy konteinerā: tas pieņem portus 80 un 443, pats kārto Let's Encrypt sertifikātus (nodarbība 7.3 un 7.4) un pārsūta datplūsmu uz pareizo konteineru. Uptime Kuma un Vaultwarden paši nepublicē nevienu portu (nodarbība 9.3).

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

Priekšnosacījumi

  1. Docker Engine ar compose spraudni (nodarbība 9.2).
  2. Divi DNS ieraksti, kas norāda uz Jūsu serveri, A un AAAA (nodarbība 7.1): status.example.com un kluis.example.com.
  3. Porti 80 un 443 serverī ir brīvi. Ja šajos portos jau darbojas sistēmas nginx vai Caddy, Caddy konteiners tos nevar izmantot. Tad izvēlieties: vai nu apturiet sistēmas tīmekļa serveri, vai ļaujiet tam veikt starpniekservera darbu un publicējiet konteinerus uz 127.0.0.1 (nodarbība 9.3). Šajā receptē to dara Caddy konteiners.
  4. Ugunsmūrī ufw atveriet 80/tcp, 443/tcp un HTTP/3 vajadzībām arī 443/udp (nodarbība 5.2). Stingri ņemot, Docker apiet ufw, taču šādi Jūsu ugunsmūra pārskats atbilst realitātei.

Faili

Viss atrodas vienā mapē, /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:

Pirms sākat, pārbaudiet, kura Vaultwarden versija ir jaunākā (laidieni GitHub), un ierakstiet to birkā. Portus publicē tikai Caddy, un tiem jābūt publiskiem. Sējumi caddy-data (sertifikāti), uptime-kuma un mape vw-data satur visu, kas Jums jāsaglabā.

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 abiem nosaukumiem automātiski iegūst sertifikātu un pāradresē http uz https. uptime-kuma un vaultwarden ir pakalpojumu nosaukumi no compose faila: Caddy tos atrod iekšējā tīklā. Bloks header pievieno papildu galvenes rindu katrai status.example.com atbildei; uzdevumā Jūs to izmantosiet kā pierādījumu, ka darbojas tieši Jūsu starpniekservera konteiners. Ar defer galvene tiek iestatīta pēc tam, kad aizmugurējais pakalpojums ir sniedzis savu atbildi. Ja vēlaties arī HSTS un citas drošības galvenes no nodarbības 7.4, ierakstiet tās tajā pašā blokā.

Vaultwarden droša iestatīšana

Četras lietas nosaka atšķirību starp drošu un bīstamu glabātuvi.

Pirmkārt: tikai caur https. Bitwarden tīmekļa glabātuve izmanto pārlūka kriptogrāfiju, un pārlūki to dara pieejamu tikai https lapās. Bez https tā nedarbojas pareizi, un tas ir labi. Vaultwarden dokumentācija iesaka https nodrošināšanai izmantot reverso starpniekserveri, kā šeit Caddy. Iestatiet DOMAIN uz pilno https adresi.

Otrkārt: slēgta reģistrācija. Ar SIGNUPS_ALLOWED: "true" ikviens, kas atrod lapu, var izveidot kontu Jūsu serverī. Tāpēc palaidiet pakalpojumu, nekavējoties izveidojiet savu kontu (kontus), iestatiet vērtību uz "false" un vēlreiz izpildiet docker compose up -d. Ja vēlāk vēlaties kādu pievienot, izmantojiet ielūgumu funkciju administrēšanas ekrānā.

Treškārt: jaukts administrēšanas marķieris. Administrēšanas ekrāns (/admin) ir aizsargāts ar ADMIN_TOKEN. Neierakstiet tur lasāmu paroli, bet gan Argon2 jaucējvērtību. To izveido ar pašu 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$...'

Ierakstiet šo rindu failā .env (tātad VW_ADMIN_TOKEN='$argon2id$...', ar vienpēdiņām) un padariet failu lasāmu tikai lietotājam root: sudo chmod 600 .env. Failā .env zīmes $ nav jādubulto; ja jaucējvērtību ierakstāt tieši zem environment: compose failā, tad gan (katra $ kļūst par $$), citādi Compose mēģina tās aizpildīt kā mainīgos. Adresē /admin Jūs piesakāties ar paroli, ko ievadījāt, nevis ar jaucējvērtību. Ievērībai: iestatījumi, ko saglabājat administrēšanas ekrānā, nonāk failā vw-data/config.json un tad ir noteicošie pār vides mainīgajiem.

Ceturtkārt: rezerves kopija un atjaunošana. Viss atrodas mapē vw-data: datubāze, pielikumi un atslēgas. Iekļaujiet šo mapi savā restic rezerves kopijā (nodarbība 8.2) un datubāzei ievērojiet rezerves kopēšanas norādījumus Vaultwarden wiki, lai nenokopētu pusrakstītu failu. Pārbaudiet atjaunošanu (uzdevums O8.2): glabātuve bez strādājošas rezerves kopijas ir risks visām Jūsu parolēm.

Paziņojumi starp ierīcēm (websockets) jaunākajās Vaultwarden versijās darbojas caur to pašu portu; Caddy tos pārsūta bez papildu iestatījumiem.

Uptime Kuma iestatīšana

Pēc docker compose up -d atveriet https://status.example.com. Pirmajā apmeklējumā Uptime Kuma lūdz izveidot administratora kontu. Dariet to nekavējoties: kamēr šī konta nav, ikviens, kas atrod lapu, var to izveidot. Ja nevēlaties šo risku vispār, sākumā izņemiet bloku status no Caddyfile, izveidojiet kontu caur SSH tuneli (nodarbība 2.3) un pēc tam bloku atjaunojiet.

Pēc tam pievienojiet monitorus: HTTP monitoru savai vietnei, TCP monitoru portam, sertifikāta brīdinājumu un paziņojumu kanālu (e-pasts, tērzēšanas programma vai push pakalpojums). Uptime Kuma iestatījumos ieslēdziet arī divpakāpju verifikāciju.

Palaišana un pārbaude

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

Portus izmanto tikai Caddy. Ja sertifikātu neizdodas iegūt, Caddy žurnālos ir norādīts iemesls: parasti DNS vēl nenorāda uz serveri vai ports 80 nav sasniedzams (nodarbība 7.3).

Atjaunināšana

Konteineru neatjaunina unattended-upgrades (nodarbība 4.2). Nosakiet tam regulāru laiku, piemēram, ik pēc divām nedēļām:

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 lejupielādē jaunākos attēlus Jūsu izvēlētās birkas robežās (tātad caddy:2 paliek versijā 2). Vaultwarden ar versijas numuru vispirms izlasiet laidiena piezīmes un tad nomainiet birku. Jaunas galvenās versijas gadījumā vienmēr izlasiet laidiena piezīmes: dažreiz Jūsu iestatījumos kaut kas jāmaina. Pirms liela atjauninājuma izveidojiet sējumu rezerves kopiju.

Sekojiet arī izstrādātāju drošības paziņojumiem. Ievainojamība Vaultwarden vai Caddy tiek novērsta tikai tad, kad Jūs lejupielādējat jauno versiju.

Praksē

Šī recepte darbojas jebkurā VPS ar Docker, gan WebOké, gan pie cita pakalpojumu sniedzēja. Tā ir pašpalīdzība: Jūsu VPS pakalpojumu sniedzējs nepārvalda neko Jūsu konteineros. Pirms pirmās uzstādīšanas izveidojiet momentuzņēmumu, tad varēsiet eksperimentēt mierīgu prātu.

Kopsavilkums

  • Viens compose fails ar Caddy kā reversā starpniekservera konteineru; portus 80 un 443 publicē tikai Caddy, pakalpojumi nepublicē neko.
  • Caddy automātiski kārto sertifikātus un https un ar header var iestatīt savas galvenes rindas.
  • Vaultwarden: https obligāts, DOMAIN uz https adresi, reģistrācija slēgta pēc sava konta izveides, ADMIN_TOKEN kā Argon2 jaucējvērtība failā .env ar tiesībām 600.
  • Uptime Kuma: nekavējoties izveidojiet administratora kontu un ieslēdziet divpakāpju verifikāciju; ar to galvenokārt uzraugiet citus serverus un vietnes.
  • Veidojiet rezerves kopijas sējumiem un mapei vw-data un atjauniniet ar docker compose pull un up -d noteiktā laikā.

Tests (quiz)

1. Kāpēc šajā receptē Uptime Kuma un Vaultwarden paši nepublicē portus?



2. Kāpēc Vaultwarden tīmekļa glabātuve nedarbojas pareizi caur parastu http?



3. Jūs esat izveidojuši savu Vaultwarden kontu. Kāds ir nākamais solis?



4. Jūs ierakstāt administrēšanas marķiera Argon2 jaucējvērtību tieši zem environment: failā compose.yaml un saņemat brīdinājumus par nezināmiem mainīgajiem. Kāpēc?



5. Kā atjaunināt šos pakalpojumus?



Uzdevums

Uzdevums Z9.4: Pierādiet, ka Jūsu konteiners darbojas. Uzdevumā saņemiet savu personīgo kodu un ierakstiet to sava Caddy konteinera Caddyfile kā galveni X-Weboke-Cursus kādam savam apakšdomēnam (piemēram, status.<jouwdomein>). Pārlādējiet Caddy un ievadiet resursdatora nosaukumu. Programma ielādē https://<hostnaam>/ un pārbauda, vai sertifikāts ir derīgs un vai galvene satur tieši Jūsu kodu. Turklāt ielīmējiet komandas docker compose ps izvadi un atbildiet, kurš pakalpojums vienīgais publicē portus.

Uzdevums Z9.4: Pierādiet, ka Jūsu konteiners darbojas

Noklikšķiniet uz "Rādīt manu kodu" un ievietojiet galvenes rindu X-Weboke-Cursus ar šo kodu savā Caddyfile, piemēram: header { X-Weboke-Cursus "<code>" }. No ārpuses nav redzams, vai kaut kas darbojas konteinerā, tāpēc ielīmējiet arī docker compose ps izvadi (mēs to neglabājam).




To, ko ievadāt, un to, ko atrodam, mēs nesaglabājam. Jūsu pārlūkprogramma atceras Jūsu atbildes un to, vai esat izpildījuši uzdevumu. Ja esat pieteikušies, sadaļā Mani kursi saglabājam tikai to, ka uzdevums bija (gandrīz) pareizs; tur to varat arī dzēst.

Vairāk lasīt

Lūdzu, uzgaidiet…

Iestatiet savus domēnus

Katram domēnam norādiet vārdu serverus, piesaisti hostingam un to, kurš būs turētājs.

Ielādē Jūsu domēnus…