1. Home
  2. Cloud
  3. Sådan installeres Portainer med automatisk TLS via Caddy i Oderland Cloud

Sådan installeres Portainer med automatisk TLS via Caddy i Oderland Cloud

Denne vejledning er baseret på et Debian 12-image med flavour a1-c2-m4 (2 kerner, 4 GB ram) og en 50 GB boot-disk.

Vi har valgt Caddy som en proxy med automatisk TLS-understøttelse, men der er andre muligheder, f.eks. traefik og nginx.

Hvad er Portainer, og hvorfor skal jeg installere det?

Portainer er et webinterface til administration af containere. Det kan være praktisk at få et overblik, når du har flere containere og hurtigt kan se logfiler, udføre kommandoer eller gemme dine egne skabeloner for at oprette flere af samme type.

Er Portainer gratis?

Portainer er tilgængelig som en gratis community-udgave med god funktionalitet. Hvis du har brug for flere funktioner eller vil sponsorere projektet, kan du skifte til betalingsversionen.
Se Portainers hjemmeside for mere information.

Hvor kan jeg finde mere dokumentation om Portainer?

https://docs.portainer.io/

Udførelse

Vi opretter en server i Oderland Cloud ved hjælp af Docker og peger et værtsnavn (f.eks. domæne eller subdomæne) på serverens nye IP-adresse.

