# 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 16 Zeichen. # openssl rand -hex 24 ADMIN_TOKEN= # ── Server ──────────────────────────────────────────────────────────────────── # Pfad zur SQLite-Datenbank. Der Ordner wird beim Start angelegt. DB_PATH=data/munin.db # 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