DocuSeal: Installation mit Docker Compose
Auf einen Blick
| Gilt für | DocuSeal 3.3.x als Docker-Container (Image docuseal/docuseal) mit PostgreSQL 18 auf Linux, z. B. Debian 13 oder Ubuntu 24.04 mit Docker Engine und Compose-Plugin |
|---|---|
| Bereich | Server-Software |
| Dauer | ca. 45–60 Minuten |
| Rechte | Root bzw. Mitglied der Gruppe docker |
| Stand | Oktober 2026 |
DocuSeal mit Docker Compose installieren dauert weniger als eine Stunde: ein Anwendungscontainer, eine PostgreSQL-Datenbank und ein Reverse Proxy für HTTPS. Diese Anleitung baut auf der offiziellen Compose-Datei auf, ergänzt sie um feste Versionen, geschützte Zugangsdaten und einen E-Mail-Server und zeigt die Ersteinrichtung, die Wahl des Dateispeichers und den Ablauf von Updates.

Voraussetzungen
- Linux-Server oder VM mit Docker Engine und Compose-Plugin, siehe Docker. Für kleine und mittlere Unternehmen reichen 2 vCPU, 4 GB RAM und Speicher nach Dokumentenmenge.
- DNS-Name wie
sign.firma.de. Empfänger außerhalb des Unternehmens müssen die Adresse aus dem Internet erreichen – anders als bei rein internen Diensten. - SMTP-Konto für Einladungen und Abschlussmails, siehe SMTP. Die Absenderdomain braucht SPF, DKIM und DMARC, sonst landen Signaturanfragen im Spam.
- Ports 80 und 443 für den Reverse Proxy.
Datenbank wählen
Ohne DATABASE_URL nutzt DocuSeal SQLite im Datenordner – gut für Tests. Für den Produktivbetrieb empfiehlt sich PostgreSQL, wie in der offiziellen Compose-Datei: bessere Parallelität, saubere Dumps, Volltextsuche. MySQL wird ebenfalls unterstützt.
Schritt 1: Verzeichnis und Geheimnisse
sudo mkdir -p /opt/docuseal && cd /opt/docuseal
cat > .env <<EOF
HOST=sign.firma.de
PG_PASSWORD=$(openssl rand -hex 24)
SECRET_KEY_BASE=$(openssl rand -hex 64)
SMTP_PASSWORD=...
EOF
chmod 600 .env
- SECRET_KEY_BASE verschlüsselt Sitzungen und die in der Datenbank gespeicherten Einstellungen – darunter SMTP-Zugang und Signaturzertifikate. Ohne diesen Wert ist ein Datenbank-Backup wertlos. Er gehört ins Backup und zusätzlich in den Passwortmanager der IT.
- Ohne gesetzten Wert erzeugt DocuSeal selbst eine Datei
/data/docuseal/docuseal.envmit einem zufälligen Schlüssel. Das funktioniert, ist aber leichter zu übersehen.
Schritt 2: DocuSeal mit Docker Compose konfigurieren
services:
app:
image: docuseal/docuseal:3.3.2
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
volumes:
- ./docuseal:/data/docuseal
environment:
DATABASE_URL: postgresql://docuseal:${PG_PASSWORD}@postgres:5432/docuseal
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
FORCE_SSL: "true"
APP_URL: https://${HOST}
SMTP_ADDRESS: smtp.firma.de
SMTP_PORT: "587"
SMTP_USERNAME: docuseal@firma.de
SMTP_PASSWORD: ${SMTP_PASSWORD}
SMTP_FROM: "Unterschriften Firma GmbH <docuseal@firma.de>"
SMTP_DOMAIN: firma.de
postgres:
image: postgres:18
restart: unless-stopped
volumes:
- ./pg_data:/var/lib/postgresql/18/docker
environment:
POSTGRES_USER: docuseal
POSTGRES_PASSWORD: ${PG_PASSWORD}
POSTGRES_DB: docuseal
healthcheck:
test: ["CMD-SHELL", "pg_isready -U docuseal"]
interval: 5s
timeout: 5s
retries: 5
caddy:
image: caddy:2
restart: unless-stopped
command: caddy reverse-proxy --from ${HOST} --to app:3000
ports:
- 80:80
- 443:443
- 443:443/udp
volumes:
- ./caddy:/data/caddy
- Im Unterschied zur offiziellen Datei: feste Versionen statt
latest, eigenes Datenbankpasswort stattpostgres, Datenbankport nicht veröffentlicht. - FORCE_SSL sorgt für HTTPS-Links in E-Mails und sichere Cookies. APP_URL legt die Adresse fest; ohne sie wird sie in der Ersteinrichtung abgefragt.
- SMTP kann alternativ in der Oberfläche unter Einstellungen › E-Mail eingetragen werden. Umgebungsvariablen haben den Vorteil, dass die Konfiguration im Backup der Compose-Dateien steckt.
- Läuft bereits ein Reverse Proxy (z. B. nginx oder die OPNsense, siehe OPNsense - Caddy Reverse Proxy), den Caddy-Dienst weglassen und den Port der App nur an
127.0.0.1:3000binden. - Die App läuft im Container als Benutzer mit der UID 2000 und passt die Rechte des Datenordners beim Start an.
docker compose up -d && docker compose logs -f app
Der Start ist abgeschlossen, wenn https://sign.firma.de/up mit Status 200 antwortet.
Schritt 3: Ersteinrichtung
https://sign.firma.deaufrufen. Beim ersten Start erscheint die Ersteinrichtung.- Firmenname, Vor- und Nachname, E-Mail, Passwort, Sprache und Zeitzone (Europe/Berlin) eintragen.
- Unter Einstellungen › Profil sofort die Zwei-Faktor-Authentifizierung einrichten und unter Einstellungen › Konto für alle Benutzer erzwingen, siehe DocuSeal: Absichern, Backup und Betrieb.
- Unter Einstellungen › E-Mail eine Testmail senden.
- Unter Einstellungen › Benutzer Kollegen einladen. In der freien Version haben alle Benutzer die Rolle Administrator.
- Unter Einstellungen › E-Signatur das Signaturzertifikat und einen Zeitstempel-Server festlegen, siehe DocuSeal: Signaturzertifikate, Zeitstempel und Prüfung.
Dateispeicher
Hochgeladene und signierte Dokumente liegen standardmäßig im Datenordner unter attachments/. Für große Mengen oder getrennte Sicherung lässt sich ein Objektspeicher anbinden:
| Speicher | Umgebungsvariablen |
|---|---|
| S3 oder S3-kompatibel (z. B. MinIO, Hetzner, IONOS) | S3_ATTACHMENTS_BUCKET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_REGION, S3_ENDPOINT
|
| Google Cloud Storage | GCS_BUCKET, GCS_PROJECT, GCS_CREDENTIALS
|
| Azure Blob Storage | AZURE_CONTAINER, AZURE_STORAGE_ACCOUNT_NAME, AZURE_STORAGE_ACCESS_KEY
|
- Ohne diese Variablen lässt sich der Speicher auch unter Einstellungen › Speicher einrichten.
- Den Bucket privat lassen;
ACTIVE_STORAGE_PUBLICnicht auftruesetzen. Bei Cloud-Speichern Standort in der EU wählen und Auftragsverarbeitung prüfen, siehe Objektspeicher.
Updates
cd /opt/docuseal
# vorher sichern, siehe Backup-Artikel
# Tag in compose.yaml anheben, dann:
docker compose pull && docker compose up -d && docker compose logs --tail 50 app
- DocuSeal veröffentlicht etwa wöchentlich neue Versionen. Viele enthalten Sicherheitskorrekturen; der Hersteller empfiehlt Selbsthostern ausdrücklich, aktuell zu bleiben.
- Datenbankmigrationen laufen beim Start automatisch. Bei sehr großen Datenbanken kann der Start einige Minuten dauern, wie bei 3.1.3 angekündigt.
- Release Notes auf GitHub lesen: Änderungen betreffen teils das eingebettete Formular oder die API.
Hinweise
- Testinstanz: Neue Versionen und Vorlagen zuerst auf einer Kopie prüfen; DocuSeal bietet außerdem einen Testmodus für die API.
- Ressourcen: Große PDFs mit vielen Seiten brauchen beim Erzeugen der Ergebnisdokumente kurzzeitig viel Arbeitsspeicher. 3.3.2 hat den Spitzenbedarf beim Hochladen großer Dateien gesenkt.
- Bei Aufbau und Betrieb von Linux-Servern und Containern unterstützt Sie das Linux-Consulting von m.a.x. it.
Siehe auch
- DocuSeal – Überblick und alle Artikel der Reihe
- DocuSeal: Vorlagen erstellen und Dokumente zur Unterschrift senden
- DocuSeal: Absichern, Backup und Betrieb
- Reverse Proxy
Links und Quellen
Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung?
