services: mindsift: image: git.dsit.me/sandrodach/mindsift:dev container_name: mindsift restart: unless-stopped ports: - "${PORT:-8080}:8080" volumes: - ./data:/data environment: - PORT=8080 - DATA_DIR=/data - JWT_SECRET=${JWT_SECRET:-change_this_to_a_secure_random_key_min_32_chars} - BASE_URL=${BASE_URL:-http://localhost:8080} - ALLOW_REGISTRATION=${ALLOW_REGISTRATION:-false} - LOG_LEVEL=${LOG_LEVEL:-info} # Set LOG_LEVEL=debug or DEBUG=true for detailed request and sync logging # - LOG_LEVEL=debug # - DEBUG=true # Demo mode: if true, automatically seeds demo accounts admin/admin and user/user - MINDA_DEMO=${MINDA_DEMO:-false} # Optional SMTP / Mail Configuration (can also be configured in Admin UI) - SMTP_HOST=${SMTP_HOST:-} - SMTP_PORT=${SMTP_PORT:-587} - SMTP_USER=${SMTP_USER:-} - SMTP_PASS=${SMTP_PASS:-} - SMTP_FROM=${SMTP_FROM:-} - SMTP_TLS=${SMTP_TLS:-true} - SMTP_SKIP_VERIFY=${SMTP_SKIP_VERIFY:-false} # Optional: Impressum / Datenschutz (URL oder Markdown-Datei, z. B. per Volume eingebunden) - LEGAL_IMPRINT_URL=${LEGAL_IMPRINT_URL:-} - LEGAL_PRIVACY_URL=${LEGAL_PRIVACY_URL:-} - LEGAL_IMPRINT_CONTENT_FILE=${LEGAL_IMPRINT_CONTENT_FILE:-} - LEGAL_PRIVACY_CONTENT_FILE=${LEGAL_PRIVACY_CONTENT_FILE:-} # Optional: eigene Spracherkennung (Whisper, siehe Dienst "whisper" unten). Ohne STT_URL nutzt # MindSift die Spracherkennung des Browsers. Alles nur hier einstellbar, nicht in der Oberfläche; # Probleme stehen im Log (docker compose logs mindsift whisper). - STT_URL=${STT_URL:-} # z. B. http://whisper:8000 – gesetzt = Server-Modus - STT_MODEL=${STT_MODEL:-deepdml/faster-whisper-large-v3-turbo-ct2} # kleiner/schneller: Systran/faster-whisper-small - STT_LANGUAGE=${STT_LANGUAGE:-de} # Sprachcode, "auto" = automatisch erkennen - STT_API_KEY=${STT_API_KEY:-} # nur falls der Whisper-Server einen verlangt (API_KEY dort) - STT_DISABLED=${STT_DISABLED:-false} # true = Mikrofon überall ausblenden # Schutzwerte für den Server-Modus - STT_MAX_SECONDS=${STT_MAX_SECONDS:-600} # längste Aufnahme in Sekunden (danach stoppt der Browser) - STT_MAX_UPLOAD_MB=${STT_MAX_UPLOAD_MB:-25} # größte Aufnahme in MB - STT_MAX_PARALLEL=${STT_MAX_PARALLEL:-1} # gleichzeitige Erkennungen, weitere warten in der Schlange - STT_PER_USER_PER_HOUR=${STT_PER_USER_PER_HOUR:-60} # Erkennungen pro Benutzer und Stunde - STT_TIMEOUT_SECONDS=${STT_TIMEOUT_SECONDS:-120} # Höchstdauer pro Erkennung inkl. Warten # Optionale Spracherkennung auf dem eigenen Server (speaches mit faster-whisper, nur CPU). # Start: in .env STT_URL=http://whisper:8000 und COMPOSE_PROFILES=whisper setzen, dann # mkdir -p whisper && sudo chown 1000:1000 whisper (der Container läuft als UID 1000) # docker compose up -d # Das Modell (large-v3-turbo ca. 1,6 GB) lädt MindSift beim ersten Start automatisch in ./whisper. # RAM: large-v3-turbo ca. 2 GB, small ca. 1 GB. whisper: image: ghcr.io/speaches-ai/speaches:0.8.3-cpu container_name: mindsift-whisper restart: unless-stopped profiles: ["whisper"] volumes: - ./whisper:/home/ubuntu/.cache/huggingface/hub environment: - WHISPER__COMPUTE_TYPE=int8 # schneller und sparsamer auf der CPU, kaum Qualitätsverlust - STT_MODEL_TTL=-1 # Modell im Speicher halten (sonst nach 5 Min. entladen, nächste Erkennung lädt neu) - ENABLE_UI=false # keine Weboberfläche von speaches - LOG_LEVEL=info # Kein Port nach außen: nur MindSift spricht im Docker-Netz mit dem Dienst.