Des services systemd qui reçoivent leurs secrets de Crunu
L’agent Crunu en service systemd isolé sous Linux : lancez vos services avec crunu run, ou écrivez un fichier pour EnvironmentFile= avec crunu pull.
- Prise en charge
- Fonctionne avec Crunu aujourd’hui : le produit prend en charge systemd nativement.
- Fonctionnalités Crunu
- Machines et Règles réseau
- Vérifié
- Avec Crunu 6.0.0, le 27 octobre 2026
Les fonctionnalités Crunu qui fonctionnent avec systemd
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.
Machines
Enrôlez un serveur avec un code à usage unique : l’agent crunu garde ses environnements en mémoire et lance vos programmes avec eux.
En savoir plus
Règles réseau
Ne servez le contenu d’un environnement qu’aux réseaux IPv4 et IPv6 autorisés, avec des règles signées qu’on ne peut pas assouplir en douce.
En savoir plus
Comment ça marche avec systemd
Sur cette page
Ce que fait Crunu avec systemd
Sur un serveur Linux, l’agent crunu tourne comme service systemd crunu-agent. Il se connecte avec les clés propres à la machine, interroge le serveur chaque minute, ne garde les environnements déchiffrés qu’en mémoire et les transmet à crunu run par un socket local. Votre service démarre via crunu run et reçoit ses variables de l’agent : rien n’atterrit sur le disque.
C’est aussi ainsi que Crunu garde production hors de la CI : le serveur de production récupère lui-même son environnement, et le pipeline ne fait que livrer le code et redémarrer le service.
Enrôler la machine
Dans Crunu, ouvrez Machines et choisissez New machine. Choisissez ses environnements et leur mode de livraison, puis copiez la commande d’installation de la boîte de dialogue Enroll machine. Elle installe l’agent, vérifie le SHA-256 du binaire et enrôle la machine avec un code à usage unique lu depuis stdin :
printf '%s\n' 'crunu_enr_…' | sudo sh install.sh --version 6.0.0 --sha256 amd64=<sum> --sha256 arm64=<sum> --base-url https://releases.crunu.com/6.0.0 --server https://app.crunu.com --enroll -La boîte de dialogue remplit pour vous le code d’enrôlement et les sommes de contrôle. Les versions de l’agent sont publiées sur releases.crunu.com : la version 6.0.0 a des binaires pour Linux et macOS, des paquets .deb, install.sh et un manifeste signé. Sur un serveur que vous exploitez vous-même, la boîte de dialogue affiche les adresses configurées sur ce serveur. Le code est valable 15 minutes par défaut et est consommé dès sa première présentation. crunu enroll affiche l’empreinte de la machine ; approuvez la machine dans Machines après avoir vérifié que l’empreinte correspond.
L’installateur est testé avec systemd sur Ubuntu 24.04, Ubuntu 22.04 et Debian 12. Un paquet .deb est aussi construit pour amd64 et arm64.
Lancer votre service via crunu run
# /etc/systemd/system/payments-api.service
[Service]
User=payments
ExecStart=/usr/local/bin/crunu run --env payments-api/production --restart on-change -- /opt/payments-api/bin/serverL’utilisateur du service doit appartenir au groupe crunu, propriétaire du socket de l’agent. Avec --restart on-change, crunu run redémarre votre programme quand les valeurs changent : il envoie SIGTERM, puis SIGKILL si le programme ne s’est pas arrêté dans le délai d’arrêt, et le relance avec les nouvelles variables. Seuls les noms des variables modifiées vont dans le journal. Les signaux de systemd sont transmis à votre programme, et son code de sortie devient celui de crunu run.
Le programme reçoit un environnement propre : une courte liste autorisée comme PATH, HOME et LANG, plus les variables de l’environnement.
Ou écrire un fichier pour EnvironmentFile=
Si une unité doit lire ses variables dans un fichier, crunu pull peut les écrire dans un seul fichier env avec les permissions 0600 :
crunu pull --env payments-api/production --env-out /etc/payments-api/envFaites pointer le EnvironmentFile= de l’unité vers ce chemin. Les valeurs sont alors sur le disque, lisibles par root et par le propriétaire du fichier, et Crunu ne supprime pas le fichier ensuite. Préférez crunu run quand c’est possible.
Comment le service de l’agent est verrouillé
- L’unité tourne sous l’utilisateur
crunu, sans capacités, avecProtectSystem=strict, un répertoire personnel en lecture seule,/tmpet périphériques privés, et unSystemCallFilterlimité aux appels ordinaires d’un service. - Les core dumps sont désactivés, et sous Linux, l’agent est protégé des autres processus du même utilisateur.
- Les fichiers d’état sont écrits de façon atomique. L’agent enregistre l’état vérifié le plus récent avant de le servir : après un redémarrage, le serveur ne peut donc pas le faire revenir en arrière en douce.
Exploitation
sudo systemctl enable --now crunu-agent
sudo systemctl kill -s HUP crunu-agent
crunu statusLa première commande démarre l’agent une fois la machine enrôlée. SIGHUP lui fait interroger le serveur tout de suite plutôt qu’à la minute suivante. crunu status affiche la machine, son organisation et ses empreintes, le bail et chaque environnement.
Si le serveur est injoignable, l’agent sert le dernier état vérifié jusqu’à la fin du bail, 24 heures par défaut. Une fois la machine révoquée, il efface ses environnements de la mémoire en quelques minutes tant qu’elle est en ligne.
Voir aussi
Questions et réponses
Votre question n’est pas traitée ici ? Écrivez à support@crunu.com : une personne vous répondra.
Les secrets sont-ils écrits sur le disque ?
Pas avec crunu run : l’agent garde les environnements en mémoire et les transmet par un socket local. crunu pull --env-out n’écrit un fichier que si vous le demandez.
Que se passe-t-il si le serveur est injoignable ?
L’agent sert le dernier état vérifié jusqu’à la fin de son bail, 24 heures par défaut.
Le service tourne-t-il sous macOS ?
Non. Le service en arrière-plan est réservé à Linux. Sous macOS, crunu fonctionne comme outil en ligne de commande.