Files
Pangolin/docker-compose.yml
Lutz Finsterle 0973e95c01 Pangolin 1.21.1 -> 1.25.3, Gerbil 1.4.3 -> 1.5.2, Traefik v3.7.8 -> v3.7.16
Vier Minor-Versionen auf einmal; die Migration laeuft beim Start sequenziell
durch. Belegt an der Datenbank: 125 -> 141 Tabellen, und zwar genau die
Features aus den Release Notes - AI-Gateway (1.22), danach redirects,
resourceMtlsCertificates und clientOrgRoles (1.25).

Badger absichtlich auf v1.7.0 und NICHT auf v1.8.0: fosrl warnt in den Notes
zu 1.25.x, dass v1.8.0 Traefiks Plugin-Integritaetspruefung nicht besteht und
das Plugin dadurch abgeschaltet wird (gleiche Ursache wie traefik#13771). Die
Migration haette den Wert selbst angehoben, wenn er zu niedrig gewesen waere -
deshalb vorher von v1.5.0 auf v1.7.0 gesetzt. Sie hat die Datei auch wirklich
angefasst (daher die geaenderten Anfuehrungszeichen bei den Entrypoints, rein
kosmetisch), den Wert aber stehen lassen.

Traefik musste ohnehin mit: ab 1.25 verlangt Pangolin mindestens 3.6.

Vorher die komplette config kalt gesichert (1,4 MB, mit db.sqlite, acme.json,
key und config.yml unter /home/lutz/backups).

Danach geprueft: alle sechs oeffentlichen Namen antworten wie vorher, das
Let's-Encrypt-Zertifikat ist unveraendert (bis 18.12.), 5 Resourcen und
4 Sites stehen wie zuvor in der DB, Gerbil legt wg0 an.

Eine Beobachtung, die wie ein Rueckschritt aussieht, aber keiner ist: die
Resourcen liefern auf ein nacktes curl jetzt 401 statt 302. Mit einem
Browser-Accept-Header kommt weiterhin die 302 auf die Auth-Seite - Badger
unterscheidet seit v1.7 zwischen API- und Browser-Anfragen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-24 09:59:48 +02:00

55 lines
1.6 KiB
YAML

services:
pangolin:
image: docker.io/fosrl/pangolin:1.25.3
container_name: pangolin
restart: unless-stopped
volumes:
- ./config:/app/config
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3001/api/v1/"]
interval: "10s"
timeout: "10s"
retries: 15
gerbil:
image: docker.io/fosrl/gerbil:1.5.2
container_name: gerbil
restart: unless-stopped
depends_on:
pangolin:
condition: service_healthy
command:
- --reachableAt=http://gerbil:3004
- --generateAndSaveKeyTo=/var/config/key
- --remoteConfig=http://pangolin:3001/api/v1/
volumes:
- ./config/:/var/config
cap_add:
- NET_ADMIN
- SYS_MODULE
ports:
- "${WG_PORT:-51820}:51820/udp" # WireGuard site tunnels (Newt → Gerbil)
- "${WG_CLIENT_PORT:-21820}:21820/udp" # WireGuard client tunnels
- "${HTTPS_PORT:-8443}:443" # HTTPS (Traefik, via gerbil network)
- "8800:80" # HTTP — Let's Encrypt / redirect (router forwards 80→8800)
traefik:
image: docker.io/traefik:v3.7.16
container_name: traefik
restart: unless-stopped
network_mode: service:gerbil # shares gerbil's network namespace
depends_on:
pangolin:
condition: service_healthy
command:
- --configFile=/etc/traefik/traefik_config.yml
volumes:
- ./config/traefik:/etc/traefik:ro
- ./config/letsencrypt:/letsencrypt
- ./config/traefik/logs:/var/log/traefik
networks:
default:
driver: bridge
name: pangolin