Kalzit ist in früher Entwicklung. Diese Seiten beschreiben, was heute existiert, und ändern sich mit den Meilensteinen.

Konfiguration

Kalzit liest seine Einstellungen aus drei Schichten: eingebaute Standardwerte, dann die Konfigurationsdatei kalzit.toml, dann Umgebungsvariablen. Eine Umgebungsvariable geht vor der Datei. Netzwerk- und TLS-Einstellungen gibt es nur hier, nie in der Weboberfläche, damit ein falscher Wert keinen Admin aus der Einstellungsseite aussperrt.

Einstellungen in der Weboberfläche kommen mit M1. Was in Datei oder Umgebung gesetzt ist, erscheint dort gesperrt, mit Angabe der Quelle.

Wo die Datei liegt

Kalzit nimmt die erste Datei, die es findet:

  1. die mit --config <datei> (oder der Variable KALZIT_CONFIG) angegebene Datei,
  2. kalzit.toml im aktuellen Verzeichnis,
  3. unter Windows %ProgramData%\Kalzit\kalzit.toml, unter Linux /etc/kalzit/kalzit.toml.

Ohne Datei gelten die Standardwerte. Unbekannte Schlüssel sind ein Fehler, damit ein Tippfehler nicht unbemerkt bleibt. Prüfen kannst du eine Datei mit kalzit check-config.

Umgebungsvariablen

Zu jedem Schlüssel gibt es eine Variable KALZIT_<ABSCHNITT>_<SCHLÜSSEL> in Großbuchstaben, zum Beispiel KALZIT_SERVER_HTTP_ADDR für http_addr in [server]. Der Wert wird als TOML-Wert gelesen, wenn er einer ist (eine Zahl, true oder false, eine Liste wie ["10.0.0.0/8"]), sonst als Text.

Zwei weitere Variablen gehören zu keinem Abschnitt:

Variable Bedeutung
KALZIT_CONFIG Pfad der Konfigurationsdatei.
KALZIT_SETUP_TOKEN Ein fester Einrichtungscode für automatische Installationen, siehe Erster Start.

Ein Beispiel

[server]
http_addr = "127.0.0.1:3000"
public_url = "https://kalzit.example.com"

[security]
trusted_proxies = ["127.0.0.1/32", "::1/128"]

[log]
format = "json"

[server]

Schlüssel Standard Bedeutung
http_addr "0.0.0.0:3000" Adresse und Port für HTTP. Ein leerer Text schaltet HTTP ab.
https_addr "" (aus) Adresse und Port für HTTPS, zum Beispiel "0.0.0.0:443". Braucht tls.cert_file und tls.key_file.
public_url nicht gesetzt Die Adresse, die Benutzer öffnen, zum Beispiel https://kalzit.example.com. Dient der Origin-Prüfung und für Links. Muss mit http:// oder https:// beginnen.
redirect_http_to_https true Ist HTTPS an, leitet HTTP auf HTTPS um. /healthz und /readyz bleiben per HTTP erreichbar.

Mindestens eine der beiden Adressen http_addr und https_addr muss gesetzt sein.

[tls]

Schlüssel Standard Bedeutung
cert_file nicht gesetzt Zertifikatskette als PEM-Datei.
key_file nicht gesetzt Privater Schlüssel als PEM-Datei.
min_version "1.2" Niedrigste TLS-Version: "1.2" oder "1.3".
reload_interval_secs 60 Wie oft die beiden Dateien auf Änderungen geprüft werden, in Sekunden. 0 schaltet das Neuladen ab.

[security]

Schlüssel Standard Bedeutung
hsts true Strict-Transport-Security bei HTTPS-Antworten senden.
hsts_max_age_secs 31536000 Dauer von HSTS in Sekunden (ein Jahr).
trusted_proxies [] IP-Bereiche der Reverse Proxys, deren X-Forwarded-*-Header vertraut wird, zum Beispiel ["10.0.0.0/8"]. Die aller anderen werden ignoriert.
login_max_failures 10 Erlaubte Fehlversuche bei der Anmeldung pro Zeitfenster, danach werden weitere abgelehnt.
login_window_secs 900 Länge dieses Zeitfensters in Sekunden (15 Minuten).

[sessions]

Schlüssel Standard Bedeutung
lifetime_hours 720 Längste Lebensdauer einer Sitzung (30 Tage). Mindestens 1.
idle_timeout_hours 168 Eine Sitzung ohne Aktivität endet nach dieser Zeit (7 Tage). 0 schaltet die Grenze ab.

[database]

Schlüssel Standard Bedeutung
url SQLite-Datei sqlite:... oder postgres://.... Ohne Angabe nimmt Kalzit kalzit.db im Datenverzeichnis.
max_connections 10 Größe des Verbindungspools.

[paths]

Schlüssel Standard Bedeutung
data_dir "data" Datenverzeichnis, relativ zum aktuellen Verzeichnis, wenn nicht absolut. Enthält die SQLite-Datenbank und während der Einrichtung setup-token.txt.

[log]

Schlüssel Standard Bedeutung
level "info" Ein Log-Filter, zum Beispiel "info" oder "kalzit=debug,info".
format "text" "text" oder "json".