Pular para o conteúdo
EmbutidoServidores e contêineres

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
Exemplo. A Kiteline é uma empresa fictícia.

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:

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 -

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

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

O 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:

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

Aponte 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, com ProtectSystem=strict, um home somente leitura, /tmp e dispositivos privados e um SystemCallFilter limitado à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

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

O 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.

Experimente com systemd

Crie a sua organização em app.crunu.com, adicione um ambiente e conecte-o. Grátis durante o acesso antecipado.