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.