De Crunu-server draaien met Docker Compose
Host de Crunu-server op je eigen machine met Docker Compose: Caddy voor automatische TLS of Cloudflare Tunnel zonder open poorten, en SQLite of Postgres.
- Ondersteuning
- Werkt vandaag met Crunu: ondersteuning voor Docker hoort bij het product.
- Functies van Crunu
- Zelf hosten en Versleutelde kluis
- Gecontroleerd
- Tegen Crunu 6.0.0 op 28 oktober 2026
Functies van Crunu die met Docker werken
Elke functie hieronder werkt in elke integratie op dezelfde manier: de server bewaart versleutelde data, en alleen de mensen, machines en tokens die je toegang geeft, kunnen ontsleutelen.
Zelf hosten
Draai dezelfde Crunu-server op je eigen Docker-host, Cloudflare Workers, Vercel of Google Cloud Run, en verhuis tussen die platforms met één archief.
Lees meer
Versleutelde kluis
Bewaar .env-bestanden, cloudsleutels en API-sleutels in projecten en omgevingen, versleuteld op je apparaten voordat er iets de server bereikt.
Lees meer
Zo werkt het met Docker
Op deze pagina
Wat Crunu doet met Docker
Crunu draait in de cloud op app.crunu.com, dus de meeste teams deployen nooit een server. Houd je hem liever op je eigen machine, dan komt de server met een opstelling voor Docker Compose: de servercontainer plus Caddy, dat zelf het TLS-certificaat voor je domein aanvraagt.
De server is blind, waar hij ook draait. Zijn database bevat versleutelde data, publieke sleutels, ondertekende documenten en metadata, en hij heeft geen sleutel die een waarde ontsleutelt. Zie zelf hosten voor hoe de opties zich verhouden.
Wat je nodig hebt
- Een machine met Docker, en een domein met een A- of AAAA-record dat ernaar wijst.
- Poorten 80 en 443 open, zodat Caddy een certificaat kan krijgen.
- Node.js 24 en de bestanden van de Crunu-server op die machine. De opdrachten hieronder draaien vanuit de map van de server.
Start de server
Kies het adres van de server één keer. Inloghandtekeningen, deellinks, passkeys en ingeschreven machines zijn er allemaal aan gebonden, en een latere verhuizing naar een ander platform houdt hetzelfde adres.
node scripts/server-init.mjs --origin https://vault.company.example --out deploy/docker/.env
docker compose -f deploy/docker/compose.yml up -d --buildserver-init schrijft een .env-bestand met rechten 0600 en nieuwe waarden voor SERVER_KEY, BOOTSTRAP_TOKEN en CRON_SECRET. Bewaar er meteen een kopie van in een wachtwoordmanager: zonder dat bestand kan de server niet worden hersteld. De database is standaard SQLite in een Docker-volume. Voor Postgres naast de server draai je server-init met --docker-postgres.
Controleer daarna de deployment en maak de eerste eigenaar aan met de bootstrapsleutel uit .env:
node scripts/doctor.mjs https://vault.company.exampleCloudflare Tunnel in plaats van open poorten
De server kan het internet ook via een Cloudflare Tunnel bereiken. Op de machine wordt niets gepubliceerd, cloudflared verbindt rechtstreeks met de server, en Cloudflare handelt TLS af. Zet het tunneltoken in deploy/docker/.env, laat de publieke hostnaam van de tunnel wijzen naar de service server:8080, en voeg het tunnelbestand toe bovenop het hoofdbestand:
docker compose -f deploy/docker/compose.yml -f deploy/docker/compose.tunnel.yml up -d --buildHet tunnelbestand geeft cloudflared een vast adres op een eigen Docker-netwerk, en de server vertrouwt de header met het clientadres alleen vanaf dat adres, zodat netwerkbeperkingen het echte adres van de client zien.
Hoe de container draait
De opstelling voor Compose draait de server met een alleen-lezen rootbestandssysteem, zonder Linux-capabilities en met een gebruiker zonder rechten, en is getest op herstarten met dezelfde database. De server past schemamigraties bij het opstarten zelf toe. Een update is dezelfde docker compose … up -d --build nadat je de nieuwe versie hebt opgehaald.
De image bevat een kant-en-klare webclient uit dist/web/. Ontbreekt die map, of bevat hij een andere versie dan de server, dan stopt de build in plaats van zelf een niet-ondertekende webclient te bouwen.
Back-ups en verhuizen
crunu-server export schrijft de hele database naar één archief zonder onversleutelde waarden, en crunu-server import laadt het in een lege database op elk ondersteund platform: Docker, Cloudflare Workers, Vercel of Google Cloud Run. Houd dezelfde .env en hetzelfde adres, en alleen het DNS-record verandert.
Dat archief verhuist een server die je zelf draait. Van app.crunu.com naar je eigen server overstappen is geen enkele stap, omdat alleen de beheerder bij de clouddatabase kan. Exporteer elke omgeving als .env-bestand of download een offline kopie, en voeg de bestanden daarna toe aan je server. Geschiedenis, toegangsinstellingen en de auditlog gaan op die manier niet mee.
De agent crunu in containers
Het installatiescript van de agent crunu heeft een modus zonder root voor CI en containers. Het is getest in de images node:24, Ubuntu 24.04 en Alpine 3.22. In CI en andere kortlevende containers werkt crunu met een servicetoken: het logt in en ontsleutelt in het eigen proces, zonder statusbestanden. Een minimale image zonder ca-certificates kan het certificaat van de server niet verifiëren, en crunu vertelt je welk pakket je moet installeren.
De agentservice op de achtergrond heeft systemd nodig en draait op Linux-hosts. Zie systemd.
Verwant
Veelgestelde vragen
Staat je vraag er niet bij? Mail naar support@crunu.com, dan antwoordt een mens.
Waar krijg ik de server?
De server is niet als publieke download gepubliceerd. Mail naar support@crunu.com.
Welke database gebruikt hij?
Standaard SQLite in een Docker-volume, of Postgres naast de server.
Kan ik zonder open poorten?
Ja. Draai hem achter Cloudflare Tunnel met het Compose-bestand voor de tunnel, en Cloudflare handelt TLS af.
Kan ik van app.crunu.com naar mijn eigen server overstappen?
Niet in één stap. Exporteer elke omgeving als .env-bestand of download een offline kopie. Geschiedenis, toegangsinstellingen en de auditlog gaan op die manier niet mee.