Serviços systemd que recebem segredos do Crunu
Rode o agente do Crunu como serviço systemd isolado no Linux, inicie seus serviços com crunu run ou grave um arquivo env para EnvironmentFile= com crunu pull.
- Compatibilidade
- Funciona com o Crunu hoje: o suporte a systemd faz parte do produto.
- Recursos do Crunu
- Máquinas e Regras de rede
- Conferido
- Com o Crunu 6.0.0 em 27 de outubro de 2026
Recursos do Crunu que funcionam com systemd
Cada recurso abaixo funciona do mesmo jeito em todas as integrações: o servidor guarda texto cifrado, e só as pessoas, máquinas e tokens que você autorizar conseguem descriptografar.
Máquinas
Registre um servidor com um código de uso único, e o agente crunu mantém os ambientes dele em memória e inicia os seus programas com eles.
Saiba mais
Regras de rede
Entregue o conteúdo de um ambiente apenas a redes IPv4 e IPv6 permitidas, com regras assinadas que não podem ser afrouxadas em silêncio.
Saiba mais
Como funciona com systemd
Nesta página
O que o Crunu faz com o systemd
Num servidor Linux, o agente crunu roda como o serviço systemd crunu-agent. Ele entra com as chaves da própria máquina, consulta o servidor a cada minuto, mantém os ambientes descriptografados só em memória e os entrega ao crunu run por um socket local. O seu serviço inicia por meio do crunu run e recebe as variáveis do agente, então nada vai parar no disco.
É também assim que o Crunu mantém o production fora do CI: o servidor de production busca o próprio ambiente, e o pipeline só entrega o código e reinicia o serviço.
Registre a máquina
No Crunu, abra Machines e escolha New machine. Selecione os ambientes dela e como entregá-los, e copie o comando de instalação da janela Enroll machine. Ele instala o agente, confere o SHA-256 do binário e registra a máquina com um código de uso único lido do 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 -A janela preenche o código de registro e os checksums para você. Os releases do agente são publicados em releases.crunu.com: a versão 6.0.0 tem binários para Linux e macOS, pacotes .deb, o install.sh e um manifesto assinado. Num servidor que você mesmo opera, a janela mostra os endereços com que esse servidor está configurado. O código vale 15 minutos por padrão e se esgota na primeira vez que é apresentado. O crunu enroll imprime a impressão digital da máquina; aprove a máquina em Machines depois de conferir que a impressão digital é a mesma.
O instalador é testado com systemd no Ubuntu 24.04, no Ubuntu 22.04 e no Debian 12. Também é gerado um pacote .deb para amd64 e arm64.
Inicie o seu serviço pelo 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/serverO usuário do serviço precisa estar no grupo crunu, que é dono do socket do agente. Com --restart on-change, o crunu run reinicia o seu programa depois que os valores mudam: ele envia SIGTERM, depois SIGKILL se o programa não tiver parado dentro do tempo limite de parada, e o inicia de novo com as novas variáveis. Só os nomes das variáveis alteradas vão para o log. Os sinais do systemd são repassados ao seu programa, e o código de saída dele vira o do crunu run.
O programa recebe um ambiente limpo: uma lista curta de variáveis permitidas, como PATH, HOME e LANG, mais as variáveis do ambiente.
Ou grave um arquivo para o EnvironmentFile=
Se uma unit precisa ler as variáveis de um arquivo, o crunu pull pode gravá-las como um único arquivo env com permissões 0600:
crunu pull --env payments-api/production --env-out /etc/payments-api/envAponte o EnvironmentFile= da unit para esse caminho. Os valores ficam então no disco, legíveis pelo root e pelo dono do arquivo, e o Crunu não remove o arquivo depois. Prefira o crunu run sempre que puder.
Como o serviço do agente é restringido
- A unit roda como o usuário
crunu, sem capabilities, comProtectSystem=strict, um home somente leitura,/tmpe dispositivos privados e umSystemCallFilterlimitado às chamadas comuns de um serviço. - Os core dumps ficam desativados, e, no Linux, o agente fica protegido de outros processos do mesmo usuário.
- Os arquivos de estado são gravados de forma atômica. O agente registra o estado verificado mais novo antes de entregá-lo, então, depois de um reinício, o servidor não consegue revertê-lo em silêncio.
Operação
sudo systemctl enable --now crunu-agent
sudo systemctl kill -s HUP crunu-agent
crunu statusO primeiro comando inicia o agente depois que a máquina é registrada. O SIGHUP faz o agente consultar o servidor na hora, em vez de esperar o próximo minuto. O crunu status mostra a máquina, a organização dela e as impressões digitais, a concessão e cada ambiente.
Se o servidor estiver inacessível, o agente entrega o último estado verificado até a concessão terminar, 24 horas por padrão. Depois que a máquina é revogada, ele apaga os ambientes dela da memória em poucos minutos, enquanto estiver online.
Veja também
Dúvidas e respostas
Não encontrou a resposta? Escreva para support@crunu.com, e uma pessoa vai responder.
Os segredos são gravados no disco?
Com o crunu run, não: o agente mantém os ambientes em memória e os entrega por um socket local. O crunu pull --env-out só grava um arquivo quando você pede.
O que acontece se o servidor ficar inacessível?
O agente entrega o último estado verificado até a concessão terminar, 24 horas por padrão.
O serviço roda no macOS?
Não. O serviço em segundo plano é só para Linux. No macOS, o crunu funciona como ferramenta de linha de comando.