notes/10-Projekt/Traefik.md

83 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Traefik
created: 2026-10-20
status: aktiv
tags:
- projekt
---
# Traefik
> [!abstract] Översikt
> Traefik v3 är reverse proxy för allt på `zeuz`. Den tar emot trafik från Cloudflare, ordnar certifikat och skickar vidare till Docker-containrar eller andra maskiner i nätet. Se även [[Docker-stack]].
## Layout
```
Cloudflare → :443 (web-secure) → router (Host-regel) → middlewares → service
```
| Fil | Innehåll | Ändring kräver |
| --- | --- | --- |
| `~/repo/Docker/traefik.yml` | Statisk konfig: entrypoints, cert-resolvers, providers, loggning | Omstart av Traefik |
| `~/repo/Docker/traefik/` | Dynamisk konfig: middlewares, kedjor, TLS, fil-routes | Inget, läses in live |
| Docker-labels i compose | Routes för containrar | `docker compose up -d <tjänst>` |
| `/opt/docker_data/traefik/log/` | `info.log` och `access.log` | – |
**Två sätt att skapa en route:**
- **Docker-container** → labels på tjänsten (se [[Docker-stack#Lägga till en ny tjänst]]).
- **Något som inte är en container** (annan maskin, Bitwarden) → router + service i `traefik/static_config.yml`.
**Certifikat:**
- `milvert_dns` – Let's Encrypt via Cloudflare-DNS. Används för `*.milvert.com`. Tar ett par minuter för ett nytt namn.
- `peek` – HTTP-utmaning, för peekskog.se.
**Entrypoints:** `web` (80) och `web-secure` (443) för webben. Övriga (8086, 8883 m.fl.) är för InfluxDB och MQTT.
## Middlewares
Använd en färdig kedja (`traefik/middleware-chains.yml`) i stället för enskilda middlewares:
| Kedja | När |
| --- | --- |
| `chain-authelia` | Admin-gränssnitt utan egen bra inloggning |
| `chain-no-auth` | Tjänster med egen inloggning |
| `chain-local` | Bara från hemnätet |
| ingen | När kedjorna bryter något, t.ex. CORS eller rate limit (CouchDB) |
Nya middlewares läggs i `traefik/middleware.yml` och kombineras till kedjor i `middleware-chains.yml`.
## Lägga till en route till en annan maskin
I `traefik/static_config.yml`, under `http:`:
```yaml
routers:
minsak-router:
rule: "Host(`minsak.milvert.com`)"
service: minsak-service
middlewares:
- chain-authelia
entryPoints:
- web-secure
tls:
certResolver: milvert_dns
services:
minsak-service:
loadBalancer:
servers:
- url: "http://10.0.0.x:8080"
```
Sparar du filen läser Traefik in ändringen direkt. Ingen omstart behövs.
## Felsökning
- **Logg:** `docker exec traefik tail -f /log/info.log`
- **Cloudflare 525:** Traefik har inget certifikat för namnet än. Vänta några minuter.
- **`unrecognized name` vid test lokalt:** samma sak. `sniStrict` gör att Traefik vägrar namn som saknar certifikat.
- **Testa förbi Cloudflare:** `curl --resolve minsak.milvert.com:443:127.0.0.1 https://minsak.milvert.com/`