91 lines
4.3 KiB
Markdown
91 lines
4.3 KiB
Markdown
|
|
---
|
|||
|
|
adr: ADR-005
|
|||
|
|
title: Self-hosted by default — managed SaaS exige excecao escrita; politica de excecoes vigentes
|
|||
|
|
status: accepted
|
|||
|
|
date: 2026-05-23
|
|||
|
|
deciders: sa-principal, sa-platform-lead
|
|||
|
|
project: disclosure-bureau
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Context
|
|||
|
|
|
|||
|
|
O `systems-atelier` declara no manifest:
|
|||
|
|
|
|||
|
|
> "Open-source e self-hosted em VPS por padrao. SaaS/managed exige excecao escrita e justificada."
|
|||
|
|
|
|||
|
|
O Disclosure Bureau implementa essa politica em maioria mas mantem dependencias externas que precisam ser **explicitas** para nao virarem dette tecnica oculta:
|
|||
|
|
|
|||
|
|
| Dependencia externa | Categoria | Justificativa |
|
|||
|
|
|---|---|---|
|
|||
|
|
| OpenRouter (chat sincrono) | LLM proxy | Tier free 0 USD; tool calling funciona; sem alternativa OSS local com mesma qualidade + multi-modelo |
|
|||
|
|
| Anthropic Claude (vision + investigator) | LLM | Sonnet 4.6 vision para PDF + agente investigador. Sem OSS equivalente em qualidade vision. |
|
|||
|
|
| Claude Code OAuth Max 20x | LLM (quota) | Quota gratis ja paga. Mesmo provider, canal alternativo. |
|
|||
|
|
| Spacemail (SMTP) | Email transactional | Magic-link envio. SES self-host overkill para volume baixo. |
|
|||
|
|
| Let's Encrypt (TLS) | PKI | Padrao da industria. CertResolver via Traefik. |
|
|||
|
|
| war.gov source PDFs | Data source | E o corpus em si — nao auto-substituivel. |
|
|||
|
|
| GitHub (deploy artifacts) | Code host | Pode migrar para Forgejo/Gitea self-host (Q3 2026 review). |
|
|||
|
|
| Hetzner / similar VPS | IaaS | Infra fisica; nao se evita. |
|
|||
|
|
|
|||
|
|
E o que **NAO** entra (self-host adotado):
|
|||
|
|
|
|||
|
|
- Postgres (Supabase) — self-host.
|
|||
|
|
- GoTrue, PostgREST, Realtime, Storage, Imgproxy, Studio, Kong — self-host.
|
|||
|
|
- BGE-M3 + Reranker — self-host (embed-service).
|
|||
|
|
- Meilisearch — self-host.
|
|||
|
|
- Traefik — self-host.
|
|||
|
|
- Sentry — **decisao W1**: avaliar Glitchtip self-host vs Sentry cloud free tier.
|
|||
|
|
|
|||
|
|
## Decision
|
|||
|
|
|
|||
|
|
**Politica formal:**
|
|||
|
|
|
|||
|
|
1. **Default: self-host.** Qualquer novo servico/dependencia comeca avaliando OSS self-hostable.
|
|||
|
|
2. **Excecao escrita** em ADR quando:
|
|||
|
|
- Sem alternativa OSS com qualidade aceitavel (criterio claro), OU
|
|||
|
|
- Custo de operar self-host > custo direto SaaS × 12 meses, OU
|
|||
|
|
- Restricao legal/compliance especifica.
|
|||
|
|
3. **Excecoes vigentes** listadas na tabela acima. Cada uma precisa ser:
|
|||
|
|
- Sem state critico do projeto (exemplo: dados podem ser exportados a qualquer momento; nao ha lock-in).
|
|||
|
|
- Substituivel em <4 semanas de trabalho (plano de saida documentado).
|
|||
|
|
4. **Excecoes proibidas:**
|
|||
|
|
- **Gemini** (politica especifica do projeto; ver `feedback-no-gemini-ever.md` memoria).
|
|||
|
|
- Banco de dados managed (RDS, Supabase Cloud paid) — corpus precisa estar 100% sob controle.
|
|||
|
|
- LLM gateway pagas alem de OpenRouter free tier sem ADR especifico.
|
|||
|
|
- CDN com state (Vercel KV, Cloudflare D1) — viola "data soberania".
|
|||
|
|
5. **Periodicamente:** revisar lista de excecoes (semestre). Revisar se equilibrio mudou (ex: Glitchtip amadureceu? Forgejo viavel?).
|
|||
|
|
|
|||
|
|
## Consequences
|
|||
|
|
|
|||
|
|
**Positivas:**
|
|||
|
|
- Soberania de dados sobre corpus desclassificado (motivo central do projeto).
|
|||
|
|
- Custo recorrente baixo (~10 EUR/mes VPS + $0 OpenRouter free + $30-110/mes LLM agentic).
|
|||
|
|
- Sem dependencia de business decisions de fornecedor (Vercel mudar tier, Supabase Cloud aumentar preco).
|
|||
|
|
|
|||
|
|
**Negativas:**
|
|||
|
|
- Mais operacao (10 containers no VPS, monitorados manualmente).
|
|||
|
|
- Atualizacoes de seguranca por nossa conta (Trivy em CI mitiga).
|
|||
|
|
- Backup/DR e nosso problema (W5+ adicionar backup strategy).
|
|||
|
|
|
|||
|
|
## Verification
|
|||
|
|
|
|||
|
|
- `docker-compose.yml` lista todos os servicos do data plane self-host. Confirmado.
|
|||
|
|
- Lista de excecoes nesta ADR. Confirmar trimestralmente.
|
|||
|
|
- Plano de saida documentado para cada excecao:
|
|||
|
|
- OpenRouter -> Mistral.ai self-host (>= 70B local com GPU) em 2-4 semanas.
|
|||
|
|
- Anthropic -> Llama local (BAIXA qualidade hoje; 2027+).
|
|||
|
|
- Spacemail SMTP -> Postfix self-host em 1 dia.
|
|||
|
|
- GitHub -> Forgejo self-host em 1 semana.
|
|||
|
|
|
|||
|
|
## Future review triggers
|
|||
|
|
|
|||
|
|
- Volume de chat > 10k/dia: avaliar movido para Mistral/Groq self-host.
|
|||
|
|
- Quota Anthropic Max 20x saturada constantemente: avaliar adicionar API key paid OU mover para local model.
|
|||
|
|
- Sentry cloud free tier estoura: instalar Glitchtip imediatamente.
|
|||
|
|
- Auditoria seguranca pediu zero-trust extra: provisionar VPS dedicado para investigator-runtime em rede separada.
|
|||
|
|
|
|||
|
|
## References
|
|||
|
|
|
|||
|
|
- `systems-atelier/business.yaml` (manifest do business)
|
|||
|
|
- Memoria do projeto: `feedback-no-gemini-ever.md`, `user-plan-max-20x.md`
|
|||
|
|
- `infra/disclosure-stack/docker-compose.yml`
|