Variaveis de ambiente do `tatuzim-server`

Todas as variaveis sao lidas no boot. Mudancas exigem restart.

Obrigatorias

`TATUZIM_MASTER_PASSPHRASE`

Passphrase mestra do vault. Argon2id deriva a KEK que decripta a DEK (que decripta o vault).

  • Sem ela, server nao sobe (Error: vault unsealed — wrong passphrase?)
  • Sem ela, vault e inrecoveravel

Exemplos:

TATUZIM_MASTER_PASSPHRASE="senha-forte-com-muita-entropia-12345"

`TATUZIM_STEPCA_URL`

URL HTTPS do step-ca. Usado pra POST /1.0/sign (assinar CSRs).

TATUZIM_STEPCA_URL=https://step-ca:9000      # rede docker interna
TATUZIM_STEPCA_URL=https://localhost:9000     # bare-metal

`TATUZIM_STEPCA_PROVISIONER_KID`

Key ID do JWK provisioner do step-ca. Obter via:

docker exec dev_stepca_tatuzim step ca provisioner list | jq -r '.[0].key.kid'

`TATUZIM_STEPCA_PROVISIONER_KEY`

JWK private key do provisioner (JSON inline). Server usa pra assinar OTT (one-time tokens) que o step-ca aceita.

ENC_KEY=$(docker exec dev_stepca_tatuzim step ca provisioner list | jq -r '.[0].encryptedKey')
PROV_KEY=$(docker exec -i dev_stepca_tatuzim sh -c \
    "echo '$ENC_KEY' | step crypto jwe decrypt --password-file /run/secrets/ca_password")

# Inline JSON (uma linha):
TATUZIM_STEPCA_PROVISIONER_KEY=$(echo "$PROV_KEY" | jq -c .)

Formato:

{"kty":"EC","crv":"P-256","alg":"ES256","kid":"...","x":"...","y":"...","d":"..."}

`TATUZIM_STEPCA_ROOT_CA_PATH`

Caminho do root CA cert do step-ca. Usado pra trustar o step-ca em chamadas HTTPS.

TATUZIM_STEPCA_ROOT_CA_PATH=/etc/tatuzim/stepca-root.pem

Obter via:

docker exec dev_stepca_tatuzim cat /home/step/certs/root_ca.crt > /etc/tatuzim/stepca-root.pem

Opcionais

`TATUZIM_VAULT_ROOT`

Diretorio do vault.

  • Default: /var/lib/tatuzim
  • Conteudo: config.json, db.enc, db.plain (runtime), vault.lock, server.crt/key/ca.crt

`TATUZIM_SERVER_CN`

CN do cert TLS do proprio server (auto-bootstrap via step-ca).

  • Default: tatuzim-server.local
  • Producao: o dominio publico do server (tatuzim.dev.borlot.com.br)
TATUZIM_SERVER_CN=tatuzim.dev.borlot.com.br

`TATUZIM_HEALTH_BIND`

Endereco do endpoint de health (plain HTTP).

  • Default: 0.0.0.0:8080
  • Conteudo: GET /health retorna {"status":"ok","version":"..."}

`TATUZIM_ENROLL_BIND`

Endereco do enroll endpoint (plain HTTP — agente ainda nao tem cert).

  • Default: 0.0.0.0:8444
  • Producao: tipicamente exposto via reverse proxy com TLS termination Let's Encrypt
TATUZIM_ENROLL_BIND=0.0.0.0:8444

`TATUZIM_MTLS_BIND`

Endereco do endpoint mTLS strict (HTTPS com WebPkiClientVerifier).

  • Default: 0.0.0.0:8443
  • Rotas: /v1/certs/issue, /v1/manifest, /v1/events
  • Producao: exposto direto (Traefik nao passa client cert facilmente)

Variaveis de log

`RUST_LOG`

Filtro de logs (formato tracing-subscriber).

RUST_LOG=info                              # default
RUST_LOG=debug                             # tudo em debug
RUST_LOG=tatuzim_server=debug,info         # tatuzim_server em debug, resto info
RUST_LOG=tatuzim_server::server_identity=trace,info  # modulo especifico

Exemplo completo (.env)

# === Vault ===
TATUZIM_MASTER_PASSPHRASE=COLOQUE-UMA-SENHA-FORTE
TATUZIM_VAULT_ROOT=/var/lib/tatuzim

# === Bind ===
TATUZIM_HEALTH_BIND=0.0.0.0:8080
TATUZIM_ENROLL_BIND=0.0.0.0:8444
TATUZIM_MTLS_BIND=0.0.0.0:8443

# === Identidade do server ===
TATUZIM_SERVER_CN=tatuzim.dev.borlot.com.br

# === step-ca integration ===
TATUZIM_STEPCA_URL=https://step-ca:9000
TATUZIM_STEPCA_PROVISIONER_KID=EXEMPLO_PROVISIONER_KID_AQUI
TATUZIM_STEPCA_PROVISIONER_KEY={"kty":"EC","crv":"P-256",...}
TATUZIM_STEPCA_ROOT_CA_PATH=/etc/tatuzim/stepca-root.pem

# === Logs ===
RUST_LOG=info

Validacao do boot

Quando todas as vars estao corretas, server loga:

INFO starting tatuzim-server vault=/var/lib/tatuzim
INFO vault lock acquired (/var/lib/tatuzim/vault.lock)
INFO vault unsealed
INFO schema verified
INFO stepca client ready
INFO server_identity: reusing existing server cert
INFO health endpoint listening addr=0.0.0.0:8080
INFO enroll endpoint listening addr=0.0.0.0:8444
INFO mTLS endpoint listening (strict) addr=0.0.0.0:8443

Erros comuns

Erro Causa Solucao
TATUZIM_STEPCA_URL required env nao setado Setar antes de subir o server
vault already locked: Resource temporarily unavailable Outro processo (CLI ou outro server) tem o lock Parar o outro processo
unwrap DEK — wrong passphrase? TATUZIM_MASTER_PASSPHRASE errada Recuperar a passphrase certa
read root CA from /etc/tatuzim/stepca-root.pem: not found Arquivo do root CA ausente Extrair via docker exec (ver instalacao)
Address already in use Porta ocupada por outro processo Mudar TATUZIM_*_BIND ou liberar a porta

Mudancas que requerem restart

  • Qualquer mudanca em env var → restart obrigatorio
  • Mudar TATUZIM_SERVER_CN → no restart, server pede cert novo (CN antigo invalido)
  • Mudar TATUZIM_VAULT_ROOT → cuidado: vault antigo nao e migrado automaticamente
By Borlot.com.br on 23/05/2026