gwoe-antragspruefer/docker-compose.yml
Dotty Dotter 88211c5708 fix(tour, compose): ELEVENLABS_*-Vars in beide Compose-Files reichen
Bug: ELEVENLABS_API_KEY + ELEVENLABS_VOICE_ID waren zwar in der .env
gesetzt, aber das environment-Block der Compose-Files hat sie nicht
in den Container weitergereicht. Effekt:
- Auf dev wirkte die Tour mit ElevenLabs-Stimme — aber nur weil 23
  fertige MP3s im data/tour_audio-Cache lagen (vom fruehen Test-Run).
  Neue Stationen waeren auf Browser-TTS gefallen.
- Auf prod gab es keinen Cache und keinen API-Key im Container —
  die Tour lief komplett auf Browser-TTS.

Fix: ELEVENLABS_API_KEY, ELEVENLABS_VOICE_ID, ELEVENLABS_MODEL_ID
ins environment-Block beider Compose-Files. Default-Voice bleibt
Domi (AZnzlk1XvdvUeBnXmlld), Model bleibt eleven_multilingual_v2.
2026-05-10 13:25:36 +02:00

71 lines
3.0 KiB
YAML

services:
gwoe-antragspruefer:
build: .
container_name: gwoe-antragspruefer
restart: unless-stopped
stop_grace_period: 15m # Laufende LLM-Jobs zu Ende laufen lassen
environment:
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY}
- KEYCLOAK_URL=https://sso.toppyr.de
- KEYCLOAK_REALM=collaboration
- KEYCLOAK_CLIENT_ID=gwoe-antragspruefer
- KEYCLOAK_ADMIN_USER=${KEYCLOAK_ADMIN_USER}
- KEYCLOAK_ADMIN_PASSWORD=${KEYCLOAK_ADMIN_PASSWORD}
# Embedding-Modell-Switch (#123 Phase 1/2)
- EMBEDDING_MODEL_WRITE=${EMBEDDING_MODEL_WRITE:-text-embedding-v4}
- EMBEDDING_MODEL_READ=${EMBEDDING_MODEL_READ:-text-embedding-v3}
# SMTP für E-Mail-Benachrichtigungen (#124)
- SMTP_HOST=${SMTP_HOST:-smtp.1blu.de}
- SMTP_PORT=${SMTP_PORT:-465}
- SMTP_USER=${SMTP_USER}
- SMTP_PASSWORD=${SMTP_PASSWORD}
- SMTP_FROM_EMAIL=${SMTP_FROM_EMAIL:-noreply@toppyr.de}
- SMTP_FROM_NAME=${SMTP_FROM_NAME:-GWÖ-Antragsprüfer}
- UNSUBSCRIBE_SECRET=${UNSUBSCRIBE_SECRET}
- BASE_URL=${BASE_URL:-https://gwoe.toppyr.de}
# Gitea-Anbindung fuer Feedback-Widget (#149-Folge)
- GITEA_TOKEN=${GITEA_TOKEN}
- GITEA_API_URL=${GITEA_API_URL:-https://repo.toppyr.de/api/v1}
- GITEA_REPO_OWNER=${GITEA_REPO_OWNER:-tobias}
- GITEA_REPO_NAME=${GITEA_REPO_NAME:-gwoe-antragspruefer}
# ElevenLabs-TTS fuer die Tour-Sprachausgabe (#185, ADR 0014).
# Ohne API-Key faellt die Tour auf Browser-TTS (speechSynthesis) zurueck.
- ELEVENLABS_API_KEY=${ELEVENLABS_API_KEY}
- ELEVENLABS_VOICE_ID=${ELEVENLABS_VOICE_ID:-AZnzlk1XvdvUeBnXmlld}
- ELEVENLABS_MODEL_ID=${ELEVENLABS_MODEL_ID:-eleven_multilingual_v2}
volumes:
- ./data:/app/data
- ./reports:/app/reports
labels:
- "traefik.enable=true"
- "traefik.http.routers.gwoe.rule=Host(`gwoe.toppyr.de`)"
- "traefik.http.routers.gwoe.entrypoints=websecure"
- "traefik.http.routers.gwoe.tls=true"
- "traefik.http.routers.gwoe.tls.certresolver=letsencrypt"
- "traefik.http.services.gwoe.loadbalancer.server.port=8000"
networks:
- collaboration_collaboration
# Doku-Hosting (#62 Phase 2): mkdocs-Output als statische Site.
# URL: https://docs.toppyr.de/gwoe-antragspruefer/
# Update: mkdocs build && scp -r site/* vserver:/opt/gwoe-antragspruefer/docs-site/
gwoe-docs:
image: nginx:alpine
container_name: gwoe-docs
restart: unless-stopped
volumes:
- ./docs-site:/usr/share/nginx/html/gwoe-antragspruefer:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.gwoe-docs.rule=Host(`docs.toppyr.de`)"
- "traefik.http.routers.gwoe-docs.entrypoints=websecure"
- "traefik.http.routers.gwoe-docs.tls=true"
- "traefik.http.routers.gwoe-docs.tls.certresolver=letsencrypt"
- "traefik.http.services.gwoe-docs.loadbalancer.server.port=80"
networks:
- collaboration_collaboration
networks:
collaboration_collaboration:
external: true