# LOCAL DEVELOPMENT ONLY name: intranet-local services: web: build: &app-build context: . dockerfile: Dockerfile restart: unless-stopped ports: - "127.0.0.1:8080:80" environment: &app-environment TZ: Europe/Berlin INTRANET_FQDN: "${INTRANET_FQDN:-localhost:8080}" DB_HOST: db DB_PORT: "5432" DB_NAME: "${DB_NAME:-intranet}" DB_USER: "${DB_USER:-intranet}" DB_PASSWORD: "${DB_PASSWORD:-local-dev-password}" SMTP_HOST: "${SMTP_HOST:-}" SMTP_PORT: "${SMTP_PORT:-}" SMTP_USER: "${SMTP_USER:-}" SMTP_PASSWORD: "${SMTP_PASSWORD:-}" ADMIN_EMAIL: "${ADMIN_EMAIL:-}" SMS_GATEWAY_URL: "${SMS_GATEWAY_URL:-}" HA_BASE_URL: "${HA_BASE_URL:-}" HA_TOKEN: "${HA_TOKEN:-}" OPENWEATHER_API_KEY: "${OPENWEATHER_API_KEY:-}" VBB_ACCESS_ID: "${VBB_ACCESS_ID:-}" OLLAMA_GATEWAY_URL: "${OLLAMA_GATEWAY_URL:-https://ollama.pelpino.de}" OLLAMA_API_KEY: "${OLLAMA_API_KEY:-}" OLLAMA_AUTH_HEADER: "${OLLAMA_AUTH_HEADER:-Authorization}" OLLAMA_MODEL: "${OLLAMA_MODEL:-qwen3.8:27b}" OLLAMA_API_STYLE: "${OLLAMA_API_STYLE:-openai}" OLLAMA_TIMEOUT_SECONDS: "${OLLAMA_TIMEOUT_SECONDS:-600}" CONTENTPANEL_JOB_TIMEOUT_SECONDS: "${CONTENTPANEL_JOB_TIMEOUT_SECONDS:-3600}" OLLAMA_MAX_INPUT_CHARS: "${OLLAMA_MAX_INPUT_CHARS:-45000}" OLLAMA_CONTEXT_LENGTH: "${OLLAMA_CONTEXT_LENGTH:-32768}" CONTENTPANEL_MAX_INPUT_PAGES: "${CONTENTPANEL_MAX_INPUT_PAGES:-10}" CONTENTPANEL_MAX_RENDERED_PAGES: "${CONTENTPANEL_MAX_RENDERED_PAGES:-10}" CONTENTPANEL_RENDER_SCALE: "${CONTENTPANEL_RENDER_SCALE:-3}" CKAL_XLSX_DIR: /data/ckal-xlsx depends_on: db: condition: service_healthy command: > sh -c "printf '%s\n' 'session.cookie_secure = 0' > /usr/local/etc/php/conf.d/zz-local.ini && exec apache2-foreground" volumes: - ./web:/var/www/html - profile_pictures:/var/www/html/intranet_repo/general_files/profile_pictures - content_news:/var/www/html/intranet_repo/projects/contentpanel/insertion/news - seelsorge_data:/var/www/html/intranet_repo/projects/seelsorge/data - dashboard_month:/var/www/html/intranet_repo/projects/dashboard/month - ckal_xlsx:/data/ckal-xlsx - calendar_pdf:/var/www/html/pdf:ro networks: - app contentpanel-worker: build: *app-build restart: unless-stopped init: true user: "33:33" command: ["php", "/opt/intranet/worker/contentpanel_aushang/queue.php"] environment: *app-environment healthcheck: disable: true depends_on: db: condition: service_healthy volumes: - ./web:/var/www/html:ro - content_news:/var/www/html/intranet_repo/projects/contentpanel/insertion/news networks: - app scheduler: build: context: . dockerfile: Dockerfile restart: unless-stopped init: true user: "33:33" command: - /bin/sh - -ec - | if [ -z "$${CKAL_USERNAME}" ] || [ -z "$${CKAL_PASSWORD}" ] || [ -z "$${CKAL_CALENDAR_URL}" ]; then echo "Scheduler wartet: CKAL_USERNAME, CKAL_PASSWORD und CKAL_CALENDAR_URL sind nicht gesetzt." exec sleep infinity fi exec /opt/intranet/docker/scheduler.py shm_size: "512m" healthcheck: disable: true environment: TZ: Europe/Berlin HOME: /tmp/intranet-worker XDG_CACHE_HOME: /tmp/intranet-worker-cache PLAYWRIGHT_BROWSERS_PATH: /ms-playwright INTRANET_FQDN: "${INTRANET_FQDN:-localhost:8080}" DB_HOST: db DB_PORT: "5432" DB_NAME: "${DB_NAME:-intranet}" DB_USER: "${DB_USER:-intranet}" DB_PASSWORD: "${DB_PASSWORD:-local-dev-password}" SMTP_HOST: "${SMTP_HOST:-}" SMTP_PORT: "${SMTP_PORT:-}" SMTP_USER: "${SMTP_USER:-}" SMTP_PASSWORD: "${SMTP_PASSWORD:-}" ADMIN_EMAIL: "${ADMIN_EMAIL:-}" CKAL_USERNAME: "${CKAL_USERNAME:-}" CKAL_PASSWORD: "${CKAL_PASSWORD:-}" CKAL_CALENDAR_URL: "${CKAL_CALENDAR_URL:-}" CKAL_XLSX_DIR: /data/ckal-xlsx PDF_OUTPUT: /data/pdf/terminuebersicht.pdf DASHBOARD_MONTH_DIR: /var/www/html/intranet_repo/projects/dashboard/month CALENDAR_INTERVAL_SECONDS: "${CALENDAR_INTERVAL_SECONDS:-60}" STRATO_SSH_HOST: "${STRATO_SSH_HOST:-}" STRATO_SSH_PORT: "${STRATO_SSH_PORT:-}" STRATO_SSH_USER: "${STRATO_SSH_USER:-}" STRATO_REMOTE_PATH: "${STRATO_REMOTE_PATH:-}" STRATO_SSH_KEY_FILE: /run/secrets/strato_ed25519 STRATO_KNOWN_HOSTS_FILE: /run/secrets/known_hosts STRATO_SYNC_ENABLED: "${STRATO_SYNC_ENABLED:-false}" BRANDSCHUTZ_MAIL_ENABLED: "${BRANDSCHUTZ_MAIL_ENABLED:-false}" depends_on: db: condition: service_healthy volumes: - dashboard_month:/var/www/html/intranet_repo/projects/dashboard/month - ckal_xlsx:/data/ckal-xlsx - calendar_pdf:/data/pdf - scheduler_state:/data/state secrets: - source: strato_ed25519 target: strato_ed25519 - source: strato_known_hosts target: known_hosts networks: - app db: image: pgvector/pgvector:pg18 restart: unless-stopped ports: - "127.0.0.1:5432:5432" environment: TZ: Europe/Berlin POSTGRES_DB: "${DB_NAME:-intranet}" POSTGRES_USER: "${DB_USER:-intranet}" POSTGRES_PASSWORD: "${DB_PASSWORD:-local-dev-password}" volumes: - postgres_data:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -U \"$${POSTGRES_USER}\" -d \"$${POSTGRES_DB}\""] interval: 5s timeout: 5s retries: 12 networks: - app volumes: postgres_data: profile_pictures: content_news: developer_work: seelsorge_data: dashboard_month: ckal_xlsx: calendar_pdf: scheduler_state: networks: app: secrets: strato_ed25519: environment: STRATO_SSH_PRIVATE_KEY strato_known_hosts: environment: STRATO_KNOWN_HOSTS