Files
sshkeyvault/.env.example
T
florian.wildeandClaude Opus 5.5 8f5b31c0cb feat(benachrichtigung): E-Mail und Webhook bei Drift und Ablauf (#028)
Drift, ablaufende und abgelaufene Schluessel, unerreichbare Hosts und
geaenderte Host-Keys sollen auffallen, ohne dass jemand taeglich in die
Oberflaeche schaut. Versand per SMTP (Microsoft 365, STARTTLS) und per
Webhook mit HMAC-Signatur, eingestellt unter /einstellungen.

Die Anlaesse liest der Worker aus der Datenbank, statt sie im Abgleich
auszuloesen: der Abgleich-Ablauf bleibt unberuehrt, und ein verpasster
Lauf holt sich der naechste. Ein Versandprotokoll (Zustellung) mit
Anlass-Fingerabdruck verhindert Doppelmeldungen und haelt Fehlschlaege
fuer begrenzte Wiederholungen fest. Taeglich eine Zusammenfassung,
geaenderte Host-Keys im Fuenf-Minuten-Takt sofort.

Versand und Testnachricht laufen im Worker, damit der Webprozess keinen
Weg zu Mailserver oder Webhook-Ziel braucht. Passwort und Geheimnis
liegen nur verschluesselt in der Datenbank; die Seite zeigt "gesetzt".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 16:54:43 +02:00

82 lines
4.0 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SSHKeyVault – Konfiguration. Kopieren nach .env und Werte eintragen.
# Alle eigenen Variablen tragen das Praefix SSHKV_ (Ausnahme: DATABASE_URL fuer Prisma).
# --- Datenbank -----------------------------------------------------------------
# Betrieb (docker-compose.yml): Passwort der Datenbank; DATABASE_URL setzt Compose selbst.
POSTGRES_PASSWORD=
# Entwicklung:
DATABASE_URL=postgresql://sshkv:sshkv@localhost:5436/sshkv?schema=public
# Nur fuer Tests (wird von Vitest geleert!)
TEST_DATABASE_URL=postgresql://sshkv:sshkv@localhost:5436/sshkv_test?schema=public
# --- Web -----------------------------------------------------------------------
# Oeffentliche Adresse (hinter dem Reverse Proxy). Bestimmt Secure-Cookie und OIDC-Rueckruf.
SSHKV_APP_URL=http://localhost:3400
# Signiert Sitzungen. Erzeugen mit: openssl rand -base64 48
SSHKV_APP_SECRET=
# --- Betrieb -------------------------------------------------------------------
# Adresse/Port, an die die Weboberflaeche gebunden wird (Reverse Proxy davor).
SSHKV_BIND=127.0.0.1
SSHKV_PORT=3400
# --- Master-Key (nur Worker!) --------------------------------------------------
# Datei mit 32 zufaelligen Bytes. Erzeugen mit: head -c 32 /dev/urandom > master.key
# Ohne diese Datei ist jedes Datenbank-Backup wertlos – getrennt sichern!
SSHKV_MASTER_KEY_FILE=./geheim/master.key
# Betrieb: Datei auf dem Docker-Host, die als Secret nur in den Worker kommt.
# Rechte: chown 1001:1001, chmod 400 (der Worker verweigert lesbare Schluessel).
SSHKV_MASTER_KEY_HOST_FILE=./geheim/master.key
# Benutzer, unter dem der Worker laeuft (muss die Datei lesen duerfen). Standard 1001:1001.
# SSHKV_WORKER_USER=1001:1001
# --- OIDC (authentik) ----------------------------------------------------------
SSHKV_OIDC_ISSUER=
SSHKV_OIDC_CLIENT_ID=
SSHKV_OIDC_CLIENT_SECRET=
SSHKV_OIDC_NAME=authentik
# Gruppen im Anbieter, die auf Rollen abgebildet werden
SSHKV_OIDC_GROUP_ADMIN=sshkv-admins
SSHKV_OIDC_GROUP_OPERATOR=sshkv-operators
SSHKV_OIDC_GROUP_READER=sshkv-readers
# Entwicklung ohne authentik: Mock-OIDC aus docker-compose.test.yml (pnpm test:ziele:up).
# Der Issuer haengt am Host-Header – genau 127.0.0.1 verwenden, nicht localhost.
# Client-ID und -Secret prueft der Mock nicht; beliebige Werte funktionieren.
# Im Login-Formular sind Claims (email, name, groups …) vorbelegt und frei aenderbar.
# SSHKV_OIDC_ISSUER=http://127.0.0.1:8090/sshkv
# SSHKV_OIDC_CLIENT_ID=sshkv-dev
# SSHKV_OIDC_CLIENT_SECRET=sshkv-dev-geheim
# SSHKV_OIDC_NAME=Mock-OIDC
# Nur Entwicklung: OIDC ueber http erlauben (Mock-Anbieter). Im Betrieb nie setzen.
# SSHKV_OIDC_HTTP_ERLAUBT=1
# --- Notfall-Admin -------------------------------------------------------------
# Wird beim ersten Seed angelegt. TOTP wird bei der ersten Anmeldung eingerichtet.
SSHKV_BREAKGLASS_USER=notfall
SSHKV_BREAKGLASS_PASSWORD=
# --- Worker --------------------------------------------------------------------
# Zeitplan fuer den Abgleich aller Hosts (cron)
SSHKV_SYNC_CRON=30 2 * * *
# Taegliche Zusammenfassung der Benachrichtigungen (cron, Europe/Berlin, #028). Geaenderte
# Host-Keys meldet der Worker unabhaengig davon alle fuenf Minuten. Kanaele und Anlaesse
# stellt ein Admin unter /einstellungen ein.
SSHKV_MELDUNG_CRON=0 7 * * *
# --- Integrationstests (#011) ---------------------------------------------------
# SSH-Testziele aus docker-compose.test.yml. Die Compose-Datei liest dieselben Variablen
# fuer die Port-Bindung (host:port, nur 127.0.0.1).
SSHKV_TEST_ZIEL_A=127.0.0.1:2221
SSHKV_TEST_ZIEL_B=127.0.0.1:2222
# Passwoerter der Testziele fuer root und den Benutzer "test"
SSHKV_TEST_ROOT_PASSWORT=sshkv-test
SSHKV_TEST_TEST_PASSWORT=sshkv-test
# Mock-OIDC (Port-Bindung)
SSHKV_TEST_OIDC=127.0.0.1:8090
# Mailpit fuer tests/integration/benachrichtigung.test.ts (#028), getrennt zu starten:
# docker run -d --name sshkv-mailpit -e MP_SMTP_DISABLE_RDNS=true \
# -p 127.0.0.1:1026:1025 -p 127.0.0.1:8026:8025 axllent/mailpit
SSHKV_TEST_SMTP=127.0.0.1:1026
SSHKV_TEST_MAILPIT_API=http://127.0.0.1:8026