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.pemObter via:
docker exec dev_stepca_tatuzim cat /home/step/certs/root_ca.crt > /etc/tatuzim/stepca-root.pemOpcionais
`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 /healthretorna{"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 especificoExemplo 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=infoValidacao 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:8443Erros 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