# MindSift – Einstellungen # Kopieren nach .env (cp .env.example .env) und anpassen; docker-compose.yml liest die Werte von dort. # Leer gelassene Werte nehmen den Standard aus docker-compose.yml. Nach Änderungen: docker compose up -d # ─── Grundeinstellungen ──────────────────────────────────────────────────────────────────────────── # Port auf dem Host, unter dem MindSift erreichbar ist (im Container immer 8080). PORT=8080 # Geheimer Schlüssel für die Anmeldung, mindestens 32 zufällige Zeichen, z. B. von: openssl rand -hex 32 # Bekannte Beispielwerte (wie dieser) werden ignoriert; dann erzeugt MindSift selbst einen und legt ihn in data/ ab. JWT_SECRET=change_this_to_a_secure_random_key_min_32_chars # Öffentliche Adresse der Instanz, so wie sie im Browser aufgerufen wird. Wird für Links in E-Mails # (Passwort zurücksetzen) gebraucht und beschränkt, von welcher Adresse Live-Verbindungen kommen dürfen. BASE_URL=http://localhost:8080 # Zeitzone für Fälligkeiten und Alarme (Standard Europe/Berlin). TZ=Europe/Berlin # Registrierung ohne Einladung. Ohne Angabe entscheidet Administration → Server & Isolation. # Gesetzt ist es dort gesperrt: # closed nur mit Einladung # approval jeder darf sich registrieren, ein Admin schaltet frei # domain nur E-Mail-Adressen aus REGISTRATION_DOMAINS, sofort aktiv # domain+approval diese Endungen sofort, alle anderen nach Freigabe # open jeder, sofort aktiv # REGISTRATION_MODE=approval # REGISTRATION_DOMAINS=firma.de, familie.de # Neue Konten ohne Einladung bestätigen zuerst ihre E-Mail-Adresse per Link (braucht SMTP und BASE_URL): # REGISTRATION_VERIFY_EMAIL=true # Alt: true entspricht REGISTRATION_MODE=open; false lässt die Wahl dem Admin. ALLOW_REGISTRATION=false # ─── Sicherheit ──────────────────────────────────────────────────────────────────────────────────── # Wessen Angaben zur Besucher-Adresse (X-Forwarded-For / X-Real-IP) geglaubt werden. Wichtig für die # Login-Sperre hinter einem Reverse-Proxy. # private Proxys im lokalen Netz, Docker-Netz oder Tailscale (Standard, passt für die meisten Setups) # none keinem Proxy glauben (MindSift direkt im Internet) # all jedem glauben (schaltet die Prüfung ab) # Liste zusätzlich eigene Adressen, z. B. private,203.0.113.0/24 (Cloudflare und andere externe Proxys) TRUSTED_PROXIES=private # Sperre nach Fehlversuchen beim Login und Limits für Registrierung und „Passwort vergessen“. # false schaltet beides ab (nur sinnvoll, wenn ein vorgeschalteter Dienst das übernimmt). LOGIN_PROTECTION=true # ─── Protokoll ───────────────────────────────────────────────────────────────────────────────────── # Wie ausführlich das Container-Log ist: debug, info, warn oder error. LOG_LEVEL=info # true = ausführliches Protokoll aller Anfragen und der Synchronisation (wie LOG_LEVEL=debug). DEBUG=false # ─── Demo ────────────────────────────────────────────────────────────────────────────────────────── # true = öffentliche Demo: legt die Konten admin/admin und user/user mit Beispieldaten an. Die Demo # verschickt nichts (keine Mails, Webhooks, Alarme) und schützt die gemeinsam genutzten Konten. MINDA_DEMO=false # Nur in der Demo: alle so viele Minuten auf die Beispieldaten zurücksetzen (0 = nie). DEMO_RESET_MINUTES=20 # ─── E-Mail (optional) ───────────────────────────────────────────────────────────────────────────── # Für Alarm-Mails und „Passwort vergessen“. Lässt sich alternativ in Administration → E-Mail einstellen; # Werte dort haben Vorrang. # Mailserver, z. B. smtp.example.com. Leer = kein Mailversand. SMTP_HOST= # 587 (STARTTLS) oder 465 (TLS ab Verbindungsbeginn). SMTP_PORT=587 # Anmeldung am Mailserver; leer, wenn der Server keine verlangt. SMTP_USER= SMTP_PASS= # Absenderadresse, z. B. noreply@example.com. Leer = SMTP_USER bzw. noreply@mindsift.local. SMTP_FROM= # Name, den Mailprogramme als Absender zeigen (wenn SMTP_FROM nur eine Adresse ist). # Ein Name direkt in SMTP_FROM ("Mein Dienst ") hat Vorrang. SMTP_FROM_NAME=MindSift # Benachrichtigungen (Freigaben, beobachtete Aufgaben …) werden gesammelt und höchstens alle so viele # Minuten als eine Nachricht verschickt. Fällige Aufgaben kommen immer sofort. NOTIFY_DIGEST_MINUTES=5 # true = nur verschlüsselt senden. SMTP_TLS=true # true = selbstsignierte Zertifikate akzeptieren (nur für interne Mailserver). SMTP_SKIP_VERIFY=false # Web-Push (Benachrichtigungen auf Handy und Desktop, auch bei geschlossener App). # Ohne Angabe erzeugt MindSift beim ersten Bedarf ein Schlüsselpaar und speichert es in der Datenbank. # VAPID_SUBJECT: Kontakt für die Push-Dienste (mailto: oder https://); Standard ist BASE_URL, wenn https. # VAPID_PUBLIC_KEY= # VAPID_PRIVATE_KEY= # VAPID_SUBJECT=mailto:admin@example.com # ─── Impressum und Datenschutz (optional) ────────────────────────────────────────────────────────── # Werden auf der Anmeldeseite und in den Einstellungen verlinkt. Entweder als Link auf eine externe # Seite (nur http/https) oder als Markdown-Text, direkt hier oder als Datei (per Volume einbinden). # Ohne Angaben bleiben die Links unsichtbar. LEGAL_IMPRINT_URL= LEGAL_PRIVACY_URL= LEGAL_IMPRINT_CONTENT= LEGAL_PRIVACY_CONTENT= # Pfad im Container, z. B. /legal/impressum.md LEGAL_IMPRINT_CONTENT_FILE= LEGAL_PRIVACY_CONTENT_FILE= # Eigener Link im Footer (nur https://) LEGAL_CUSTOM_LINK_LABEL= LEGAL_CUSTOM_LINK_URL= # ─── Bilder und Audio in Notizen ─────────────────────────────────────────────────────────────────── # Dateien liegen in data/media/ und sind nur für Personen sichtbar, die die Notiz lesen dürfen. Nicht mehr # verwendete Dateien räumt MindSift nach einem Tag selbst weg. # Größtes Bild in MB (der Browser verkleinert Fotos vorher auf höchstens 2048 Pixel). MEDIA_MAX_IMAGE_MB=15 # Größte Audiodatei in MB (Sprachnotiz oder hochgeladene Datei). MEDIA_MAX_AUDIO_MB=50 # Speicherplatz für Medien pro Person in MB; 0 = unbegrenzt. MEDIA_QUOTA_MB=0 # Nur in der Demo: größte Datei in MB (Dateien verschwinden beim Demo-Reset). MEDIA_DEMO_MAX_MB=3 # ─── Spracherkennung (optional) ──────────────────────────────────────────────────────────────────── # Ohne STT_URL nutzt MindSift die Spracherkennung des Browsers (Chrome, Edge, Safari; die Aufnahme geht # dabei an Google, Microsoft bzw. Apple). Mit eigenem Whisper-Server bleibt alles auf deinem Server und # es funktioniert in allen Browsern. Dazu den Block „whisper“ in docker-compose.yml einkommentieren # (Anleitung steht dort). Fehler stehen im Log: docker compose logs mindsift whisper # Adresse des Whisper-Servers (OpenAI-kompatibel, z. B. speaches). Gesetzt = Server-Modus. STT_URL= # Modell: deepdml/faster-whisper-large-v3-turbo-ct2 (beste Erkennung, ca. 2 GB RAM, langsamer) # Systran/faster-whisper-small (ca. 1 GB RAM, deutlich schneller, kleine Fehler) STT_MODEL=deepdml/faster-whisper-large-v3-turbo-ct2 # Sprachcode, z. B. de oder en; auto = automatisch erkennen. STT_LANGUAGE=de # Nur falls der Whisper-Server einen Schlüssel verlangt (bei speaches: dessen API_KEY). STT_API_KEY= # true = Mikrofon überall ausblenden, auch die Browser-Erkennung. STT_DISABLED=false # Schutzwerte für den Server-Modus # Längste Aufnahme in Sekunden; danach beendet der Browser die Aufnahme selbst. STT_MAX_SECONDS=600 # Größte Aufnahme in MB. STT_MAX_UPLOAD_MB=25 # Wie viele Erkennungen gleichzeitig laufen; weitere warten in der Schlange. 1 schont schwache CPUs. STT_MAX_PARALLEL=1 # Erkennungen pro Person und Stunde. STT_PER_USER_PER_HOUR=60 # Höchstdauer einer Erkennung in Sekunden, Warten in der Schlange eingeschlossen. STT_TIMEOUT_SECONDS=120