Initialize clean CSR inventory repository
This commit is contained in:
58
docs/traefik.md
Normal file
58
docs/traefik.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Traefik-Betrieb
|
||||
|
||||
Traefik v3.7.13 ersetzt Caddy. Die Routerdefinition liegt unter
|
||||
`traefik/dynamic/routes.yml`; ein Docker-Socket ist nicht erforderlich.
|
||||
Nur HTTP/HTTPS werden veröffentlicht, das Dashboard ist deaktiviert.
|
||||
WhiteNoise liefert statische Dateien aus, Uploads bleiben geschützt.
|
||||
|
||||
## Öffentliche Domain
|
||||
|
||||
In `.env` `APP_HOST` ohne Protokoll oder Port und `ACME_EMAIL` setzen.
|
||||
DNS muss auf den Server zeigen; TCP 80 und 443 müssen erreichbar sein.
|
||||
`docker compose up -d --build --wait` aktiviert HTTPS über Let's Encrypt.
|
||||
ACME-Zustand liegt im Volume `traefik_acme` und muss gesichert werden.
|
||||
|
||||
## Privates LAN
|
||||
|
||||
Auf Linux mit Python 3 und OpenSSL, im Projektverzeichnis als Administrator:
|
||||
|
||||
```sh
|
||||
# APP_HOST in .env auf die LAN-IP setzen.
|
||||
cp docker-compose.lan.yml docker-compose.override.yml
|
||||
python3 scripts/renew_local_tls.py --hostname 192.168.188.45
|
||||
docker compose up -d --build --wait
|
||||
install -m 644 deploy/csr-inventory-tls.service deploy/csr-inventory-tls.timer /etc/systemd/system/
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now csr-inventory-tls.timer
|
||||
systemctl start csr-inventory-tls.service
|
||||
```
|
||||
|
||||
Die mitgelieferten Units setzen `/home/denis/csr-inventory` voraus; bei anderen
|
||||
Installationspfaden beide Pfade im Dienst anpassen. Der LAN-Override deaktiviert
|
||||
ACME und ergänzt Port 8001 als HTTPS-Weiterleitung.
|
||||
|
||||
Ohne vorhandene CA erzeugt das Skript eine neue. Zur Übernahme einer bestehenden
|
||||
CA vor dem ersten Lauf deren `root.crt` und `root.key` nach `tls/ca/` kopieren.
|
||||
Der CA-Schlüssel bleibt auf dem Host und darf nicht verteilt werden. Nur das
|
||||
öffentliche Stammzertifikat wird in den Vertrauensspeicher der Clients importiert.
|
||||
Auf dem Server 192.168.188.45 wird die bisherige Stamm-CA weiterverwendet.
|
||||
|
||||
Der Timer prüft täglich um 01:30 Europe/Berlin. Zertifikate gelten 90 Tage und
|
||||
werden bei höchstens 30 Tagen Restlaufzeit erneuert. Ein Standardzertifikat
|
||||
ermöglicht auch den IP-Zugriff ohne SNI. Die Dateikonfiguration wird atomar
|
||||
ersetzt; Traefik lädt sie ohne Neustart. Frühere Zertifikate bleiben erhalten.
|
||||
|
||||
```sh
|
||||
systemctl list-timers csr-inventory-tls.timer
|
||||
journalctl -u csr-inventory-tls.service --no-pager
|
||||
docker compose logs --tail 100 traefik
|
||||
# Erneuerung bei Bedarf erzwingen:
|
||||
python3 scripts/renew_local_tls.py --hostname 192.168.188.45 --force
|
||||
```
|
||||
|
||||
`tls/`, `.env`, Uploads und Datenbank separat geschützt sichern. Der tägliche
|
||||
Datenbankjob umfasst keine TLS-Schlüssel. `tls/` und die erzeugte `tls.yml`
|
||||
sind vom Git-Repository und Docker-Build ausgeschlossen.
|
||||
|
||||
Referenzen: [File-Provider](https://doc.traefik.io/traefik/providers/file/),
|
||||
[TLS-Dateikonfiguration](https://doc.traefik.io/traefik/reference/routing-configuration/other-providers/file/).
|
||||
Reference in New Issue
Block a user