# Vorlage für die lokale Backend-Konfiguration. # Kopieren nach `config.toml` und Werte anpassen: # # cp config.example.toml config.toml # # Die `config.toml` selbst enthält Secrets und gehört NICHT in Git. # Pfad überschreibbar via Env `HOLZLEITNER_CONFIG=/pfad/zu/config.toml`. # # Pflicht-Sections: [server], [database], [keycloak], [gsd]. # Alle anderen Sections/Felder sind optional und fallen auf Defaults zurück. # --- HTTP-Server ---------------------------------------------------------- [server] host = "127.0.0.1" port = 3000 # --- Postgres ------------------------------------------------------------- # Passt zur docker-compose.yml (Service `postgres`). [database] url = "postgres://holzleitner:holzleitner_dev@localhost:5432/holzleitner" max_connections = 10 # --- Keycloak (OIDC) ------------------------------------------------------ # issuer_url muss EXAKT dem `iss`-Claim entsprechen, das Keycloak ausstellt. [keycloak] issuer_url = "http://localhost:8080/realms/holzleitner" audience = "holzleitner-api" jwks_cache_ttl_seconds = 3600 admin_url = "http://localhost:8080" realm = "holzleitner" provisioner_client_id = "holzleitner-provisioner" provisioner_client_secret = "provisioner-dev-secret" driver_default_password = "Holzleitner-Start1!" driver_role = "driver" # Default false → Sync legt keine Fahrer-Konten an. provisioning_enabled = false # --- GSD / DOCUframe (Datei-Upload) --------------------------------------- # password_md5 ist der MD5-Hash des Service-Account-Passworts (kein Klartext). [gsd] rest_url = "http://192.168.1.9:8334" app_key = "GSD-RestApi" user = "GSDWebServiceTmp" password_md5 = "" app_names = ["GSD-RestApi"] # --- ERPframe MSSQL (täglicher Touren-Pull) ------------------------------- [erp] host = "192.168.1.7" port = 61279 database = "HOLZ_SQL" user = "sa" password = "" trust_cert = true writeback_enabled = false # Gutschrift-Rückschreibung (GUTSCHRIFT10-Belegzeile) — bestandsneutral, # daher unkritisch. true = Gutschriften werden ins ERP geschrieben. # (Mengen-Reduktion wird generell NICHT mehr zurückgeschrieben.) gutschrift_writeback_enabled = true # --- ERP-Import-Scheduler ------------------------------------------------- [import] enabled = false cron = "0 0 3 * * *" date_offset_days = 1 # --- PDF-Lieferreport → DOCUframe ---------------------------------------- [report] storage_dir = "./data/reports" upload_enabled = false retry_cron = "0 */5 * * * *" # --- Lokale Speicher (Signaturen / Bild-Notizen) -------------------------- [signature] storage_dir = "./data/signatures" # Aufbewahrungsfrist der Unterschrifts-Dateien in Tagen. Ein Cron löscht # ältere Dateien (Unterschriften werden NICHT mehr beim Report-Upload gelöscht). # 0 = nie automatisch löschen. retention_days = 90 # Cron (6-stellig, inkl. Sekunden) für den Signatur-Cleanup (täglich 04:00). cleanup_cron = "0 0 4 * * *" [attachment] storage_dir = "./data/attachments" # --- DEV-ONLY-Schalter ---------------------------------------------------- [dev] # today_override weglassen = echte Uhr. Zum Testen mit importierten Touren # den quotierten String setzen, z. B.: # today_override = "2026-06-01" sync_enabled = false # --- Admin-API-Key (Maschinen-Zugang zu /admin) --------------------------- # Leer ⇒ alle /admin-Endpunkte gesperrt (fail-closed). In Produktion einen # hochentropischen Zufallswert setzen (`openssl rand -hex 32`). [admin] api_key = "" # --- Logging -------------------------------------------------------------- # RUST_LOG-Env hat Vorrang. Binary-Crate heißt `holzleitner_server`. # `dir`: nur im Windows-Dienst-Modus relevant — dort wird statt auf stderr in # rollende Tages-Logdateien /holzleitner-backend.log. geschrieben # (relativ zum EXE-Verzeichnis). Im Konsolenmodus geht alles auf stderr. [logging] filter = "holzleitner_server=info,holzleitner_api=info,holzleitner_application=info,holzleitner_infrastructure=info,tower_http=info" dir = "logs"