feat(restore): traefik restore smoke test

Borg-Extract von dynamic/ und letsencrypt/, Traefik startet mit
File-Provider gegen restaurierte Config, /ping Health antwortet.

Bewusst kein docker.sock (wuerde produktive Container discovern),
kein CF-Token (keine DNS-Challenge), keine produktiven Ports.
acme.json-Existenz und -Groesse wird geprueft, TLS-Validitaet nicht.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-03 14:42:56 +02:00
parent 16d3b8f2fa
commit dd494046ce
3 changed files with 188 additions and 0 deletions
@@ -0,0 +1,29 @@
services:
restoretest-traefik:
image: traefik:v3.7@sha256:6b9cbca6fac42ab0075f5437d8dc1685cfd188626d8d515839ea94f8b6271c42
container_name: restoretest-traefik
restart: "no"
command:
# Minimale Config fuer den Smoke: kein Docker-Provider (kein docker.sock),
# kein ACME (kein CF-Token), kein TLS-Entrypoint. Nur:
# - File-Provider mit restauriertem dynamic/-Verzeichnis
# - HTTP-Entrypoint auf Test-Port
# - Ping-Endpoint fuer Health-Check
- --ping=true
- --ping.entrypoint=web
- --providers.file.directory=/dynamic
- --providers.file.watch=false
- --entrypoints.web.address=:80
- --api.dashboard=false
- --log.level=INFO
ports:
- "127.0.0.1:18880:80"
volumes:
# Restauriertes dynamic/-Verzeichnis aus Borg (read-only)
- /mnt/user/backups/restore-lab/traefik/dynamic:/dynamic:ro
# Restauriertes letsencrypt/ fuer Existenz-Nachweis (read-only)
- /mnt/user/backups/restore-lab/traefik/letsencrypt:/letsencrypt:ro
# KEIN docker.sock — Test-Traefik darf keine produktiven Container discovern
# KEIN CF-Token — keine DNS-Challenge im Smoke
security_opt:
- no-new-privileges:true