From 8bae87ed63fa788d1a0c3063f72526c7ff9ede52 Mon Sep 17 00:00:00 2001 From: Simon Milvert Date: Mon, 19 Oct 2026 20:00:01 +0200 Subject: [PATCH] Autocommit 2026-10-19 20:00 --- 10-Projekt/Docker-stack.md | 81 ++++++++++++++++++++++++++++++++++++++ cloude.md | 0 2 files changed, 81 insertions(+) create mode 100644 10-Projekt/Docker-stack.md create mode 100644 cloude.md diff --git a/10-Projekt/Docker-stack.md b/10-Projekt/Docker-stack.md new file mode 100644 index 0000000..46d0b5d --- /dev/null +++ b/10-Projekt/Docker-stack.md @@ -0,0 +1,81 @@ +--- +title: Docker-stack +created: 2026-10-19 +status: aktiv +tags: + - projekt +--- + +# Docker-stack + +> [!abstract] Översikt +> Hemmaservern `zeuz`. Allt definieras i repot `~/repo/Docker` och körs med `docker compose`. Traefik tar emot all webbtrafik bakom Cloudflare och routar `.milvert.com` till 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//` | Konfigfiler som ska versionshanteras | +| `/opt/docker_data//` | 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 + +1. **Lägg till tjänsten** sist bland `services:` i `docker-compose.yml`: + + ```yaml + 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" + ``` + +2. **Lösenord:** lägg dem i `secrets/minapp_password` (`chmod 600`), lägg till under `secrets:` ö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. +3. **Portar:** publicera inga `ports:` om tjänsten bara ska nås via Traefik. +4. **Starta bara den nya tjänsten:** + + ```sh + docker compose up -d minapp + ``` + +5. **Vänta på certifikatet.** DNS-utmaningen tar ett par minuter. Fram till dess ger Cloudflare fel 525. +6. **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. diff --git a/cloude.md b/cloude.md new file mode 100644 index 0000000..e69de29