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>
This commit is contained in:
63
docker-compose.yml
Normal file
63
docker-compose.yml
Normal file
@@ -0,0 +1,63 @@
|
||||
# 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:
|
||||
Reference in New Issue
Block a user