Konfiguration¶
.env (bewusst klein)¶
LLARS nutzt eine bewusst kleine .env:
- Secrets + Infrastruktur bleiben in .env (DB-Passwörter, Authentik/Matomo Secrets, API Keys).
- App-Settings sind in der DB konfigurierbar (z. B. Analytics/Tracking im Admin-Panel).
Setup:
Datenbank (MariaDB)¶
Verbindungen
- Intern: Host db-maria-service, Port 3306
- Extern (nur Debug): Port 55306
Authentik (OIDC)¶
AUTHENTIK_SECRET_KEY=... # mind. 50 Zeichen
AUTHENTIK_DB_NAME=authentik_dev
AUTHENTIK_DB_USER=authentik_dev
AUTHENTIK_DB_PASSWORD=...
AUTHENTIK_PUBLIC_URL=http://localhost:55095
AUTHENTIK_BOOTSTRAP_EMAIL=admin@example.com
AUTHENTIK_BOOTSTRAP_PASSWORD=admin123
# Backend OAuth client secret (Client-ID ist invariant: llars-backend)
AUTHENTIK_BACKEND_CLIENT_SECRET=llars-backend-secret-change-in-production
AUTHENTIK_EXTERNAL_PORT=55095
Analytics (Matomo)¶
- UI:
${PROJECT_URL}/analytics/ - Tracking (first-party):
${PROJECT_URL}/metrics.jsund${PROJECT_URL}/metrics.php - Runtime-Settings: Admin → Analytics (DB-basiert, kein
.env)
Docs (MkDocs)¶
- Dev via nginx:
${PROJECT_URL}/mkdocs/ - Prod via nginx:
${PROJECT_URL}/mkdocs/ - Direkt (Host-Port):
http://localhost:${MKDOCS_EXTERNAL_PORT:-55800}
Datenschutz-Check (Code-Stand, keine Rechtsberatung)¶
- Erfasst: Pageviews (Route-URL + Titel), Link-Tracking, Klick-Events, optional Hover-Events, Heartbeat/Time-on-Page, optional User-ID (Authentik
preferred_username/sub) - Defaults: Cookies an, User-ID an, Consent aus → in EU-Kontext i. d. R. nur mit Einwilligung/anderer Rechtsgrundlage zulässig
- Consent-Flags vorhanden (
require_consent/require_cookie_consent), aber es gibt aktuell keine Consent-UI/setConsentGiven-Integration - Route-URLs enthalten dynamische IDs (z. B.
/Rater/123) → potenziell personenbezogen; ggf. anonymisieren oder nur Routen-Namen tracken - Event-Labels kommen aus UI-Text/ARIA/
data-*(E-Mails/URLs/4+ Zahlen werden sanitisiert, aber User-Content kann dennoch enthalten sein) → sensible Bereiche mitdata-matomo-ignoreausnehmen - Serverseitige Privacy-Settings (IP-Anonymisierung, DNT, Retention) müssen in Matomo selbst konfiguriert werden
Port-Belegung¶
# Extern (Host)
NGINX_EXTERNAL_PORT=55080 # Haupt-Einstieg (Frontend + API + Matomo + Docs Proxy)
AUTHENTIK_EXTERNAL_PORT=55095 # Optional direkt; zusätzlich via nginx `/authentik/`
DB_EXTERNAL_PORT=55306 # Optional direkt (nur Debugging)
MKDOCS_EXTERNAL_PORT=55800 # Optional direkt; via nginx `/mkdocs/` (Dev) / `/mkdocs/` (Prod)
CORS¶
# Normalerweise nicht nötig:
# ALLOWED_ORIGINS wird aus PROJECT_URL + localhost Defaults abgeleitet.
ALLOWED_ORIGINS=http://localhost:55080,http://127.0.0.1:55080
Mehrere Einträge mit Komma trennen.
LLM-Konfiguration¶
Standardmodelle werden aus der DB (llm_models) geladen und beim Start gesät (siehe app/db/models/llm_model.py).
RAG-Pipeline¶
- Embeddings: Default aus
llm_models(aktuellllamaindex/vdr-2b-multi-v1), Fallbacksentence-transformers/all-MiniLM-L6-v2 - Vector Store: ChromaDB
- Chunking:
app/rag_pipeline.pynutzt 1500/300,app/services/rag/embedding/collection_embedding_service.pynutzt default 1000/200 (pro Collection konfigurierbar) - Speicherpfad:
/app/storage/vectorstore
Einstellungen: app/rag_pipeline.py und app/services/rag/embedding/collection_embedding_service.py
Volumes¶
REMOVE_LLARS_VOLUMES=True entfernt alle Volumes mit llars_‑Präfix, z. B.:
llars_llarsdb– MariaDB-Datenllars_rag_storage/llars_rag_docs– RAG Datenllars_authentikdb/llars_authentik_media– Authentikllars_matomo_data/llars_matomodb– Analyticsllars_redis_data– Redis
Development vs Production¶
PROJECT_STATE=development # oder production
FLASK_ENV=development # optional; wird i. d. R. automatisch gesetzt
Development - Hot-Reload (Frontend + Backend) - Umfangreiches Logging - Quellcode als Volumes gemountet
Production - Optimierte Builds, kein Hot-Reload - Reduziertes Logging - Frontend statisch über nginx
Sicherheit¶
Standard-Passwörter ändern¶
MYSQL_ROOT_PASSWORD=<stark>
MYSQL_PASSWORD=<stark>
AUTHENTIK_DB_PASSWORD=<stark>
AUTHENTIK_BOOTSTRAP_PASSWORD=<stark>
AUTHENTIK_BACKEND_CLIENT_SECRET=<stark>
SYSTEM_ADMIN_API_KEY=<stark>
ADMIN_REGISTRATION_KEY=<uuid>
SSL/TLS aktivieren¶
- Zertifikate nach
docker/nginx/certs/legen - nginx-Konfiguration anpassen
PROJECT_URL/AUTHENTIK_PUBLIC_URLauf HTTPS umstellen (z. B.https://llars.example.de)
External Port Exposure¶
In production, consider:
- Exposing only NGINX_EXTERNAL_PORT=80/443
- Removing direct database/backend port mappings
- Using Docker networks for internal communication
Advanced Configuration¶
Custom Docker Compose¶
Create docker-compose.override.yml for local customizations:
Authentik Theme/Branding¶
Authentik-Themes lassen sich über die Admin-UI konfigurieren (Flows/Branding). Eigene Logos/Farben können dort hinterlegt werden; kein separates Theme-Verzeichnis nötig.
Nginx Custom Configuration¶
Edit docker/nginx/nginx.conf for:
- Custom routing rules
- Rate limiting
- Additional proxy settings