Überblick
dForge kann auf jeder Infrastruktur selbst gehostet werden, die Docker unterstützt. Ein Standard-Deployment umfasst:
| Service | Standard-Port | Beschreibung |
|---|---|---|
| postgres | 5438 | PostgreSQL 18 — initialisiert das Auth-Schema beim ersten Start automatisch |
| auth | 5002 | Auth-API — JWT, Anwenderverwaltung, E-Mail-Versand |
| api | 5001 | Haupt-Mandanten-API — RPC, Aktionen, Berichte |
| app | 5179 | SvelteKit-Frontend (Dev- oder Produktiv-Build) |
| seq | 5341 | Seq-Log-Viewer (Oberfläche für strukturierte Logs) |
| cli | — | CLI-Tool (On-Demand-Container) |
Voraussetzungen
- Docker und Docker Compose
- PostgreSQL 18+ (oder das mitgelieferte Docker-Image verwenden)
- Mindestens 2 GB RAM (4 GB empfohlen)
- 10 GB Speicherplatz (variiert mit dem Datenvolumen)
Schnellstart mit Docker Compose
git clone <repo-url> && cd dForge-core/docker
# Alles starten
docker compose up -d
# Einen Mandanten mit Beispiel-Modulen anlegen
./setup-tenant.sh mycompany "My Company" admin@mycompany.com
Öffnen Sie http://localhost:5179 und melden Sie sich an.
setup-tenant.sh akzeptiert ein optionales --erp-Flag, um den vollständigen ERP-Stack statt des Standard-CRM-+-HR-Beispiels zu installieren.
Konfiguration
Umgebungsvariablen
Die gesamte Konfiguration lebt in docker/.env (committete Defaults) und docker/.env.local (gitignored, für Geheimnisse).
| Variable | Beschreibung | Default |
|---|---|---|
POSTGRES_USER | PostgreSQL-Benutzer | dforge |
POSTGRES_PASSWORD | PostgreSQL-Passwort | dforge |
POSTGRES_PORT | PostgreSQL-Host-Port | 5438 |
POSTGRES_DB | PostgreSQL-Admin-Datenbank | dforge |
JWT_SECRET | JWT-Signing-Geheimnis (muss mindestens 32 Zeichen lang sein) | (Pflicht) |
JWT_ISSUER | JWT-Issuer-URL | https://auth.dforge.app |
JWT_AUDIENCE | JWT-Audience-URL | https://dforge.app |
EMAIL_PROVIDER | E-Mail-Backend (resend, log) | resend |
EMAIL_FROM_ADDRESS | Absender-Adresse | noreply@dforge.app |
EMAIL_RESEND_API_KEY | Resend-API-Key (in .env.local setzen) | — |
APP_PORT | Frontend-Port | 5179 |
SEQ_URI | Seq-Log-Viewer-URL | http://seq:80 |
Datenbank-Setup
dForge verwendet zwei Arten von Datenbanken:
- Auth-Datenbank — speichert Anwender, Mandanten, Sessions. Wird einmal angelegt.
- Mandanten-Datenbanken — eine pro Mandant. Werden automatisch angelegt, wenn Sie einen Mandanten bereitstellen. Benannt
dforge_{tenant_code}.
Jede Mandanten-Datenbank hat:
dforge-Schema — Metadaten-Tabellen (Entitäten, Ansichten, Sicherheit)- Modul-Schemas (z. B.
crm,hr,fin) — Geschäfts-Datentabellen - Einen dedizierten Datenbank-Benutzer (
tenant_{tenant_code}) mit Zugriff, der auf seine eigene Datenbank beschränkt ist
Mandantenverwaltung
Der cli.sh-Helfer wickelt den CLI-Container ein, sodass Sie nicht jedes Mal docker compose run tippen müssen. Aus dem docker/-Verzeichnis ausführen.
Einen Mandanten anlegen
./cli.sh tenant create --code acme --name "Acme Corp"
Das legt die Mandanten-Datenbank (dforge_acme), einen dedizierten Datenbank-Benutzer (tenant_acme) an und initialisiert das Metadaten-Schema.
Mandanten auflisten
./cli.sh tenant list
Module installieren
./cli.sh module install --code acme --path /modules/crm
./cli.sh module install --code acme --path /modules/hr
./cli.sh module install --code acme --path /modules/fin
# Neu installieren, um Änderungen zu übernehmen
./cli.sh module install --code acme --path /modules/crm --force
# Installierte Module auflisten
./cli.sh module list --code acme
Module werden in den CLI-Container unter /modules/ gemountet.
Alles zurücksetzen
./reset.sh # Löscht alle Daten und beginnt von vorn
Produktiv-Checkliste
Sicherheit
- Starkes, einzigartiges
JWT_SECRETgenerieren - Starkes
DB_ADMIN_PASSWORDsetzen - SSL/TLS für alle Verbindungen aktivieren
- Firewall-Regeln konfigurieren (nur Ports 443, 5179 freigeben)
- Regelmäßige Datenbank-Backups einrichten
- PostgreSQL-Authentifizierungs-Einstellungen prüfen (
pg_hba.conf)
Performance
- Ausreichend RAM für PostgreSQL zuweisen (shared_buffers = 25 % des System-RAM)
- Connection-Pooling konfigurieren, wenn viele Mandanten betrieben werden
- Monitoring einrichten (CPU, Speicher, Festplatte, DB-Verbindungen)
- Log-Rotation konfigurieren
Backups
- Automatisierte PostgreSQL-Backups planen (pg_dump pro Mandanten-Datenbank)
- Backup-Wiederherstellungs-Prozedur testen
- Backups an einem Ort getrennt vom Anwendungs-Server speichern
- Recovery Time Objective (RTO) dokumentieren
Updates
dForge-Releases werden als Docker-Images verteilt. Zum Aktualisieren:
docker compose pull
docker compose up -d
Datenbank-Migrationen laufen beim Start automatisch, wenn eine neue Version Schema-Änderungen erfordert.
Monitoring
Logging
dForge gibt strukturierte Logs nach stdout aus und schickt sie an Seq (den mitgelieferten Log-Viewer unter http://localhost:5341). Für externe Aggregation richten Sie einen beliebigen strukturierten Log-Sammler auf die stdout-Ausgaben der API- und Auth-Container, oder setzen Sie SEQ_URI auf Ihre eigene Seq-Instanz.
Health-Checks
- API:
GET /health— gibt 200 zurück, wenn die API läuft - Auth:
GET /health— gibt 200 zurück, wenn der Auth-Service läuft - Datenbank: Überwachen Sie die PostgreSQL-Verbindungs-Anzahl und die Abfrage-Performance
Skalierung
Für Deployments mit hohem Traffic:
- Horizontal: Mehrere API-Instanzen hinter einem Load Balancer betreiben. Jede Instanz ist zustandslos.
- Datenbank: Read-Replicas für Berichts-Workloads in Erwägung ziehen. Jede Mandanten-Datenbank kann auf einen separaten PostgreSQL-Server verschoben werden.
- Caching: Die API verwendet In-Memory-Metadaten-Caching mit automatischer Invalidierung beim Installieren/Deinstallieren von Modulen.