
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?
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-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.