Distribuicao via CDN
O Tatuzim Agent e distribuido publicamente via https://get.tatuzim.com. Backbone: Cloudflare (TLS na borda) → Traefik (production) → CDN sys (proxy) → Backblaze B2 (storage).
Back-compat: o dominio anterior
https://tatuzim.ccs.systemspermanece servindo o mesmo conteudo pra nao quebrarself-updatede agents v0.1.0 ja instalados. Novas instalacoes devem usarget.tatuzim.com.
URLs publicas
Latest stable
https://get.tatuzim.com/x86_64/tatuzim-agent binario
https://get.tatuzim.com/x86_64/tatuzim-agent.minisig assinatura
https://get.tatuzim.com/x86_64/tatuzim-agent.zip ZIP original do release
https://get.tatuzim.com/aarch64/tatuzim-agent
https://get.tatuzim.com/aarch64/tatuzim-agent.minisig
https://get.tatuzim.com/aarch64/tatuzim-agent.zipVersionado (preservado)
https://get.tatuzim.com/v0.1.0/x86_64/tatuzim-agent
https://get.tatuzim.com/v0.1.0/x86_64/tatuzim-agent.minisig
https://get.tatuzim.com/v0.1.0/aarch64/tatuzim-agent
https://get.tatuzim.com/v0.1.0/aarch64/tatuzim-agent.minisigUtil pra pinning de versao em ambientes que nao podem ir pro latest.
Release Candidates (canal RC)
https://get.tatuzim.com/rc/x86_64/tatuzim-agent
https://get.tatuzim.com/rc/v0.1.1-rc.1/x86_64/tatuzim-agentDownload direto
# Detect arch
ARCH=$(uname -m) # x86_64 ou aarch64
# Baixar binario + assinatura
curl -fsSLo /tmp/tatuzim-agent https://get.tatuzim.com/$ARCH/tatuzim-agent
curl -fsSLo /tmp/tatuzim-agent.sig https://get.tatuzim.com/$ARCH/tatuzim-agent.minisig
chmod +x /tmp/tatuzim-agent
/tmp/tatuzim-agent --helpVerificacao de assinatura
Todo binario publicado e assinado com a chave minisign de release. Verificacao obrigatoria antes de executar (o self-update ja faz automaticamente).
Via `minisign` (off-the-shelf)
PUBKEY="RWSeTpgYV+16Z//WwZku61OpIYgaU8iyyN/dEYm7bOGru0vFTbdLSAcD"
minisign -V -P "$PUBKEY" \
-x /tmp/tatuzim-agent.minisig \
-m /tmp/tatuzim-agent
# Esperado: "Signature and comment signature verified"Via `rsign2` (Rust CLI, mesmo formato)
rsign2 verify -P "$PUBKEY" \
-x /tmp/tatuzim-agent.minisig \
/tmp/tatuzim-agentVia o proprio agent
Se ja tem uma versao instalada, ela tem a pubkey embutida:
sudo tatuzim-agent self-update --url https://get.tatuzim.com/$ARCHFalha com Error: signature does NOT match binary — refusing to install se a assinatura nao bater.
Headers HTTP
Resposta tipica:
HTTP/2 200
content-type: application/octet-stream
content-length: 7578584
content-disposition: inline; filename="tatuzim-agent"
cache-control: public, max-age=300, s-maxage=3600
access-control-allow-origin: https://app.cdn.borlot.com.br
cf-ray: <cloudflare-ray-id>
server: cloudflare| Header | Significado |
|---|---|
cache-control: max-age=300 |
Cliente pode cachear 5 min |
s-maxage=3600 |
Cloudflare cacheia 1h |
content-disposition: inline; filename=... |
wget/curl -O salvam com nome certo |
Layout interno (B2)
ccs-systems/ (bucket)
tatuzim/ (folder)
latest ponteiro texto (futuro)
x86_64/
tatuzim-agent binario latest stable
tatuzim-agent.minisig
tatuzim-agent.zip ZIP original
aarch64/
...
v0.1.0/ versionado (preservado)
x86_64/...
aarch64/...
rc/ canal RC
x86_64/...
aarch64/...
v0.1.1-rc.1/...CDN faz proxy direto: https://get.tatuzim.com/x86_64/foo -> b2://ccs-systems/tatuzim/x86_64/foo. O /tatuzim/ no path B2 e adicionado pelo CDN pela path_rule /tatuzim/** do dominio.
Cache
| Camada | TTL | Invalidacao |
|---|---|---|
| Cloudflare edge | s-maxage=3600 (1h) |
Manual via dashboard, ou aguardar |
| Browser/curl | max-age=300 (5min) |
Cliente |
| CDN backend | nenhum (proxy direto B2) | n/a |
Apos um release novo, novos binarios aparecem em ate 1h via cache CF, ou imediato com purga manual + ?nocache=... query string.
Bandwidth e quotas
| Recurso | Limite |
|---|---|
| B2 download/mes (account total CCS) | ~10 GB free, depois $0.01/GB |
| Cloudflare bandwidth | ilimitado (Free plan) |
| CDN rate-limit | sem rate-limit hoje |
Como o Cloudflare cacheia, requests repetidos batem em CF, nao em B2. Custos B2 reais sao baixissimos (so quando cache expira).
Confianca da cadeia
[GitOps Worker] <-- HTTPS auth via webhook secret + token GitHub
|
| upload via B2 SDK + minisign signature
v
[Backblaze B2] <-- aws_access_key_id/secret stored em GitOps env
|
| HTTPS proxy
v
[CDN backend] <-- credenciais B2 stored em CDN sys env
|
| Traefik (TLS termination Let's Encrypt)
v
[Cloudflare CDN] <-- TLS na borda (CF cert)
|
v
[Cliente] <-- verifica minisign com pubkey embutida ou conhecidaCompromisso de cada camada:
| Camada | Compromisso evita |
|---|---|
| Minisign pubkey embutida no binario | CDN/CF servindo binario maligno seria detectado |
| HTTPS end-to-end | MITM em transito |
| Cloudflare cache | aceleracao + ocultacao do origin B2 |
Troubleshooting
404 num path valido
- Confere se o release foi processado: B2 list.
- Cache CF cacheou 404 antigo? Adicionar
?cb=$(uuidgen)na URL pra bypass. - Se persistir: verificar config Traefik em production (
/opt/traefik/dynamic/cdn_tatuzim_ccs_systems.yml).
Assinatura nao bate
Indica que:
- O binario foi modificado em transito (improvavel, HTTPS)
- Voce esta usando pubkey errada (verifica que e a stable, nao a de dev)
- O agent local tem pubkey antiga embutida (atualizou? esse binario vem de quando?)
Self-update trava em "downloading"
- Verifica conectividade do agent:
curl -I https://get.tatuzim.com/x86_64/tatuzim-agentda pra rodar a partir do VPS? - Cloudflare bloqueio do VPS IP? (raro mas acontece em IPs de hostings menores)