fix: redirect plain-http desfoto.de to HTTPS with an own router

The running Traefik instance has no global entrypoint http->https
redirection even though /srv/stack/docker-compose.yml declares one, so
plain http://desfoto.de/ answered with Traefik's default 404 once the old
desfoto-redirect-http router was removed. Route desfoto.de through its own
http router (desfoto-http + desfoto-http-to-https, permanent redirect) via
the proven live Docker provider instead of restarting the shared proxy.
Document the live-config drift in docs/deployment.md.
This commit is contained in:
opencode
2026-09-19 16:04:32 +02:00
parent f69a00c773
commit 2ccb39a69b
2 changed files with 43 additions and 6 deletions

View File

@@ -70,9 +70,35 @@ Regel-Länge). Der Container wird also zuerst gesund geprüft, und erst danach w
die alten Labels entfernt — der Übergang hat damit kein Fenster ohne Antwort.
`www.desfoto.de` wird über die Middleware `desfoto-canonical` dauerhaft auf
`https://desfoto.de/...` umgeschrieben. Für `http` greift die globale
Entrypoint-Weiterleitung von Traefik auf `https`; die ACME-HTTP-01-Challenge
beantwortet Traefik selbst, bevor diese Weiterleitung greift.
`https://desfoto.de/...` umgeschrieben. Für `http` bringt die Anwendung einen
eigenen Router (`desfoto-http` + `desfoto-http-to-https`) mit, der dauerhaft
(301) auf `https` umleitet. Die ACME-HTTP-01-Challenge beantwortet Traefik über
den internen `acme-http`-Router mit maximaler Priorität, bevor dieser Redirect
greift.
### Abweichung der laufenden Traefik-Konfiguration (Live-Drift)
`/srv/stack/docker-compose.yml` deklariert eine globale
Entrypoint-Weiterleitung `http → https`
(`--entrypoints.http.http.redirections.entryPoint.to=https` /
`…scheme=https`, Zeilen 10–11). Der **laufende** Container `traefik` führt diese
Flags nachweislich nicht (`docker inspect traefik --format '{{json .Args}}'`
enthält keine `redirections`-Flags; `http://dennyapp.de/` leitet nur deshalb um,
weil `landing` einen eigenen `landing-http`-Router besitzt). Die Datei auf der
Platte und die laufende Konfiguration stimmen also nicht überein.
Der Proxy wird deswegen **nicht** aus der Datei neu erzeugt oder neu gestartet:
Das würde alle fremden Routen risikobehaftet anfassen. Stattdessen bringt jede
Anwendung ihr eigenes HTTP-Routing mit — `desfoto.de` über die Labels in
`compose.vps.yml`. Wird die globale Weiterleitung später bewusst aktiviert,
bleibt der eigene Router schlicht wirkungslos.
Nachzuprüfen mit:
```bash
curl -sS -o /dev/null -w '%{http_code} %{redirect_url}\n' http://desfoto.de/
# erwartet: 301 https://desfoto.de/
```
## Rollback