From 1527f4ffe7853415fdf8f6f5ac0774f96534d15c Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Thu, 5 Mar 2026 17:01:30 +0100 Subject: [PATCH] =?UTF-8?q?refactor:=20Camunda=20l=C3=B6schen,=20Jitsi/Mat?= =?UTF-8?q?rix/Voice=20nach=20Lehrer=20verschieben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Camunda war nie aktiv (nur Frontend-Stub ohne Backend) — komplett entfernt. Jitsi (5 Services), Synapse (2 Services) und Voice Service werden ausschließlich vom Lehrer-Stack genutzt und gehören nicht in Core. Nginx-Container-Namen auf bp-lehrer-jitsi-* aktualisiert (shared Network). Co-Authored-By: Claude Opus 4.6 --- docker-compose.yml | 298 +------------------------------------- nginx/conf.d/default.conf | 18 +-- 2 files changed, 10 insertions(+), 306 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index f76e227..6208432 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,17 +19,6 @@ volumes: valkey_data: qdrant_data: minio_data: - # Communication - synapse_data: - synapse_db_data: - jitsi_web_config: - jitsi_web_crontabs: - jitsi_transcripts: - jitsi_prosody_config: - jitsi_prosody_plugins: - jitsi_jicofo_config: - jitsi_jvb_config: - jibri_recordings: # CI/CD gitea_data: gitea_config: @@ -42,7 +31,6 @@ volumes: erpnext_sites: erpnext_logs: # Services - voice_session_data: embedding_models: services: @@ -195,26 +183,6 @@ services: networks: - breakpilot-network - synapse-db: - image: postgres:16-alpine - container_name: bp-core-synapse-db - profiles: [chat] - environment: - POSTGRES_USER: synapse - POSTGRES_PASSWORD: ${SYNAPSE_DB_PASSWORD:-synapse_secret} - POSTGRES_DB: synapse - POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=C --lc-ctype=C" - volumes: - - synapse_db_data:/var/lib/postgresql/data - healthcheck: - test: ["CMD-SHELL", "pg_isready -U synapse"] - interval: 5s - timeout: 5s - retries: 5 - restart: unless-stopped - networks: - - breakpilot-network - # ========================================================= # VECTOR DB & OBJECT STORAGE # ========================================================= @@ -453,7 +421,7 @@ services: - "8099:8099" environment: PORT: 8099 - CHECK_SERVICES: "postgres:5432,valkey:6379,qdrant:6333,minio:9000,backend-core:8000,rag-service:8097,embedding-service:8087,voice-service:8091" + CHECK_SERVICES: "postgres:5432,valkey:6379,qdrant:6333,minio:9000,backend-core:8000,rag-service:8097,embedding-service:8087" depends_on: postgres: condition: service_healthy @@ -466,199 +434,6 @@ services: networks: - breakpilot-network - # ========================================================= - # COMMUNICATION - # ========================================================= - synapse: - image: matrixdotorg/synapse:latest - container_name: bp-core-synapse - profiles: [chat] - ports: - - "8008:8008" - - "8448:8448" - volumes: - - synapse_data:/data - environment: - SYNAPSE_SERVER_NAME: ${SYNAPSE_SERVER_NAME:-macmini} - SYNAPSE_REPORT_STATS: "no" - SYNAPSE_NO_TLS: "true" - SYNAPSE_ENABLE_REGISTRATION: ${SYNAPSE_ENABLE_REGISTRATION:-true} - SYNAPSE_LOG_LEVEL: ${SYNAPSE_LOG_LEVEL:-WARNING} - UID: "1000" - GID: "1000" - healthcheck: - test: ["CMD", "curl", "-f", "http://127.0.0.1:8008/health"] - interval: 30s - timeout: 10s - start_period: 30s - retries: 3 - depends_on: - synapse-db: - condition: service_healthy - restart: unless-stopped - networks: - - breakpilot-network - - jitsi-web: - image: jitsi/web:stable-9823 - container_name: bp-core-jitsi-web - expose: - - "80" - volumes: - - jitsi_web_config:/config - - jitsi_web_crontabs:/var/spool/cron/crontabs - - jitsi_transcripts:/usr/share/jitsi-meet/transcripts - environment: - ENABLE_XMPP_WEBSOCKET: "true" - ENABLE_COLIBRI_WEBSOCKET: "true" - XMPP_DOMAIN: ${XMPP_DOMAIN:-meet.jitsi} - XMPP_BOSH_URL_BASE: http://jitsi-xmpp:5280 - XMPP_MUC_DOMAIN: ${XMPP_MUC_DOMAIN:-muc.meet.jitsi} - XMPP_GUEST_DOMAIN: ${XMPP_GUEST_DOMAIN:-guest.meet.jitsi} - TZ: ${TZ:-Europe/Berlin} - PUBLIC_URL: ${JITSI_PUBLIC_URL:-https://macmini:8443} - JICOFO_AUTH_USER: focus - ENABLE_AUTH: ${JITSI_ENABLE_AUTH:-false} - ENABLE_GUESTS: "true" - ENABLE_RECORDING: "true" - ENABLE_LIVESTREAMING: "false" - DISABLE_HTTPS: "true" - APP_NAME: "BreakPilot Meet" - NATIVE_APP_NAME: "BreakPilot Meet" - PROVIDER_NAME: "BreakPilot" - depends_on: - - jitsi-xmpp - networks: - breakpilot-network: - aliases: - - meet.jitsi - - jitsi-xmpp: - image: jitsi/prosody:stable-9823 - container_name: bp-core-jitsi-xmpp - volumes: - - jitsi_prosody_config:/config - - jitsi_prosody_plugins:/prosody-plugins-custom - environment: - XMPP_DOMAIN: ${XMPP_DOMAIN:-meet.jitsi} - XMPP_AUTH_DOMAIN: ${XMPP_AUTH_DOMAIN:-auth.meet.jitsi} - XMPP_MUC_DOMAIN: ${XMPP_MUC_DOMAIN:-muc.meet.jitsi} - XMPP_INTERNAL_MUC_DOMAIN: ${XMPP_INTERNAL_MUC_DOMAIN:-internal-muc.meet.jitsi} - XMPP_GUEST_DOMAIN: ${XMPP_GUEST_DOMAIN:-guest.meet.jitsi} - XMPP_RECORDER_DOMAIN: ${XMPP_RECORDER_DOMAIN:-recorder.meet.jitsi} - XMPP_CROSS_DOMAIN: "true" - TZ: ${TZ:-Europe/Berlin} - JICOFO_AUTH_USER: focus - JICOFO_AUTH_PASSWORD: ${JICOFO_AUTH_PASSWORD:-jicofo_secret} - JVB_AUTH_USER: jvb - JVB_AUTH_PASSWORD: ${JVB_AUTH_PASSWORD:-jvb_secret} - JIBRI_XMPP_USER: jibri - JIBRI_XMPP_PASSWORD: ${JIBRI_XMPP_PASSWORD:-jibri_secret} - JIBRI_RECORDER_USER: recorder - JIBRI_RECORDER_PASSWORD: ${JIBRI_RECORDER_PASSWORD:-recorder_secret} - LOG_LEVEL: ${XMPP_LOG_LEVEL:-warn} - PUBLIC_URL: ${JITSI_PUBLIC_URL:-https://macmini:8443} - ENABLE_AUTH: ${JITSI_ENABLE_AUTH:-false} - ENABLE_GUESTS: "true" - restart: unless-stopped - networks: - breakpilot-network: - aliases: - - xmpp.meet.jitsi - - jitsi-jicofo: - image: jitsi/jicofo:stable-9823 - container_name: bp-core-jitsi-jicofo - volumes: - - jitsi_jicofo_config:/config - environment: - XMPP_DOMAIN: ${XMPP_DOMAIN:-meet.jitsi} - XMPP_AUTH_DOMAIN: ${XMPP_AUTH_DOMAIN:-auth.meet.jitsi} - XMPP_MUC_DOMAIN: ${XMPP_MUC_DOMAIN:-muc.meet.jitsi} - XMPP_INTERNAL_MUC_DOMAIN: ${XMPP_INTERNAL_MUC_DOMAIN:-internal-muc.meet.jitsi} - XMPP_SERVER: jitsi-xmpp - JICOFO_AUTH_USER: focus - JICOFO_AUTH_PASSWORD: ${JICOFO_AUTH_PASSWORD:-jicofo_secret} - TZ: ${TZ:-Europe/Berlin} - ENABLE_AUTH: ${JITSI_ENABLE_AUTH:-false} - AUTH_TYPE: internal - ENABLE_AUTO_OWNER: "true" - depends_on: - - jitsi-xmpp - restart: unless-stopped - networks: - - breakpilot-network - - jitsi-jvb: - image: jitsi/jvb:stable-9823 - container_name: bp-core-jitsi-jvb - ports: - - "10000:10000/udp" - - "8080:8080" - volumes: - - jitsi_jvb_config:/config - environment: - XMPP_DOMAIN: ${XMPP_DOMAIN:-meet.jitsi} - XMPP_AUTH_DOMAIN: ${XMPP_AUTH_DOMAIN:-auth.meet.jitsi} - XMPP_INTERNAL_MUC_DOMAIN: ${XMPP_INTERNAL_MUC_DOMAIN:-internal-muc.meet.jitsi} - XMPP_SERVER: jitsi-xmpp - JVB_AUTH_USER: jvb - JVB_AUTH_PASSWORD: ${JVB_AUTH_PASSWORD:-jvb_secret} - JVB_PORT: 10000 - JVB_STUN_SERVERS: ${JVB_STUN_SERVERS:-stun.l.google.com:19302} - TZ: ${TZ:-Europe/Berlin} - PUBLIC_URL: ${JITSI_PUBLIC_URL:-https://macmini:8443} - COLIBRI_REST_ENABLED: "true" - ENABLE_COLIBRI_WEBSOCKET: "true" - depends_on: - - jitsi-xmpp - restart: unless-stopped - networks: - - breakpilot-network - - jibri: - build: - context: ./docker/jibri - dockerfile: Dockerfile - container_name: bp-core-jibri - volumes: - - jibri_recordings:/recordings - - /dev/shm:/dev/shm - shm_size: 2gb - cap_add: - - SYS_ADMIN - - NET_BIND_SERVICE - environment: - XMPP_DOMAIN: ${XMPP_DOMAIN:-meet.jitsi} - XMPP_AUTH_DOMAIN: ${XMPP_AUTH_DOMAIN:-auth.meet.jitsi} - XMPP_INTERNAL_MUC_DOMAIN: ${XMPP_INTERNAL_MUC_DOMAIN:-internal-muc.meet.jitsi} - XMPP_RECORDER_DOMAIN: ${XMPP_RECORDER_DOMAIN:-recorder.meet.jitsi} - XMPP_SERVER: jitsi-xmpp - XMPP_MUC_DOMAIN: ${XMPP_MUC_DOMAIN:-muc.meet.jitsi} - JIBRI_XMPP_USER: jibri - JIBRI_XMPP_PASSWORD: ${JIBRI_XMPP_PASSWORD:-jibri_secret} - JIBRI_RECORDER_USER: recorder - JIBRI_RECORDER_PASSWORD: ${JIBRI_RECORDER_PASSWORD:-recorder_secret} - JIBRI_BREWERY_MUC: JibriBrewery - JIBRI_RECORDING_DIR: /recordings - JIBRI_FINALIZE_SCRIPT: /finalize.sh - TZ: ${TZ:-Europe/Berlin} - DISPLAY: ":0" - RESOLUTION: "1920x1080" - MINIO_ENDPOINT: minio:9000 - MINIO_ACCESS_KEY: ${MINIO_ROOT_USER:-breakpilot} - MINIO_SECRET_KEY: ${MINIO_ROOT_PASSWORD:-breakpilot123} - MINIO_BUCKET: ${MINIO_BUCKET:-breakpilot-recordings} - BACKEND_WEBHOOK_URL: http://backend-core:8000/api/recordings/webhook - depends_on: - - jitsi-xmpp - - minio - profiles: - - recording - restart: unless-stopped - networks: - - breakpilot-network - # ========================================================= # DEVOPS & CI/CD # ========================================================= @@ -780,38 +555,6 @@ services: networks: - breakpilot-network - # ========================================================= - # WORKFLOW ENGINE - # ========================================================= - camunda: - image: camunda/camunda-bpm-platform:7.21.0 - container_name: bp-core-camunda - ports: - - "8089:8080" - environment: - DB_DRIVER: org.postgresql.Driver - DB_URL: jdbc:postgresql://postgres:5432/${POSTGRES_DB:-breakpilot_db} - DB_USERNAME: ${POSTGRES_USER:-breakpilot} - DB_PASSWORD: ${POSTGRES_PASSWORD:-breakpilot123} - DB_VALIDATE_ON_BORROW: "true" - WAIT_FOR: postgres:5432 - CAMUNDA_BPM_ADMIN_USER_ID: ${CAMUNDA_ADMIN_USER:-admin} - CAMUNDA_BPM_ADMIN_USER_PASSWORD: ${CAMUNDA_ADMIN_PASSWORD:-admin} - depends_on: - postgres: - condition: service_healthy - healthcheck: - test: ["CMD", "curl", "-f", "http://127.0.0.1:8080/camunda/api/engine"] - interval: 30s - timeout: 10s - start_period: 60s - retries: 5 - profiles: - - bpmn - restart: unless-stopped - networks: - - breakpilot-network - # ========================================================= # DOCUMENTATION & UTILITIES # ========================================================= @@ -846,45 +589,6 @@ services: networks: - breakpilot-network - # ========================================================= - # VOICE SERVICE - # ========================================================= - voice-service: - build: - context: ./voice-service - dockerfile: Dockerfile - container_name: bp-core-voice-service - platform: linux/arm64 - expose: - - "8091" - volumes: - - voice_session_data:/app/data/sessions - environment: - PORT: 8091 - DATABASE_URL: postgresql://${POSTGRES_USER:-breakpilot}:${POSTGRES_PASSWORD:-breakpilot123}@postgres:5432/${POSTGRES_DB:-breakpilot_db} - VALKEY_URL: redis://valkey:6379/0 - KLAUSUR_SERVICE_URL: http://bp-lehrer-klausur-service:8086 - OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://host.docker.internal:11434} - OLLAMA_VOICE_MODEL: ${OLLAMA_VOICE_MODEL:-llama3.2} - ENVIRONMENT: ${ENVIRONMENT:-development} - JWT_SECRET: ${JWT_SECRET:-your-super-secret-jwt-key-change-in-production} - extra_hosts: - - "host.docker.internal:host-gateway" - depends_on: - postgres: - condition: service_healthy - valkey: - condition: service_started - healthcheck: - test: ["CMD", "curl", "-f", "http://127.0.0.1:8091/health"] - interval: 30s - timeout: 10s - start_period: 60s - retries: 3 - restart: unless-stopped - networks: - - breakpilot-network - # ========================================================= # NIGHT SCHEDULER # ========================================================= diff --git a/nginx/conf.d/default.conf b/nginx/conf.d/default.conf index 3afb427..2742c6d 100644 --- a/nginx/conf.d/default.conf +++ b/nginx/conf.d/default.conf @@ -32,7 +32,7 @@ server { # Jitsi WebSocket endpoints location /xmpp-websocket { - set $upstream_jitsi bp-core-jitsi-web:80; + set $upstream_jitsi bp-lehrer-jitsi-web:80; proxy_pass http://$upstream_jitsi; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; @@ -46,7 +46,7 @@ server { } location /colibri-ws { - set $upstream_jvb bp-core-jitsi-jvb:9090; + set $upstream_jvb bp-lehrer-jitsi-jvb:9090; proxy_pass http://$upstream_jvb; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; @@ -60,7 +60,7 @@ server { } location /http-bind { - set $upstream_jitsi bp-core-jitsi-web:80; + set $upstream_jitsi bp-lehrer-jitsi-web:80; proxy_pass http://$upstream_jitsi; proxy_http_version 1.1; proxy_set_header Host $host; @@ -71,7 +71,7 @@ server { # Jitsi static assets location ~ ^/(css|images|fonts|sounds|static|libs|lang|connection_optimization)/ { - set $upstream_jitsi bp-core-jitsi-web:80; + set $upstream_jitsi bp-lehrer-jitsi-web:80; proxy_pass http://$upstream_jitsi; proxy_http_version 1.1; proxy_set_header Host $host; @@ -81,7 +81,7 @@ server { } location ~ ^/(config\.js|interface_config\.js|logging_config\.js|external_api\.js|external_api\.min\.js|favicon\.ico|robots\.txt|manifest\.json|pwa-worker\.js) { - set $upstream_jitsi bp-core-jitsi-web:80; + set $upstream_jitsi bp-lehrer-jitsi-web:80; proxy_pass http://$upstream_jitsi; proxy_http_version 1.1; proxy_set_header Host $host; @@ -91,7 +91,7 @@ server { } location /jitsi/ { - set $upstream_jitsi bp-core-jitsi-web:80; + set $upstream_jitsi bp-lehrer-jitsi-web:80; rewrite ^/jitsi(/.*)$ $1 break; proxy_pass http://$upstream_jitsi; proxy_http_version 1.1; @@ -670,7 +670,7 @@ server { ssl_prefer_server_ciphers off; location /xmpp-websocket { - set $upstream_jitsi bp-core-jitsi-web:80; + set $upstream_jitsi bp-lehrer-jitsi-web:80; proxy_pass http://$upstream_jitsi; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; @@ -684,7 +684,7 @@ server { } location /colibri-ws { - set $upstream_jvb bp-core-jitsi-jvb:9090; + set $upstream_jvb bp-lehrer-jitsi-jvb:9090; proxy_pass http://$upstream_jvb; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; @@ -698,7 +698,7 @@ server { } location / { - set $upstream_jitsi bp-core-jitsi-web:80; + set $upstream_jitsi bp-lehrer-jitsi-web:80; proxy_pass http://$upstream_jitsi; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade;