Guias de deploy#
O sulfite_server suporta quatro modalidades de execução, do mais simples ao mais robusto. Todas elas usam os mesmos relatórios e a mesma API REST — o que muda é onde o estado é armazenado.
Comparativo#
| Modalidade | Infra necessária | Persistência | Múltiplas réplicas | Indicado para |
|---|---|---|---|---|
| In-memory | Nenhuma | Não | Não | Dev local, demos, CI |
| SQLite | Nenhuma | Sim (arquivo) | Não | Times pequenos, single-node |
| PostgreSQL | Banco Postgres | Sim | Não (recomendado) | Produção single-node |
| Cluster | Postgres + S3 + proxy | Sim | Sim | Produção escalável |
Como escolher#
Estou testando localmente ou em CI?
└─ In-memory — zero config, zero deps
Preciso de persistência mas não quero banco externo?
└─ SQLite — um volume Docker já resolve
Vou para produção mas uma instância basta?
└─ PostgreSQL — confiável, fácil de operar
Preciso escalar horizontalmente ou ter zero downtime?
└─ Cluster (RFC-037) — N réplicas stateless atrás de um load balancer
Arquitetura geral#
Independente da modalidade, o servidor expõe a mesma API REST na porta configurada (PORT, default
8090) e o mesmo endpoint /health.
O que muda entre as modalidades é onde cada "store" guarda seu estado:
| Store | In-memory | SQLite | Postgres | Cluster |
|---|---|---|---|---|
| Relatórios | RAM | Arquivo .db |
Tabela Postgres | Tabela Postgres |
| Tokens JWT | RAM | RAM | Tabela Postgres | Tabela Postgres |
| Job queue | RAM | RAM | Tabela Postgres | Tabela Postgres |
| Share links | RAM | RAM | RAM | Tabela Postgres |
| Binários de share | RAM | RAM | RAM | S3 |
| Rate limit | RAM | RAM | RAM | Tabela Postgres |
Exemplos prontos#
Todos os exemplos abaixo usam o mesmo Dockerfile em examples/server/ e os mesmos 25 relatórios de demonstração. Basta escolher o
docker-compose da modalidade desejada.
examples/server/
docker-compose.memory.yml ← in-memory
docker-compose.sqlite.yml ← SQLite
docker-compose.postgres.yml ← PostgreSQL single-node
docker-compose.cluster.yml ← cluster com Traefik + MinIO
Ver também#
- Configuração completa — todas as env vars
- Escala horizontal — detalhes do RFC-037
- Multi-tenancy — isolamento de tenants