Files
teamvis-selfhost/deploy/selfhost/docker-compose.override.yml
T
2026-06-25 16:38:31 +02:00

78 lines
2.9 KiB
YAML

# =====================================================================
# 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: