Zum Inhalt springen
EingebautServer und Container

Den Crunu-Server mit Docker Compose betreiben

Den Crunu-Server mit Docker Compose auf der eigenen Maschine hosten: Caddy für automatisches TLS oder Cloudflare Tunnel ohne offene Ports, SQLite oder Postgres.

Unterstützung
Funktioniert heute mit Crunu: Die Unterstützung für Docker ist Teil des Produkts.
Crunu-Funktionen
Self-Hosting und Verschlüsselter Tresor
Geprüft
Mit Crunu 6.0.0 am 28. Oktober 2026
Beispiel. Kiteline ist ein fiktives Unternehmen.

Crunu-Funktionen, die mit Docker funktionieren

Jede Funktion unten arbeitet in jeder Integration gleich: Der Server bewahrt Chiffretext auf, und nur die Menschen, Maschinen und Tokens, denen Sie Zugriff gewähren, können entschlüsseln.

  • Self-Hosting

    Betreiben Sie denselben Crunu-Server auf Ihrem eigenen Docker-Host, auf Cloudflare Workers, Vercel oder Google Cloud Run, und ziehen Sie mit einem Archiv zwischen ihnen um.

    Mehr erfahren

  • Verschlüsselter Tresor

    Bewahren Sie .env-Dateien, Cloud-Zugangsdaten und API-Schlüssel in Projekten und Umgebungen auf, verschlüsselt auf Ihren Geräten, bevor irgendetwas den Server erreicht.

    Mehr erfahren

So funktioniert es mit Docker

Auf dieser Seite

Was Crunu mit Docker tut

Crunu läuft in der Cloud auf app.crunu.com, die meisten Teams deployen also nie einen Server. Möchten Sie ihn lieber auf Ihrer eigenen Maschine haben, bringt der Server eine Konfiguration für Docker Compose mit: den Server-Container und dazu Caddy, das das TLS-Zertifikat für Ihre Domain selbst ausstellt.

Der Server ist blind, wo immer er läuft. Seine Datenbank enthält Chiffretext, öffentliche Schlüssel, signierte Dokumente und Metadaten, und er hat keinen Schlüssel, der einen Wert entschlüsselt. Wie sich die Optionen unterscheiden, steht auf der Seite zum Self-Hosting.

Was Sie brauchen

  • Eine Maschine mit Docker und eine Domain mit einem A- oder AAAA-Eintrag, der auf sie zeigt.
  • Offene Ports 80 und 443, damit Caddy ein Zertifikat bekommt.
  • Node.js 24 und die Dateien des Crunu-Servers auf dieser Maschine. Die Befehle unten laufen im Verzeichnis des Servers.

Den Server starten

Wählen Sie die Adresse des Servers einmal. Anmeldesignaturen, Freigabelinks, Passkeys und registrierte Maschinen sind alle an sie gebunden, und auch ein späterer Umzug auf eine andere Plattform behält dieselbe Adresse.

Shell
node scripts/server-init.mjs --origin https://vault.company.example --out deploy/docker/.env
docker compose -f deploy/docker/compose.yml up -d --build

server-init schreibt eine Datei .env mit den Rechten 0600 und neuen Werten für SERVER_KEY, BOOTSTRAP_TOKEN und CRON_SECRET. Speichern Sie sofort eine Kopie davon in einem Passwortmanager: Ohne sie lässt sich der Server nicht wiederherstellen. Die Datenbank ist standardmäßig SQLite in einem Docker-Volume. Für Postgres neben dem Server führen Sie server-init mit --docker-postgres aus.

Prüfen Sie danach das Deployment und legen Sie mit dem Bootstrap-Schlüssel aus .env den ersten Owner an:

Shell
node scripts/doctor.mjs https://vault.company.example

Cloudflare Tunnel statt offener Ports

Der Server kann das Internet auch über einen Cloudflare Tunnel erreichen. Auf der Maschine wird nichts veröffentlicht, cloudflared verbindet sich direkt mit dem Server, und Cloudflare terminiert TLS. Legen Sie das Token des Tunnels in deploy/docker/.env ab, richten Sie den öffentlichen Hostnamen des Tunnels auf den Dienst server:8080 aus und fügen Sie die Tunnel-Datei zur Hauptdatei hinzu:

Shell
docker compose -f deploy/docker/compose.yml -f deploy/docker/compose.tunnel.yml up -d --build

Die Tunnel-Datei gibt cloudflared eine feste Adresse in einem eigenen Docker-Netzwerk, und der Server vertraut dem Header mit der Clientadresse nur von dieser Adresse. So sehen Netzwerkbeschränkungen die echte Clientadresse.

Wie der Container läuft

Die Compose-Konfiguration betreibt den Server mit schreibgeschütztem Root-Dateisystem, ohne Linux-Capabilities und mit einem unprivilegierten Benutzer, und es ist getestet, dass er auf derselben Datenbank neu startet. Schemamigrationen führt der Server beim Start selbst aus. Ein Update ist dasselbe docker compose … up -d --build, nachdem Sie die neue Version geholt haben.

Das Image enthält einen fertigen Web-Client aus dist/web/. Fehlt dieses Verzeichnis oder enthält es eine andere Version als der Server, bricht der Build ab, statt selbst einen unsignierten Web-Client zu bauen.

Backups und Umzug

crunu-server export schreibt die ganze Datenbank in ein Archiv ohne Klartextwerte, und crunu-server import lädt es in eine leere Datenbank auf jeder unterstützten Plattform: Docker, Cloudflare Workers, Vercel oder Google Cloud Run. Behalten Sie dieselbe .env und dieselbe Adresse, dann ändert sich nur der DNS-Eintrag.

Dieses Archiv zieht einen Server um, den Sie betreiben. Der Umzug von app.crunu.com auf Ihren eigenen Server ist kein einzelner Schritt, denn nur der Betreiber hat Zugriff auf die Datenbank in der Cloud. Exportieren Sie jede Umgebung als .env-Datei oder laden Sie eine Offline-Kopie herunter und fügen Sie die Dateien dann Ihrem Server hinzu. Verlauf, Zugriffseinstellungen und Audit-Log werden auf diesem Weg nicht übernommen.

Der Agent crunu in Containern

Das Installationsskript des Agenten crunu hat einen Modus ohne Root für CI und Container. Es ist in den Images node:24, Ubuntu 24.04 und Alpine 3.22 getestet. In CI und anderen kurzlebigen Containern arbeitet crunu mit einem Service-Token: Es meldet sich an und entschlüsselt innerhalb seines eigenen Prozesses, ohne Zustandsdateien. Ein minimales Image ohne ca-certificates kann das Zertifikat des Servers nicht prüfen, und crunu sagt Ihnen, welches Paket zu installieren ist.

Der Hintergrunddienst des Agenten braucht systemd und läuft auf Linux-Hosts. Siehe systemd.

Weiterführend

Fragen aus der Praxis

Nicht dabei? Schreiben Sie an support@crunu.com, und ein Mensch antwortet.

Wo bekomme ich den Server?

Der Server wird nicht als öffentlicher Download angeboten. Schreiben Sie an support@crunu.com.

Welche Datenbank verwendet er?

Standardmäßig SQLite in einem Docker-Volume, oder Postgres neben dem Server.

Kann ich offene Ports vermeiden?

Ja. Betreiben Sie ihn hinter Cloudflare Tunnel mit der Compose-Datei für den Tunnel, dann terminiert Cloudflare TLS.

Kann ich von app.crunu.com auf meinen eigenen Server umziehen?

Nicht in einem Schritt. Exportieren Sie jede Umgebung als .env-Datei oder laden Sie eine Offline-Kopie herunter. Verlauf, Zugriffseinstellungen und Audit-Log werden auf diesem Weg nicht übernommen.

Probieren Sie es mit Docker aus

Legen Sie Ihre Organisation auf app.crunu.com an, fügen Sie eine Umgebung hinzu und binden Sie sie an. Kostenlos im Early Access.