Derefter ssh’er vi ind på serveren og skifter til root som bruger. Derefter opretter vi et dummy-netværk, som vi kalder caddy. Det bruges til de containere, du ønsker at få automatisk TLS (https://). I dette tilfælde bruger vi det direkte til Portainer-webgrænsefladen.

Vi opretter en mappestruktur samt en docker-compose.yml-fil, der fortæller os, hvilke tjenester der skal køres, og hvordan de skal konfigureres, ved at angive det samme værtsnavn, som vi pegede på serveren.

Så starter vi vores nye docker compose stack og surfer til Portainer login-siden og opretter en bruger og kan kort tid efter se, administrere og oprette nye containere, stakke eller forbinde flere Docker-servere til administration.

Forberedelser

Opret først en server i Oderland Cloud med Docker, se en af vejledningerne nedenfor, hvis du har brug for hjælp.

https://www.oderland.se/support/artikel/sa-installerar-du-en-ny-server-med-docker-engine-i-oderland-cloud/

https://www.oderland.se/support/artikel/sa-installerar-du-docker-engine-i-oderland-cloud/

Punktets værtsnavn (domæne eller underdomæne)

Peg et passende værtsnavn på serverens ipv4-adresse.

Skift til root-brugeren

SSH ind på serveren.

Vi vil køre alle kommandoer som root. Så skift til root som bruger, hvis du ikke allerede er det.

sudo su -

Opret Docker-netværk og en docker compose-fil

Opret derefter et docker-netværk, som vi bruger til de containere, vi vil proxy’e via Caddy, og administrer automatisk Let’s Encrypt/Zero SSL for at få sikker forbindelse.

docker network create caddy
mkdir -p /root/compose/portainer
cat  /root/compose/portainer/docker-compose.yml
version: "3.7"

tjenester:
  Caddy:
  image: lucaslorentz/caddy-docker-proxy:ci-alpine
  havne:
  - 80:80
  - 443:443
  miljø:
  - CADDY_INGRESS_NETWORKS=caddy
  netværk:
  - Caddy
  mængder:
  - /var/run/docker.sock:/var/run/docker.sock
  - caddy_data:/data
  genstart: medmindre-stoppet
  portainer:
  image: portainer/portainer-ce:latest
  kommando: -H unix:///var/run/docker.sock
  genstart: medmindre-stoppet
  havne:
  - 8000:8000
  mængder:
  - /var/run/docker.sock:/var/run/docker.sock
  - portainer_data:/data
  netværk:
  - Caddy
  etiketter:
  caddy: HOSTNAME
  caddy.reverse_proxy: "{{upstreams 9000}}"
mængder:
  portainer_data: {}
  certifikater: {}
  acme: {}
  vhost: {}
  html: {}
  caddy_data: {}

netværk:
  Caddy:
  ekstern: sand
EDF

Indtast dit værtsnavn

Hvis du har angivet et værtsnavn, som du vil bruge til serveren eller til portaineren, kan du nu redigere kodestykket ovenfor og ændre HOSTNAME til dit valgte værtsnavn. Du kan også gøre det bagefter med sed-kommandoen vist nedenfor.

Til demoformål oprettede vi containers-srv01.demo.oderland.cloud, så vi kan gå til https://containers-srv01.demo.oderland.cloud for at nå portaineren. Eksemplet ser derefter ud som følger med sed-kommandoen.

sed -i 's/HOSTNAME/containers-srv01.demo.oderland.cloud/g' /root/compose/portainer/docker-compose.yml

Opstart af Portainer og Caddy

Start derefter vores nye docker compose stack.

cd /root/compose/portainer/
docker compose up -d

Derefter downloades alle billeder/layers, og du bør få et lignende output:

root@containers-srv01:~/compose/portainer# docker compose up -d
[+] Kører 16/16
  ✔ portainer 11 lag [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Trukket 5,5s  
  ✔ 7bd7f95ed7eb Pull gennemført 0.6s  
  ✔ 9d019f0c1f3a Pull gennemført 0.9s  
  ✔ 5171176db7f2 Træk fuldført 1.0s  
  ✔ 52e9438966a5 Træk fuldført 1,5s  
  ✔ 43d4775415ac Træk fuldført 1.6s  
  ✔ c1cad9f5200f Træk fuldført 1,6s  
  ✔ 4de43b91ce75 Pull gennemført 1.9s  
  ✔ d7c8d69c556b Pull færdig 2.3s  
  ✔ 173ea6e5087e Træk fuldført 2,1s  
  ✔ 90767cd90d02 Træk fuldført 2,3s  
  ✔ 4f4fb700ef54 Træk færdig 2,5s  
  ✔ caddy 3 lag [⣿⣿⣿] 0B/0B Trukket 3,8s  
  ✔ c158987b0551 Træk afsluttet 0,5s  
  ✔ fe528bf0229e Træk fuldført 1.0s  
  ✔ 8e4f673e7c70 Træk fuldført 1.3s  
[Kører 4/4
  ✔ Volume "portainer_portainer_data" Oprettet 0.0s  
  ✔ Volume "portainer_caddy_data" Oprettet 0.0s  
  ✔ Container portainer-caddy-1 Startet 0.1s  
  ✔ Container portainer-portainer-1 Startet  

Opret brugere

Gå nu til det værtsnavn, du valgte, men sørg for, at du har peget værtsnavnet til din IP-adresse før.

I vores demo går vi ind på https://containers-srv01.demo.oderland.cloud og bliver mødt af billedet nedenfor.


Hvis alt er gået godt, har du nu en Portainer til at installere og administrere dine containere på serveren og beskyttet med automatisk https via Caddy-webserveren.

Derefter skal du genstarte portaineren, før du kan logge ind.

cd /root/compose/portainer/
docker compose genstart portainer

Ofte stillede spørgsmål

Skift værtsnavn

Hvis du redigerer filen docker-compose.yml bagefter og skifter til et andet værtsnavn, skal du genstarte stakken og gennemtvinge nye konfigurationer via:

cd /root/compose/portainer/
docker compose up --force-recreate -d

Hvis noget går galt, kan du også tjekke logfilerne for hele stakken:

docker compose logs

Automatisk TLS til flere containere på serveren?

Det har vi forberedt os på ved at skabe Caddy-netværket. Du skal tilføje caddy-netværket og via labels styre, hvilket domæne eller sti osv. der skal proxy, og hvilken port det skal gå til.

Du kan nu via f.eks. docker compose tilføjer følgende til en tjeneste for at få TLS.

  netværk:
  - Caddy
  etiketter:
  caddy: new-container.app.my.domain
  caddy.reverse_proxy: "{{upstreams 80}}"

netværk:
  Caddy:
  ekstern: sand

Sørg dog for ikke at fjerne andre netværk, der kan inkluderes, men tilføj kun caddy-netværket og kun den tjeneste, der skal frontes med https.

Sådan styrer du Caddy Proxy

Læs mere om Caddy-proxyen, og hvordan du kan styre den via f.eks. stier, eller hvordan man tilføjer flere domæner til den samme tjeneste.

Was this article helpful?

Related Articles