Files
Onyscribe-Admin/docker-compose.yml
RubenRWU 7d8c226da2 Onyscribe Admin: Initialer Stand
Admin-Plattform für die Tenants von Onyscribe: Editor mit Live-Vorschau (echter Core in Sandbox), Versionen, KI-Agent (Cortecs),
OIDC-Abgleich über die Login-Developer-API, Deploy-Engine (Mittwald, gesperrt ohne DEPLOY_LIVE, Freigabe pro Tenant),
Core-Vertrag (Schema/Manifest), Core-Releases mit Kompatibilitätsprüfung, Canary-Rollout und Rollback, Zustandsabgleich.
Runbook: docs/RUNBOOK_PARALLELTEST.md

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-15 15:30:26 +02:00

64 lines
3.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Onyscribe Admin – Admin-Oberfläche + Postgres. Für Coolify (Docker-Compose-Ressource) und lokal.
# Pflicht-Env: POSTGRES_PASSWORD, SECRET_KEY
# SECRET_KEY erzeugen: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
# Backups: Volume `pgdata` (Postgres) sichern – darin liegt ALLES (Tenants, Versionen, verschlüsselte Secrets).
# ACHTUNG: SECRET_KEY ebenfalls sichern – ohne ihn sind die Secrets in der DB nicht entschlüsselbar.
services:
admin:
build:
context: .
# Standard: vendored Core (lokal). Produktion: ADMIN_DOCKERFILE=Dockerfile.fromcore + CORE_IMAGE=<registry>/transkript-platform:<tag>
dockerfile: ${ADMIN_DOCKERFILE:-Dockerfile}
args:
CORE_IMAGE: ${CORE_IMAGE:-scratch}
restart: unless-stopped
depends_on:
db:
condition: service_healthy
environment:
DATABASE_URL: postgresql+psycopg://onyscribe:${POSTGRES_PASSWORD:?POSTGRES_PASSWORD setzen}@db:5432/onyscribe
SECRET_KEY: ${SECRET_KEY:?SECRET_KEY setzen}
PORT: "8300"
# Login der Admin-Plattform (login.onyva.dev). Mit AUTH_ENABLED=true sind Client + Zugriffsregel Pflicht.
AUTH_ENABLED: ${AUTH_ENABLED:-false}
OIDC_ISSUER: ${OIDC_ISSUER:-https://login.onyva.dev}
OIDC_CLIENT_ID: ${OIDC_CLIENT_ID:-}
OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET:-}
OIDC_REDIRECT_URI: ${OIDC_REDIRECT_URI:-}
OIDC_LOGOUT_REDIRECT_URI: ${OIDC_LOGOUT_REDIRECT_URI:-}
APP_COOKIE_SECURE: ${APP_COOKIE_SECURE:-true}
ADMIN_ALLOWED_EMAILS: ${ADMIN_ALLOWED_EMAILS:-}
ADMIN_REQUIRED_ROLE: ${ADMIN_REQUIRED_ROLE:-}
# Deploys: ohne DEPLOY_LIVE=true nur Dry-Run. Token nur setzen, wenn lesende Dry-Run-Aufrufe gewünscht sind.
DEPLOY_LIVE: ${DEPLOY_LIVE:-false}
# Welche Tenants dürfen LIVE angefasst werden (Mittwald + Login-API)? leer = keiner · demo-admin,x = diese · * = alle
DEPLOY_ALLOWED_TENANTS: ${DEPLOY_ALLOWED_TENANTS:-}
MITTWALD_API_TOKEN: ${MITTWALD_API_TOKEN:-}
# Core-CI meldet neue Images hierher (POST /api/core/releases, Bearer-Token)
CORE_RELEASE_TOKEN: ${CORE_RELEASE_TOKEN:-}
# OIDC-Clients automatisch verwalten (Developer-API von login.onyva.dev). Key = Admin-Passwort-Äquivalent!
ONYVA_LOGIN_API_KEY: ${ONYVA_LOGIN_API_KEY:-}
OIDC_SYNC_LIVE: ${OIDC_SYNC_LIVE:-false} # true erlaubt Schreiben im Login-System (auch ohne DEPLOY_LIVE)
# Optional statt Eintrag unter Einstellungen → Geteilte Secrets
CORTECS_API_KEY: ${CORTECS_API_KEY:-}
expose:
- "8300" # Coolify: Domain auf Service „admin“ legen, Port 8300 (https://<host>:8300). Lokal veröffentlicht docker-compose.override.yml den Port.
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: onyscribe
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD setzen}
POSTGRES_DB: onyscribe
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U onyscribe -d onyscribe"]
interval: 5s
timeout: 5s
retries: 10
volumes:
pgdata: