83 lines
2.7 KiB
Markdown
83 lines
2.7 KiB
Markdown
---
|
||
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/`
|