132 lines
6.1 KiB
Text
132 lines
6.1 KiB
Text
# Wissensspeicher — Konfigurationsvorlage
|
|
#
|
|
# Kopieren und mit eigenen Werten befüllen:
|
|
# cp .env.example .env
|
|
#
|
|
# .env enthält Geheimnisse und steht in .gitignore. Niemals einchecken.
|
|
|
|
# ── Pflichtangaben ────────────────────────────────────────────────────────────
|
|
|
|
# Signiert Sitzungs-Cookies und CSRF-Tokens. Mindestens 32 Zeichen.
|
|
# openssl rand -hex 32
|
|
SESSION_SECRET=
|
|
|
|
# Zugang des Plattform-Admins: legt Projekte an und löscht sie, kommt an jedes
|
|
# Projekt. Mindestens 32 Zeichen.
|
|
# openssl rand -hex 24
|
|
ADMIN_TOKEN=
|
|
|
|
# ── Datenbank ─────────────────────────────────────────────────────────────────
|
|
|
|
# Wo die Daten liegen: "sqlite" (Standard) oder "postgres".
|
|
# Siehe AUSBAUSTUFEN.md 4.10.
|
|
# DB_DRIVER=sqlite
|
|
|
|
# Nur bei DB_DRIVER=sqlite: Datenverzeichnis mit der zentralen
|
|
# Kontroll-Datenbank (control.db) und dem Ordner workspaces/ mit einer
|
|
# SQLite-Datei je Workspace (Abteilung). Wird beim Start angelegt.
|
|
DATA_DIR=data
|
|
|
|
# Nur bei DB_DRIVER=postgres: Verbindung zur Datenbank. Munin legt darin das
|
|
# Schema munin_control und je Workspace ein Schema munin_ws_<id> an.
|
|
# Für die lokale Entwicklung siehe docker-compose.dev.yml.
|
|
# DATABASE_URL=postgres://munin:munin@localhost:5432/munin?sslmode=disable
|
|
#
|
|
# Im Betrieb: das Passwort nicht in die Adresse schreiben, sondern als
|
|
# PGPASSWORD setzen, und TLS verlangen (sslmode=verify-full). Welche Rechte
|
|
# der Datenbank-User braucht, steht in BETRIEB.md.
|
|
# DATABASE_URL=postgres://munin@db.intern:5432/munin?sslmode=verify-full
|
|
# PGPASSWORD=
|
|
|
|
# ── Server ────────────────────────────────────────────────────────────────────
|
|
|
|
# Port, auf dem der Server lauscht.
|
|
PORT=8080
|
|
|
|
# ── Sicherheit und Betrieb ────────────────────────────────────────────────────
|
|
|
|
# Secure-Flag der Cookies: Der Browser schickt sie dann nur über HTTPS.
|
|
#
|
|
# Ohne Angabe wird automatisch entschieden — bei Zugriff über localhost aus,
|
|
# sonst an. Für die lokale Entwicklung ist damit nichts zu tun. Ausdrücklich auf
|
|
# true setzen, wenn ein Reverse-Proxy das TLS beendet und intern http spricht.
|
|
# COOKIE_SECURE=true
|
|
|
|
# HSTS-Header senden: weist den Browser an, die Adresse künftig nur noch über
|
|
# HTTPS aufzurufen.
|
|
#
|
|
# NUR einschalten, wenn ein gültiges Zertifikat vorhanden ist — ein Browser, der
|
|
# den Header einmal gesehen hat, weigert sich ein Jahr lang, die Seite über http
|
|
# zu laden.
|
|
# ENABLE_HSTS=true
|
|
|
|
# Vertrauenswürdige Reverse-Proxys — kommagetrennte IPs und/oder CIDR-Netze.
|
|
#
|
|
# Nur wenn ein Request von einer dieser Adressen kommt, wird X-Forwarded-For
|
|
# ausgewertet, um die echte Client-Adresse zu bestimmen (wichtig für
|
|
# Rate-Limiting und Protokoll). Ohne Angabe wird der Header ignoriert — er ist
|
|
# frei fälschbar.
|
|
# TRUSTED_PROXY=127.0.0.1,10.0.0.0/8
|
|
|
|
# Höchstgröße eines MCP-Requests in Bytes. Standard: 4194304 (4 MB).
|
|
# MAX_API_BODY_BYTES=4194304
|
|
|
|
# Schreibbudget: wie oft ein Projekt je Stunde über MCP schreiben darf
|
|
# (remember und forget). Standard: 1000. Lesen ist nie begrenzt.
|
|
#
|
|
# Warum es das gibt: Ein gültiger API-Key umgeht die IP-Sperre bewusst — sonst
|
|
# würde ein falsch konfigurierter Client alle anderen im selben Büro mitsperren.
|
|
# Damit hätte aber ein Agent, der in einer Schleife hängt, überhaupt keine
|
|
# Grenze mehr. Diese hier ist sein Netz.
|
|
#
|
|
# Die Zahl darf großzügig sein: Sie soll eine Schleife stoppen, nicht Arbeit
|
|
# rationieren. Einzelne Projekte bekommen bei Bedarf eine eigene Obergrenze
|
|
# unter /admin/projects.
|
|
#
|
|
# 0 schaltet die Begrenzung vollständig ab.
|
|
# WRITE_LIMIT_HOURLY=1000
|
|
|
|
# ── Markdown-Export ───────────────────────────────────────────────────────────
|
|
|
|
# Zielverzeichnis für den Export. Ohne Angabe ist der Export abgeschaltet.
|
|
#
|
|
# Der Bestand wird täglich (und auf Knopfdruck) als Markdown-Dateien dorthin
|
|
# geschrieben — ein Ordner je Projekt. Gedacht als Sicherung, die sich in ein
|
|
# Git-Repository legen lässt und auch ohne dieses Programm lesbar bleibt.
|
|
#
|
|
# Ein Lauf ohne inhaltliche Änderungen fasst keine Datei an und erzeugt damit
|
|
# auch keinen Git-Diff.
|
|
# EXPORT_DIR=data/export
|
|
|
|
# ── Sicherung (nur für die Skripte) ───────────────────────────────────────────
|
|
|
|
# Diese Werte liest nicht der Server, sondern scripts/backup.sh und
|
|
# scripts/sicherung-pruefen.sh — und zwar aus der Umgebung, nicht aus dieser
|
|
# Datei. Im Cronjob also mitgeben oder vorher die .env einlesen. Die Skripte
|
|
# nutzen außerdem DB_DRIVER, DATA_DIR und DATABASE_URL von oben.
|
|
# Einzelheiten stehen im Kopf der Skripte und in BETRIEB.md.
|
|
|
|
# Wohin die Sicherungen geschrieben werden. Standard: backups
|
|
# BACKUP_DIR=/srv/backups
|
|
|
|
# Sicherungen, die älter als so viele Tage sind, werden gelöscht. Ohne Angabe
|
|
# bleibt jede liegen.
|
|
# RETENTION_DAYS=14
|
|
|
|
# Nur PostgreSQL: eine leere Datenbank, in die die Probe der Sicherung
|
|
# zurückspielt. Niemals die Produktivdatenbank eintragen.
|
|
# PROBE_DATABASE_URL=postgres://munin@db.intern:5432/munin_probe
|
|
|
|
# Nur PostgreSQL: andere Aufrufe für die Werkzeuge, z.B. aus dem Container,
|
|
# wenn sie auf dem Sicherungsrechner fehlen. Den Namen des Containers anpassen
|
|
# (die lokale Entwicklungsumgebung heißt go-wiki-postgres-1).
|
|
# PSQL="docker exec -i munin-postgres psql"
|
|
# PG_DUMP="docker exec -i munin-postgres pg_dump"
|
|
# PG_RESTORE="docker exec -i munin-postgres pg_restore"
|
|
|
|
# Für die Probe: das Munin-Programm, mit dem sie die Sicherung öffnet. Ohne
|
|
# Angabe baut das Skript es selbst, dafür braucht es Go.
|
|
# MUNIN_BIN=/srv/munin/munin
|
|
|
|
# Port, auf dem Munin während der Probe kurz läuft. Standard: 18080
|
|
# PROBE_PORT=18080
|