Zum Inhalt

Konfiguration

Krywerk Server

Der Server liest eine optionale TOML-Datei (--config <datei> oder KRYWERK_SERVER_CONFIG); Umgebungsvariablen überschreiben sie. Unbekannte Optionen lehnt der Server beim Start ab, ungültige Werte ebenso – mit einer Meldung, welche Option falsch ist. Prüfen ohne Start: krywerk-server check.

# krywerk-server.toml – Beispiel mit den wichtigsten Optionen
listen = "127.0.0.1:8380"
public_url = "https://schluessel.example.org"
db_path = "/var/lib/krywerk/krywerk-server.sqlite3"
trust_proxy = true

[oidc]
issuer = "https://login.example.org/realms/krywerk"
client_id = "cryptomator"

[web]
enabled = true
client_id = "krywerk-verwaltung"
client_secret_file = "/run/secrets/krywerk-verwaltung"

[audit]
retention_days = 365
record_ip = false

Alle Optionen

TOML Umgebungsvariable Standard Bedeutung
listen KRYWERK_SERVER_LISTEN 127.0.0.1:8380 Adresse und Port
public_url KRYWERK_SERVER_PUBLIC_URL http://localhost:8380 öffentliche Basis-URL ohne /api (Seiten, hub-Kopf neuer Tresore)
db_path KRYWERK_SERVER_DB krywerk-server.sqlite3 SQLite-Datei (Schema-Version in PRAGMA user_version)
trust_proxy KRYWERK_SERVER_TRUST_PROXY false X-Forwarded-For als Client-IP übernehmen
source_url KRYWERK_SERVER_SOURCE_URL https://github.com/mzilinski/krywerk Link „Quellcode“ in der Web-Verwaltung (AGPL § 13); bei eigenen Änderungen auf den eigenen Quellcode setzen
– KRYWERK_SERVER_QUIET aus Zugriffsprotokoll auf der Konsole abschalten
– KRYWERK_SERVER_LOG info Protokollstufe bzw. Filter (Syntax wie RUST_LOG), z. B. warn oder info,kw_server::access=off
– KRYWERK_SERVER_LOG_FORMAT text json: eine JSON-Zeile je Ereignis (Zeit, Stufe, Meldung, Felder wie method, path, status, ms) für Loki, Elasticsearch & Co.
oidc.issuer KRYWERK_SERVER_OIDC_ISSUER – (Pflicht) Issuer exakt wie im iss der Tokens
oidc.internal_url KRYWERK_SERVER_OIDC_INTERNAL_URL – interne URL für Discovery/JWKS (ersetzt das Issuer-Präfix beim Abruf)
oidc.client_id KRYWERK_SERVER_OIDC_CLIENT_ID cryptomator Client-ID der Apps (öffentlicher Client, PKCE S256, Redirect http://127.0.0.1/*)
oidc.auth_endpoint / oidc.token_endpoint KRYWERK_SERVER_OIDC_AUTH_ENDPOINT / …_TOKEN_ENDPOINT aus der Discovery öffentliche Endpunkte für /api/config
oidc.audience KRYWERK_SERVER_OIDC_AUDIENCE – verlangte aud; ohne Angabe prüft der Server stattdessen azp/appid (strenger als der Referenz-Hub)
oidc.allowed_clients KRYWERK_SERVER_OIDC_ALLOWED_CLIENTS – weitere Clients (Komma-Liste) neben client_id, deren Access Tokens die API annimmt; ID-Tokens werden immer abgelehnt
oidc.roles_claim KRYWERK_SERVER_ROLES_CLAIM realm_access.roles Pfad des Rollen-Claims (Entra ID: roles)
oidc.user_role KRYWERK_SERVER_ROLE_USER user Rolle für alle Endpunkte; leer = jedes gültige Token
oidc.create_vaults_role KRYWERK_SERVER_ROLE_CREATE_VAULTS create-vaults Rolle zum Anlegen von Tresoren
oidc.admin_role KRYWERK_SERVER_ROLE_ADMIN admin Verwaltungsrolle
oidc.groups_claim KRYWERK_SERVER_GROUPS_CLAIM groups Pfad des Gruppen-Claims (durch Punkte getrennt); leer = keine Gruppen aus Tokens
oidc.groups_strip_slash KRYWERK_SERVER_GROUPS_STRIP_SLASH true führenden „/“ im Gruppennamen weglassen
oidc.groups_nested KRYWERK_SERVER_GROUPS_NESTED true Pfade /a/b als verschachtelte Gruppen anlegen
rate_limit.api_per_minute KRYWERK_SERVER_RATE_LIMIT_API 6000 Anfragen an /api je Minute und Client-IP (bis zur Hälfte am Stück), danach 429; 0 = aus. Großzügig wegen NAT in Schulen
rate_limit.login_per_minute KRYWERK_SERVER_RATE_LIMIT_LOGIN 10 Anmeldungen an der Web-Verwaltung je Minute und Client-IP; 0 = aus
emergency.min_required_shares KRYWERK_SERVER_EMERGENCY_MIN_SHARES 2 Mindestschwelle k des Notfallgremiums (Werte < 2 gelten als 2, höchstens 32)
emergency.process_max_age_days KRYWERK_SERVER_EMERGENCY_MAX_AGE_DAYS 14 offene Notfallanträge laufen danach ab (EXPIRED)
web.enabled KRYWERK_SERVER_WEB false Web-Verwaltung unter /verwaltung (docs/web-verwaltung.md)
web.client_id KRYWERK_SERVER_WEB_CLIENT_ID krywerk-verwaltung eigener Client (Code + PKCE, Rücksprung <public_url>/verwaltung/anmeldung)
web.client_secret_file KRYWERK_SERVER_WEB_CLIENT_SECRET_FILE / KRYWERK_SERVER_WEB_CLIENT_SECRET – nur bei vertraulichem Client; das Secret selbst nie in der TOML-Datei
web.session_hours / web.idle_minutes KRYWERK_SERVER_WEB_SESSION_HOURS / …_IDLE_MINUTES 8 / 30 Höchstdauer und Leerlauf einer Sitzung
web.admin_manage_all KRYWERK_SERVER_WEB_ADMIN_MANAGE_ALL true IT-Administration darf alle Team-Ordner ändern (sonst nur ansehen)
audit.retention_days KRYWERK_SERVER_AUDIT_RETENTION_DAYS 365 Protokoll (krywerk_event) aufbewahren; 0 = nie löschen
audit.record_ip KRYWERK_SERVER_AUDIT_RECORD_IP false IP-Adressen ins Protokoll schreiben
wot.max_depth KRYWERK_SERVER_WOT_MAX_DEPTH 3 Web of Trust: höchstens so viele zusätzliche Glieder einer Vertrauenskette (0 = nur direkte Bestätigungen), 0–9
wot.id_verify_len KRYWERK_SERVER_WOT_ID_VERIFY_LEN 2 Web of Trust: so viele Zeichen des Fingerabdrucks müssen beim Prüfen einer Identität eingetippt werden, 0–64 (Krywerk-Apps verlangen unabhängig davon mindestens 8)
Geheimnisse (nur das Client-Secret der Web-Verwaltung) gehören in eine Datei (web.client_secret_file) oder in
KRYWERK_SERVER_WEB_CLIENT_SECRET, nie in die TOML-Datei im Repository.

Desktop-App

Die App wird über ihre Oberfläche eingerichtet (Einstellungen › Allgemein, Organisationskonto, Boxcryptor (alt)). Sie speichert alles in config.json (Ort siehe Sicherung); die Datei muss nicht von Hand bearbeitet werden.

Feld in config.json Einstellung in der App Standard
version – (Format der Datei) 1
language Allgemein › Sprache / Language: auto (Sprache des Systems: Deutsch bei de*, sonst Englisch), de, en auto
vaults Liste der Laufwerke mit Ordner, Name, Format, Laufwerksbuchstabe, automatisch einhängen leer
hubServer Einstellungen › Organisationskonto › Adresse des Schlüsselservers leer
teamFolders gefundene Ordner der Team-Ordner auf diesem Gerät leer
autostart Allgemein › Beim Anmelden am Computer automatisch starten aus
cache Allgemein › Erweitert › Zwischenspeicher verwenden an
keyfile Boxcryptor (alt) › Schlüsseldatei –
rememberPassword Boxcryptor (alt) › Passwort merken aus
encryptNames Boxcryptor (alt) › Dateinamen neuer Dateien verschlüsseln an
contextMenu Boxcryptor (alt) › Kontextmenü im Explorer/Finder/Dateimanager an

Umgebungsvariablen (Desktop-App und Kommandozeile)

Variable Wirkung
KRYWERK_CONFIG_DIR anderer Ordner für Einstellungen und Protokoll – eigene, unabhängige Instanz (Tests, zweites Profil)
KRYWERK_SYNC_ROOTS Ordner (wie PATH getrennt), in denen „Ordner suchen …“ nach Team-Ordnern sucht; ersetzt die automatisch erkannten Sync-Ordner (OneDrive, Nextcloud, Dropbox …)
KRYWERK_PASSWORD Passwort für krywerk-mount/krywerk-recover (Tresor bzw. Boxcryptor-Konto), statt verdeckter Eingabe
KRYWERK_VAULT_PASSWORD Passwort des neuen Tresors bei krywerk-mount --upgrade-to
KRYWERK_HUB_SETUP_CODE Freischaltcode für krywerk-hub/krywerk-mount, statt verdeckter Eingabe
KRYWERK_RECOVERY_KEY Wiederherstellungsschlüssel für krywerk-mount --recovery-key, statt verdeckter Eingabe
WEBKIT_DISABLE_DMABUF_RENDERER Linux: Krywerk setzt 1, wenn nicht vorgegeben (verhindert Abstürze mit NVIDIA unter Wayland)
KRYWERK_MOUNT_STATS=1 Laufzeitstatistik der Laufwerksoperationen alle 5 s auf stderr (ohne Namen oder Inhalte)
KRYWERK_LANG Sprache der Desktop-App (hat Vorrang vor der Einstellung; die Auswahl in der App ist dann gesperrt) und von krywerk-hub, krywerk-mount und krywerk-recover: de oder en; ohne Angabe Deutsch, wenn LC_ALL, LC_MESSAGES bzw. LANG (die erste gesetzte) mit de beginnt, sonst Englisch

Sprache der Kommandozeile: Hilfe (--help/--hilfe), Rückfragen und Meldungen der drei Werkzeuge folgen KRYWERK_LANG bzw. dem Gebietsschema. Befehls- und Optionsnamen bleiben in beiden Sprachen gleich (z. B. krywerk-hub freigeben); die Fehlermeldungen des Argument-Parsers (z. B. „error: unexpected argument“) sind immer englisch. Fehlermeldungen vom Server und aus den Bibliotheken (Tresor, Anmeldung) erscheinen auf Deutsch. Die Ende-zu-Ende-Tests setzen KRYWERK_LANG=de, weil sie deutsche Ausgaben prüfen.

Passwörter nie als Kommandozeilenargument übergeben – sie stünden in der Prozessliste und im Verlauf der Shell.

Protokoll der App

System Datei
Windows %APPDATA%\Krywerk\log.txt
macOS ~/Library/Logs/Krywerk/log.txt
Linux ~/.local/state/Krywerk/log.txt (bzw. $XDG_STATE_HOME/Krywerk)

Das Protokoll enthält Fehlermeldungen, aber keine Passwörter, Schlüssel oder Dateiinhalte. Ab 1 MB beginnt es neu. Beim Start aus einem Terminal schreibt die App stattdessen dorthin.