Diese Seite richtet sich an IT-Dienstleister und interne Administratoren, die GutachtenOS auf eigener Infrastruktur betreiben. Endkunden finden unter Betrieb & Hosting eine verständliche Übersicht der drei Betriebsmodelle.
Architektur (Kurzüberblick)
Die Anwendung besteht aus zwei Teilen, die Sie getrennt oder gemeinsam auf einem Server betreiben können:
- Next.js-App — Frontend, Server Actions, API-Routes (Node 22, standalone Docker-Image).
- Supabase-Stack — PostgreSQL mit RLS, Auth (E-Mail/OTP, optional Entra SSO), Object Storage für Fotos und PDFs.
Empfehlung für Produktion: mindestens 2 vCPU und 8 GB RAM auf dem VPS, wenn App und Supabase auf derselben Maschine laufen. Nur die App allein: ca. 2 vCPU / 2 GB RAM für den Container, plus Puffer für Peaks beim PDF-Export.
Installation — Schritt für Schritt
Schritt 01
Server vorbereiten
Linux-VPS mit Docker (Docker Compose, Kubernetes oder Deployment-Plattform Ihrer Wahl). Reverse Proxy mit TLS (Traefik, Caddy, nginx). Firewall: 80/443, SSH nur per Key.
Schritt 02
Datenbank & Auth (Supabase-Stack)
Self-hosted Supabase oder kompatibler Stack: PostgreSQL, GoTrue (Auth), PostgREST, Storage. Eigenes Schema gutachtenos anlegen. Auth-Domain und Redirect-URLs auf Ihre App setzen.
Schritt 03
Migrationen einspielen
Alle SQL-Dateien aus supabase/migrations/ der Lizenz in numerischer Reihenfolge gegen Ihre Postgres-Instanz ausführen (Schema, RLS, Storage-Buckets, Demo optional weglassen).
Schritt 04
App deployen
Next.js als Docker-Image (Dockerfile.build im Repo). Build mit NEXT_PUBLIC_* als Build-Args. Container Port 3000, Health-Check GET /api/health.
Schritt 05
E-Mail & Cron
SMTP oder Resend für Auth-Mails und App-Benachrichtigungen. Täglicher Cron: POST /api/cron/appointment-reminders mit Authorization: Bearer CRON_SECRET.
Schritt 06
Go-Live prüfen
Registrierung, Tenant anlegen, Test-Akte durchlaufen, PDF-Export, optional Integrationen (DATEV, sevDesk, M365) konfigurieren.
Pflicht-Umgebungsvariablen
| Variable | Zweck |
|---|---|
| NEXT_PUBLIC_SUPABASE_URL | URL Ihrer Supabase-/PostgREST-API |
| NEXT_PUBLIC_SUPABASE_ANON_KEY | Öffentlicher Anon-Key (Client) |
| NEXT_PUBLIC_SUPABASE_DB_SCHEMA | PostgreSQL-Schema, Standard: gutachtenos |
| SUPABASE_SERVICE_ROLE_KEY | Service-Role-Key — nur serverseitig, geheim halten |
| NEXT_PUBLIC_APP_URL | Öffentliche App-URL (https://ihre-domain.de) |
Optionale Variablen
| Variable | Zweck |
|---|---|
| RESEND_API_KEY | Transaktionale Mails (Portal, Rechnung, Einladungen) |
| MAIL_FROM | Absender-Adresse für App-Mails |
| AI_PROVIDER | Fallback — Cloud: /admin/system (Plattform-Admin) |
| AZURE_OPENAI_ENDPOINT | Azure OpenAI Resource-URL (ohne trailing slash) |
| AZURE_OPENAI_API_KEY | Azure OpenAI API-Key |
| AZURE_OPENAI_TEXT_DEPLOYMENT | Deployment-Name für Text (z. B. gpt-4o-mini) |
| AZURE_OPENAI_VISION_DEPLOYMENT | Deployment für Vision/OCR (optional, sonst Text-Deployment) |
| AZURE_OPENAI_REGION | Anzeige in KI-Einstellungen, z. B. westeurope |
| OPENAI_API_KEY | Nur bei AI_PROVIDER=openai |
| MISTRAL_API_KEY | Nur bei AI_PROVIDER=mistral |
| CRON_SECRET | Bearer-Token für /api/cron/appointment-reminders |
Microsoft-Integrationen (Outlook, SharePoint, Entra SSO) konfigurieren Sie pro Büro in der App — Azure App-Registration mit Redirect auf /api/integrations/microsoft/callback.
Updates & Migrationen
Neue Versionen bringen ggf. SQL-Migrationen mit. Reihenfolge: Backup → Migrationen auf Postgres → neues App-Image deployen → Smoke-Test (Login, Akte, PDF). Mit Wartungsvertrag übernimmt PXL.systems die Koordination und stellt Release Notes bereit.
Release Notes und Migrations-Reihenfolge erhalten IT-Partner mit der Lizenz bzw. auf Anfrage unter hello@pxl.systems.
Backups & Sicherheit
- Tägliche Postgres-Backups (pg_dump oder Anbieter-Snapshot) — Aufbewahrung nach Ihrer Policy
- Storage-Bucket für Fotos/PDFs separat sichern oder Replikation nutzen
- Service-Role-Key und CRON_SECRET nie im Client oder Git committen
- TLS auf allen öffentlichen Endpunkten; Fail2ban/UFW auf dem VPS empfohlen
- Row Level Security (RLS) ist Pflicht — nicht deaktivieren
Details zum Löschen personenbezogener Daten: Datenschutzerklärung und Löschkonzept auf Anfrage.
Partner-Support
Lizenz, Wartungsvertrag oder Setup-Hilfe: hello@pxl.systems