Naar de inhoud
IngebouwdServers en containers

systemd-services die hun secrets uit Crunu krijgen

Draai de Crunu-agent op Linux als systemd-service in een sandbox, start services met crunu run, of schrijf met crunu pull een env-bestand voor EnvironmentFile=.

Ondersteuning
Werkt vandaag met Crunu: ondersteuning voor systemd hoort bij het product.
Functies van Crunu
Machines en Netwerkregels
Gecontroleerd
Tegen Crunu 6.0.0 op 27 oktober 2026
Voorbeeld. Kiteline is een fictief bedrijf.

Functies van Crunu die met systemd 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.

  • Machines

    Schrijf een server in met een eenmalige code, en de agent crunu houdt de omgevingen in het geheugen en start je programma’s ermee.

    Lees meer

  • Netwerkregels

    Lever de inhoud van een omgeving alleen aan toegestane IPv4- en IPv6-netwerken, met ondertekende regels die niet stilletjes kunnen worden versoepeld.

    Lees meer

Zo werkt het met systemd

Op deze pagina

Wat Crunu doet met systemd

Op een Linux-server draait de agent crunu als de systemd-service crunu-agent. Hij logt in met de eigen sleutels van de machine, controleert de server elke minuut, houdt ontsleutelde omgevingen alleen in het geheugen en geeft ze via een lokale socket aan crunu run. Je service start via crunu run en krijgt zijn variabelen van de agent, dus er belandt niets op schijf.

Zo houdt Crunu ook production buiten CI: de productieserver haalt zijn eigen omgeving op, en de pipeline levert alleen code en herstart de service.

De machine inschrijven

Open in Crunu Machines en kies New machine. Kies de omgevingen en hoe ze worden geleverd, en kopieer dan de installatieopdracht uit het venster Enroll machine. Die installeert de agent, controleert de SHA-256 van de binary en schrijft de machine in met een code voor eenmalig gebruik die uit stdin wordt gelezen:

Shell
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 -

Het venster vult de inschrijfcode en de checksums voor je in. Releases van de agent worden gepubliceerd op releases.crunu.com: versie 6.0.0 heeft binaries voor Linux en macOS, .deb-pakketten, install.sh en een ondertekend manifest. Op een server die je zelf draait, toont het venster de adressen waarmee die server is ingesteld. De code is standaard 15 minuten geldig en is op zodra hij de eerste keer wordt aangeboden. crunu enroll toont de vingerafdruk van de machine; keur de machine goed in Machines nadat je hebt gecontroleerd dat de vingerafdruk overeenkomt.

Het installatiescript is getest met systemd op Ubuntu 24.04, Ubuntu 22.04 en Debian 12. Er wordt ook een .deb-pakket gebouwd voor amd64 en arm64.

Start je service via crunu run

INI
# /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/server

De gebruiker van de service moet in de groep crunu zitten, die eigenaar is van de socket van de agent. Met --restart on-change start crunu run je programma opnieuw nadat waarden zijn veranderd: het stuurt SIGTERM, daarna SIGKILL als het programma niet binnen de stoptimeout is gestopt, en start het opnieuw met de nieuwe variabelen. Alleen de namen van gewijzigde variabelen gaan naar de log. Signalen van systemd worden doorgegeven aan je programma, en de exitcode ervan wordt die van crunu run.

Het programma krijgt een schone omgeving: een korte lijst toegestane variabelen zoals PATH, HOME en LANG, plus de variabelen van de omgeving.

Of schrijf een bestand voor EnvironmentFile=

Moet een unit variabelen uit een bestand lezen, dan kan crunu pull ze als één env-bestand met rechten 0600 schrijven:

Shell
crunu pull --env payments-api/production --env-out /etc/payments-api/env

Laat EnvironmentFile= van de unit naar dat pad wijzen. De waarden staan dan op schijf, leesbaar voor root en de eigenaar van het bestand, en Crunu verwijdert het bestand later niet. Kies waar mogelijk voor crunu run.

Hoe de agentservice is afgeschermd

  • De unit draait als de gebruiker crunu zonder capabilities, met ProtectSystem=strict, een alleen-lezen thuismap, een eigen /tmp en eigen apparaten, en een SystemCallFilter die beperkt is tot gewone serviceaanroepen.
  • Core dumps staan uit, en op Linux is de agent afgeschermd van andere processen van dezelfde gebruiker.
  • Statusbestanden worden atomair geschreven. De agent legt de nieuwste geverifieerde staat vast voordat hij die levert, dus na een herstart kan de server die niet ongemerkt terugdraaien.

Beheren

Shell
sudo systemctl enable --now crunu-agent
sudo systemctl kill -s HUP crunu-agent
crunu status

De eerste opdracht start de agent zodra de machine is ingeschreven. SIGHUP laat hem de server nu controleren in plaats van bij de volgende minuut. crunu status toont de machine, de organisatie en vingerafdrukken, de lease en elke omgeving.

Is de server onbereikbaar, dan levert de agent de laatst geverifieerde staat tot de lease afloopt, standaard na 24 uur. Nadat de machine is ingetrokken, wist hij binnen enkele minuten de omgevingen uit het geheugen zolang hij online is.

Verwant

Veelgestelde vragen

Staat je vraag er niet bij? Mail naar support@crunu.com, dan antwoordt een mens.

Worden secrets naar schijf geschreven?

Niet met crunu run: de agent houdt omgevingen in het geheugen en geeft ze door via een lokale socket. crunu pull --env-out schrijft alleen een bestand als je erom vraagt.

Wat gebeurt er als de server onbereikbaar is?

De agent levert de laatst geverifieerde staat tot de lease afloopt, standaard na 24 uur.

Draait de service op macOS?

Nee. De achtergrondservice is er alleen voor Linux. Op macOS werkt crunu als opdrachtregeltool.

Probeer het met systemd

Maak je organisatie aan op app.crunu.com, voeg één omgeving toe en koppel die. Gratis tijdens de vroege toegang.