Einstellungen-Seite: .env-Werte in DB (app_state), keine .env mehr

Neue /einstellungen-Seite (Zahnrad im Header) mit allen bisherigen .env-Werten
(Ollama, E-Mail, CalDAV, REST-API), gespeichert in SQLite (app_state, cfg:-Prefix).
Libs lesen per lib/config.js zur Laufzeit statt beim Start -> Aenderungen
wirken sofort, kein Neustart. Bestehende .env wird beim ersten Start einmalig
migriert.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-13 20:57:31 +02:00
co-authored by Claude
parent 41887dd56c
commit 97b48f9841
12 changed files with 410 additions and 72 deletions
+13 -12
View File
@@ -30,20 +30,21 @@ Ablauf:
### Konfiguration
Alle Einstellungen (Ollama, E-Mail, Kalender, REST-API) werden in der Weboberfläche
unter **„Einstellungen“** (`/einstellungen`, Zahnrad-Symbol im Header) gepflegt und
in der Datenbank gespeichert. Änderungen wirken sofort, ein Neustart ist nicht nötig.
Für die KI-Generierung wird ein Ollama-Cloud-API-Schlüssel benötigt
([ollama.com/settings/keys](https://ollama.com/settings/keys)). Am einfachsten über
eine (nicht eingecheckte) `.env`-Datei kopiere `.env.example` nach `.env`:
([ollama.com/settings/keys](https://ollama.com/settings/keys)) trage ihn nach dem
ersten Start unter **Einstellungen → Ollama Cloud** ein.
```bash
cp .env.example .env
# in .env eintragen:
# OLLAMA_API_KEY=...
# OLLAMA_MODEL=gpt-oss:120b # optional, Standard
# OLLAMA_HOST=https://ollama.com # optional; z. B. http://localhost:11434 für lokale Ollama
npm start
# dann im Browser http://localhost:3000/einstellungen öffnen
```
Alternativ als Umgebungsvariable: `export OLLAMA_API_KEY=...`.
Bestehende Installationen, die bisher eine `.env`-Datei nutzen, werden beim ersten
Start einmalig in die Datenbank migriert; danach wird `.env` nicht mehr benötigt.
Ohne Schlüssel wird die Bewerbung trotzdem als Entwurf angelegt; die Generierung
schlägt dann kontrolliert mit einem Hinweis fehl und kann später per
@@ -217,10 +218,10 @@ das Rohdokument unter **`/swagger.json`**.
### Authentifizierung
Jeder Endpunkt (außer `GET /api/v1/health`) erfordert einen API-Key im Header
`X-API-Key`. Der Schlüssel wird über die Umgebungsvariable `API_TOKEN` konfiguriert
(z. B. in `.env`, siehe `.env.example`). Ist `API_TOKEN` nicht gesetzt, antwortet
die API mit `503` sie gibt nie ungeschützt Daten heraus. Swagger/UI sind
auch ohne Token erreichbar (die Dokumentation enthält keine sensiblen Daten).
`X-API-Key`. Der Schlüssel wird unter **Einstellungen → REST-API** (`API_TOKEN`)
konfiguriert. Ist `API_TOKEN` nicht gesetzt, antwortet die API mit `503` sie gibt
nie ungeschützt Daten heraus. Swagger/UI sind auch ohne Token erreichbar (die
Dokumentation enthält keine sensiblen Daten).
```bash
curl -H "X-API-Key: $API_TOKEN" http://localhost:3000/api/v1/applications