Caddy: Zertifikat wird automatisch im Container erzeugt statt manuell per openssl auf dem Host

Entrypoint im caddy-Service prueft beim Start ob /certs/dashboard.{crt,key}
schon existiert und erzeugt es sonst selbst (apk add openssl + req -x509,
100 Jahre). Persistent im Volume, kein manueller Schritt mehr noetig.
Manuelle Erzeugung bleibt als Fallback in der README dokumentiert (z.B.
fuer eigenes /CN).
This commit is contained in:
ARIA
2026-07-19 22:11:49 +00:00
parent 66bcd0dfb1
commit 68ca43e5ac
3 changed files with 41 additions and 10 deletions
+14 -5
View File
@@ -156,9 +156,20 @@ aussen — kein anderer Rechner kommt mehr direkt ran.
5. **TLS-Reverse-Proxy (Caddy) einrichten — macht Port 443 von aussen
erreichbar, Dashboard bleibt intern auf `127.0.0.1`:**
a. Selbstsigniertes Zertifikat erzeugen, 100 Jahre gueltig (bewusst kein
Let's Encrypt — kein Domain-/Port-80-Zwang, kein Renewal je wieder
noetig). Einmalig auf der Maschine:
a. Selbstsigniertes Zertifikat, 100 Jahre gueltig (bewusst kein Let's
Encrypt — kein Domain-/Port-80-Zwang, kein Renewal je wieder noetig).
**Erzeugt sich automatisch** — kein manueller Schritt mehr noetig: der
`caddy`-Container prueft beim Start, ob in `hermes-data/caddy-certs/`
schon ein Zertifikat liegt, und wenn nicht, installiert er sich kurz
`openssl` (per `apk`) und erzeugt es selbst (siehe `command:`-Block im
`caddy`-Service in `docker-compose.yml`). Einmalig generiert, danach
persistent im Volume — ueberlebt `docker compose up`/Neustarts, wird
nicht bei jedem Start neu gebaut.
Falls Du's doch manuell/mit eigenem `/CN` (z.B. Server-IP) erzeugen
willst, geht das weiterhin von Hand — dann einfach VOR dem ersten
Hochziehen selbst nach `hermes-data/caddy-certs/dashboard.{crt,key}`
legen, der Auto-Generate-Check ueberspringt die Erzeugung dann:
```bash
mkdir -p hermes-data/caddy-certs
openssl req -x509 -nodes -newkey rsa:4096 \
@@ -167,8 +178,6 @@ aussen — kein anderer Rechner kommt mehr direkt ran.
-days 36500 \
-subj "/CN=hermes-dashboard"
```
`-days 36500` ≈ 100 Jahre. `/CN` ist egal (kein Public-DNS-Zwang), kann
auch die Server-IP sein wenn Du magst.
b. Caddy-Basic-Auth-Hash erzeugen (EIGENER Hash, nicht derselbe wie bei
Schritt 4 — Caddy will bcrypt, Hermes' Hash ist pbkdf2):