Servicios de systemd que reciben los secretos de Crunu
Ejecuta el agente de Crunu como servicio aislado de systemd en Linux, inicia tus servicios con crunu run o escribe un archivo EnvironmentFile= con crunu pull.
- Soporte
- Funciona con Crunu hoy: el soporte de systemd forma parte del producto.
- Funciones de Crunu
- Máquinas y Reglas de red
- Comprobado
- Con Crunu 6.0.0 el 27 de octubre de 2026
Funciones de Crunu que funcionan con systemd
Cada función de abajo funciona igual en cada integración: el servidor guarda datos cifrados, y solo las personas, las máquinas y los tokens a los que concedes acceso pueden descifrarlos.
Máquinas
Inscribe un servidor con un código de un solo uso, y el agente crunu mantiene sus entornos en memoria e inicia tus programas con ellos.
Más información
Reglas de red
Sirve el contenido de un entorno solo a redes IPv4 e IPv6 permitidas, con reglas firmadas que no se pueden relajar a escondidas.
Más información
Cómo funciona con systemd
En esta página
Qué hace Crunu con systemd
En un servidor Linux, el agente crunu se ejecuta como el servicio de systemd crunu-agent. Inicia sesión con las claves propias de la máquina, consulta el servidor cada minuto, mantiene los entornos descifrados solo en memoria y se los entrega a crunu run mediante un socket local. Tu servicio arranca mediante crunu run y recibe sus variables del agente, así que nada acaba en disco.
Así es también como Crunu deja production fuera de la CI: el servidor de production obtiene su propio entorno, y el pipeline solo entrega el código y reinicia el servicio.
Inscribe la máquina
En Crunu, abre Machines y elige New machine. Elige sus entornos y cómo entregarlos, y copia el comando de instalación del diálogo Enroll machine. Instala el agente, comprueba el SHA-256 del binario e inscribe la máquina con un código de un solo uso que se lee de 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 -El diálogo rellena por ti el código de inscripción y las sumas de verificación. Las versiones del agente se publican en releases.crunu.com: la versión 6.0.0 tiene binarios para Linux y macOS, paquetes .deb, install.sh y un manifiesto firmado. En un servidor que operas tú, el diálogo muestra las direcciones con las que está configurado ese servidor. El código es válido 15 minutos por defecto y se consume la primera vez que se presenta. crunu enroll muestra la huella de la máquina; aprueba la máquina en Machines después de comprobar que la huella coincide.
El instalador está probado con systemd en Ubuntu 24.04, Ubuntu 22.04 y Debian 12. También se compila un paquete .deb para amd64 y arm64.
Inicia tu servicio mediante 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/serverEl usuario del servicio debe estar en el grupo crunu, propietario del socket del agente. Con --restart on-change, crunu run reinicia tu programa cuando cambian los valores: envía SIGTERM, después SIGKILL si el programa no se ha detenido dentro del tiempo de parada, y lo vuelve a iniciar con las variables nuevas. Al log solo van los nombres de las variables cambiadas. Las señales de systemd se reenvían a tu programa, y su código de salida pasa a ser el de crunu run.
El programa recibe un entorno limpio: una lista breve de variables permitidas como PATH, HOME y LANG, más las variables del entorno de Crunu.
O escribe un archivo para EnvironmentFile=
Si una unidad debe leer las variables de un archivo, crunu pull puede escribirlas como un solo archivo env con permisos 0600:
crunu pull --env payments-api/production --env-out /etc/payments-api/envApunta el EnvironmentFile= de la unidad a esa ruta. Así los valores quedan en disco, legibles para root y para el propietario del archivo, y Crunu no elimina el archivo después. Siempre que puedas, usa crunu run.
Cómo se restringe el servicio del agente
- La unidad se ejecuta como el usuario
crunusin capacidades, conProtectSystem=strict, un directorio personal de solo lectura,/tmpy dispositivos privados, y unSystemCallFilterlimitado a las llamadas habituales de un servicio. - Los volcados de memoria están desactivados, y en Linux el agente está protegido de otros procesos del mismo usuario.
- Los archivos de estado se escriben de forma atómica. El agente anota el estado verificado más reciente antes de entregarlo, así que después de un reinicio el servidor no puede hacerlo retroceder a escondidas.
Operación
sudo systemctl enable --now crunu-agent
sudo systemctl kill -s HUP crunu-agent
crunu statusEl primer comando inicia el agente una vez inscrita la máquina. SIGHUP hace que consulte el servidor en ese momento en lugar de esperar al minuto siguiente. crunu status muestra la máquina, su organización y sus huellas, la concesión y cada entorno.
Si no se puede llegar al servidor, el agente entrega el último estado verificado hasta que vence la concesión, 24 horas por defecto. Después de revocar la máquina, el agente borra sus entornos de la memoria en cuestión de minutos mientras esté en línea.
Relacionado
Dudas frecuentes
¿No está aquí? Escribe a support@crunu.com y te responderá una persona.
¿Se escriben los secretos en disco?
No con crunu run: el agente mantiene los entornos en memoria y los entrega por un socket local. crunu pull --env-out escribe un archivo solo cuando lo pides.
¿Qué pasa si no se puede llegar al servidor?
El agente entrega el último estado verificado hasta que vence su concesión, 24 horas por defecto.
¿El servicio funciona en macOS?
No. El servicio en segundo plano es solo para Linux. En macOS, crunu funciona como herramienta de línea de comandos.