Autocommit 2026-10-19 20:00
This commit is contained in:
parent
14e3561e5e
commit
8bae87ed63
|
|
@ -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 `<namn>.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/<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
|
||||
|
||||
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.
|
||||
Loading…
Reference in New Issue