# ===================================================================== # TeamVis — All-in-One Self-Hosting (Override für den offiziellen # Supabase-Stack) # ===================================================================== # Dieses Override legt zwei Dienste ÜBER den unveränderten # supabase/docker-Stack (github.com/supabase/supabase → docker/): # - teamvis : die App (gleiches Image wie SaaS, alles via Runtime-ENV) # - caddy : TLS-Ingress für App- und Supabase-Domain (Auto-HTTPS) # # Datei NEBEN die supabase/docker/docker-compose.yml legen (gleiches # Verzeichnis), dann startet `docker compose up -d` beide zusammen. # Service-Namen db/kong/storage stammen aus dem Supabase-Stack. # # WICHTIG zu SMTP: der Supabase-Stack belegt SMTP_* selbst (GoTrue-Mailer, # das TeamVis NICHT nutzt). Damit sich die beiden nicht in die Quere kommen, # liest die App ihre SMTP-Werte aus TEAMVIS_SMTP_*-Variablen — NICHT aus den # SMTP_*-Werten der Supabase-.env. Deshalb hier KEIN env_file, sondern # explizite environment-Map. services: teamvis: image: git.zoesch.de/zfx-services/teamvis:${TEAMVIS_VERSION:-0.12.0} container_name: teamvis-app restart: unless-stopped depends_on: db: condition: service_healthy kong: condition: service_started storage: condition: service_started environment: # Supabase-Anbindung — SUPABASE_PUBLIC_URL muss die ÖFFENTLICHE # HTTPS-URL sein (steht in den Foto-URLs der Karten, next/image # erlaubt nur https auf /storage/v1/object/public/**). SUPABASE_URL: ${SUPABASE_PUBLIC_URL} NEXT_PUBLIC_SUPABASE_URL: ${SUPABASE_PUBLIC_URL} NEXT_PUBLIC_SUPABASE_ANON_KEY: ${ANON_KEY} SUPABASE_SERVICE_ROLE_KEY: ${SERVICE_ROLE_KEY} # App-Session (>= 32 Zeichen, pro Instanz EINMALIG). SESSION_SECRET: ${SESSION_SECRET} # Öffentliche Basis-URL der Karten/QR/vCard. NEXT_PUBLIC_SITE_URL: ${SITE_URL} # SMTP der App (eigene Variablen, s.o.). Fehlt es, landen # Magic-Links nur im Container-Log. SMTP_HOST: ${TEAMVIS_SMTP_HOST:-} SMTP_PORT: ${TEAMVIS_SMTP_PORT:-587} SMTP_SECURE: ${TEAMVIS_SMTP_SECURE:-} SMTP_USER: ${TEAMVIS_SMTP_USER:-} SMTP_PASS: ${TEAMVIS_SMTP_PASS:-} SMTP_FROM_EMAIL: ${TEAMVIS_SMTP_FROM_EMAIL:-noreply@example.com} SMTP_FROM_NAME: ${TEAMVIS_SMTP_FROM_NAME:-TeamVis} # Optional zusätzliche next/image-Hosts (i.d.R. nicht nötig, da # next.config bereits jeden https-Host auf dem public-Storage-Pfad # erlaubt). SUPABASE_IMAGE_HOSTS: ${SUPABASE_IMAGE_HOSTS:-} expose: - "3000" caddy: image: caddy:2-alpine container_name: teamvis-caddy restart: unless-stopped depends_on: - teamvis - kong ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy-data:/data - caddy-config:/config volumes: caddy-data: caddy-config: