Faire tourner le serveur Crunu avec Docker Compose
Hébergez le serveur Crunu sur votre machine avec Docker Compose : Caddy pour le TLS automatique ou Cloudflare Tunnel sans port ouvert, et SQLite ou Postgres.
- Prise en charge
- Fonctionne avec Crunu aujourd’hui : le produit prend en charge Docker nativement.
- Fonctionnalités Crunu
- Auto-hébergement et Coffre-fort chiffré
- Vérifié
- Avec Crunu 6.0.0, le 28 octobre 2026
Les fonctionnalités Crunu qui fonctionnent avec Docker
Chaque fonctionnalité ci-dessous fonctionne de la même façon dans chaque intégration : le serveur garde des données chiffrées, et seuls les personnes, les machines et les jetons que vous autorisez peuvent les déchiffrer.
Auto-hébergement
Faites tourner le même serveur Crunu sur votre hôte Docker, Cloudflare Workers, Vercel ou Google Cloud Run, et passez de l’un à l’autre avec une seule archive.
En savoir plus
Coffre-fort chiffré
Rangez fichiers .env, identifiants cloud et clés d’API dans des projets et des environnements, chiffrés sur vos appareils avant que quoi que ce soit n’atteigne le serveur.
En savoir plus
Comment ça marche avec Docker
Sur cette page
Ce que fait Crunu avec Docker
Crunu tourne dans le cloud sur app.crunu.com : la plupart des équipes ne déploient donc jamais de serveur. Si vous préférez le garder sur votre propre machine, le serveur est livré avec une configuration Docker Compose : le conteneur du serveur plus Caddy, qui émet lui-même le certificat TLS de votre domaine.
Le serveur est aveugle où qu’il tourne. Sa base de données contient des données chiffrées, des clés publiques, des documents signés et des métadonnées, et il n’a aucune clé capable de déchiffrer une valeur. Voir l’auto-hébergement pour comparer les options.
Configuration requise
- Une machine avec Docker, et un domaine avec un enregistrement A ou AAAA qui pointe vers elle.
- Les ports 80 et 443 ouverts, pour que Caddy puisse obtenir un certificat.
- Node.js 24 et les fichiers du serveur Crunu sur cette machine. Les commandes ci-dessous se lancent depuis le répertoire du serveur.
Démarrer le serveur
Choisissez l’adresse du serveur une fois pour toutes. Les signatures de connexion, les liens de partage, les clés d’accès (passkeys) et les machines enrôlées y sont tous liés, et un passage ultérieur à une autre plateforme conserve la même adresse.
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 écrit un fichier .env avec les permissions 0600 et de nouvelles valeurs pour SERVER_KEY, BOOTSTRAP_TOKEN et CRON_SECRET. Enregistrez-en tout de suite une copie dans un gestionnaire de mots de passe : le serveur ne peut pas être restauré sans lui. La base de données est par défaut SQLite dans un volume Docker. Pour Postgres à côté du serveur, lancez server-init avec --docker-postgres.
Vérifiez ensuite le déploiement et créez le premier propriétaire avec la clé d’amorçage tirée du .env :
node scripts/doctor.mjs https://vault.company.exampleCloudflare Tunnel au lieu de ports ouverts
Le serveur peut aussi atteindre Internet par un Cloudflare Tunnel. Rien n’est publié sur la machine, cloudflared se connecte directement au serveur, et Cloudflare termine le TLS. Placez le jeton du tunnel dans deploy/docker/.env, faites pointer le nom d’hôte public du tunnel vers le service server:8080, et ajoutez le fichier du tunnel par-dessus le fichier principal :
docker compose -f deploy/docker/compose.yml -f deploy/docker/compose.tunnel.yml up -d --buildLe fichier du tunnel donne à cloudflared une adresse fixe sur son propre réseau Docker, et le serveur ne fait confiance à l’en-tête d’adresse du client que depuis cette adresse : les restrictions réseau voient donc la véritable adresse du client.
Comment tourne le conteneur
La configuration Compose fait tourner le serveur avec un système de fichiers racine en lecture seule, sans capacités Linux et sous un utilisateur non privilégié, et elle est testée pour redémarrer sur la même base de données. Le serveur applique lui-même les migrations de schéma au démarrage. Une mise à jour, c’est le même docker compose … up -d --build après avoir récupéré la nouvelle version.
L’image intègre un client web prêt à l’emploi tiré de dist/web/. Si ce répertoire manque, ou contient une autre version que le serveur, la construction s’arrête au lieu de construire de son côté un client web non signé.
Sauvegardes et déménagement
crunu-server export écrit toute la base de données dans une seule archive sans aucune valeur en clair, et crunu-server import la charge dans une base vide sur n’importe quelle plateforme prise en charge : Docker, Cloudflare Workers, Vercel ou Google Cloud Run. Gardez le même .env et la même adresse : seul l’enregistrement DNS change.
Cette archive déplace un serveur que vous exploitez. Passer d’app.crunu.com à votre propre serveur ne se fait pas en une étape, car seul l’exploitant a accès à la base de données du cloud. Exportez chaque environnement sous forme de fichier .env ou téléchargez une copie hors ligne, puis ajoutez les fichiers à votre serveur. L’historique, les réglages d’accès et le journal d’audit ne suivent pas par ce moyen.
L’agent crunu dans les conteneurs
Le script d’installation de l’agent crunu a un mode sans root pour la CI et les conteneurs. Il est testé dans les images node:24, Ubuntu 24.04 et Alpine 3.22. En CI et dans les autres conteneurs éphémères, crunu fonctionne avec un jeton de service : il se connecte et déchiffre à l’intérieur de son propre processus, sans fichiers d’état. Une image minimale sans ca-certificates ne peut pas vérifier le certificat du serveur, et crunu vous indique quel paquet installer.
Le service d’agent en arrière-plan a besoin de systemd et tourne sur des hôtes Linux. Voir systemd.
Voir aussi
Questions et réponses
Votre question n’est pas traitée ici ? Écrivez à support@crunu.com : une personne vous répondra.
Où obtenir le serveur ?
Le serveur n’est pas proposé en téléchargement public. Écrivez à support@crunu.com.
Quelle base de données utilise-t-il ?
SQLite dans un volume Docker par défaut, ou Postgres à côté du serveur.
Puis-je éviter d’ouvrir des ports ?
Oui. Faites-le tourner derrière Cloudflare Tunnel avec le fichier Compose du tunnel, et Cloudflare termine le TLS.
Puis-je passer d’app.crunu.com à mon propre serveur ?
Pas en une seule étape. Exportez chaque environnement sous forme de fichier .env ou téléchargez une copie hors ligne. L’historique, les réglages d’accès et le journal d’audit ne suivent pas par ce moyen.