3.2 KiB
| title | created | status | tags | |
|---|---|---|---|---|
| Docker-stack | 2026-10-19 | aktiv |
|
Docker-stack
[!abstract] Översikt Hemmaservern
zeuz. Allt definieras i repot~/repo/Dockeroch körs meddocker compose. Traefik tar emot all webbtrafik bakom Cloudflare och routar<namn>.milvert.comtill rätt container.
Layout
Internet → Cloudflare → Traefik (80/443) → container på nätverket backend
| Var | Vad |
|---|---|
~/repo/Docker/docker-compose.yml |
Huvudfilen, nästan alla tjänster |
~/repo/Docker/.env |
Variabler: DOMAIN, DIR_LOCAL, SECRETSDIR, UID/GID, TZ |
~/repo/Docker/secrets/ |
Lösenord som filer, en per hemlighet (ej i git) |
~/repo/Docker/<tjänst>/ |
Konfigfiler som ska versionshanteras |
/opt/docker_data/<tjänst>/ |
Data (${DIR_LOCAL}), ej i git |
~/repo/Docker/traefik/ |
Middlewares och TLS-inställningar |
Middleware-kedjor – väljs per tjänst:
chain-authelia– kräver inloggning via Authelia. Standard för admin-gränssnitt.chain-no-auth– ingen inloggning, men rate limit och säkerhetsheaders. För tjänster med egen inloggning.chain-local– bara åtkomst från lokalt nät.- Ingen kedja – bara när kedjorna bryter något (t.ex. CouchDB, där headers och rate limit stör synken).
Nätverk: allt som Traefik ska nå ligger på backend.
Lägga till en ny tjänst
-
Lägg till tjänsten sist bland
services:idocker-compose.yml:minapp: image: org/minapp:1.2 # lås version, undvik latest container_name: minapp restart: unless-stopped networks: - backend environment: - TZ=${TZ} volumes: - ${DIR_LOCAL}/minapp:/data labels: - diun.enable=true # notis om nya versioner - "traefik.enable=true" - "traefik.http.services.minapp-service.loadbalancer.server.port=8080" - "traefik.http.routers.minapp-secure.entrypoints=web-secure" - "traefik.http.routers.minapp-secure.rule=Host(`minapp.${DOMAIN}`)" - "traefik.http.routers.minapp-secure.tls.certresolver=milvert_dns" - "traefik.http.routers.minapp-secure.tls=true" - "traefik.http.routers.minapp-secure.middlewares=chain-authelia@file" -
Lösenord: lägg dem i
secrets/minapp_password(chmod 600), lägg till undersecrets:överst i compose-filen och läs dem i containern från/run/secrets/minapp_password. Klarar imagen inte_FILE-variabler, använd ett litet entrypoint-skript som läser filen. -
Portar: publicera inga
ports:om tjänsten bara ska nås via Traefik. -
Starta bara den nya tjänsten:
docker compose up -d minapp -
Vänta på certifikatet. DNS-utmaningen tar ett par minuter. Fram till dess ger Cloudflare fel 525.
-
Committa compose-filen och eventuella konfigfiler i
~/repo/Docker.
[!tip] Felsökning
- Traefik loggar till fil:
docker exec traefik tail /log/info.log- Testa förbi Cloudflare:
curl --resolve minapp.milvert.com:443:127.0.0.1 https://minapp.milvert.com/
Utanför huvudfilen
Några tjänster körs separat: Dockge-stackar i stacks/, Bitwarden, evcc och zigbee2mqtt.