Tema
Infraestrutura
O CRM Galdix roda em um único servidor Linux com Docker Compose. Não usa Kubernetes, não usa cloud de aplicação (sem Vercel, Railway, etc.).
Visão geral
Internet
│
▼
Traefik (reverse proxy + TLS)
│
├── crm.galdix.com.br → frontend:3000
└── apicrm.galdix.com.br → backend:3001
Rede interna (network_swarm_public):
├── crm-galdix-postgres-1 (PostgreSQL 13)
├── crm-galdix-redis-1 (Redis + AOF)
├── crm-galdix-backend-1 (NestJS)
└── crm-galdix-frontend-1 (Next.js)
Serviços externos (via rede pública):
├── Azure Key Vault (secrets)
├── Clerk (autenticação)
├── Meta WhatsApp Cloud API (mensagens)
├── Chatwoot (atendimento)
├── MinIO (arquivos estáticos)
└── Millennium ERP (fonte de dados)Servidor de produção
| Característica | Valor |
|---|---|
| OS | Debian Linux |
| User | crm |
| App directory | /home/crm/app |
| Logs | /home/crm/logs/backend/ |
| Secrets | /home/crm/.crm-secrets |
Seções desta área
- Containers — especificações de cada serviço Docker
- Ambientes — produção vs desenvolvimento
- Deploy — como fazer deploy seguro
- Rollback — como reverter uma versão com problema
- Monitoramento — logs, health checks, alertas
Rede Docker
Dois projetos Docker Compose independentes:
| Projeto | Arquivo | Serviços |
|---|---|---|
crm-galdix | docker-compose.yml + override.yml + labels.yml | postgres, redis, backend, frontend |
crm-landing | docker-compose.landing.yml + landing.labels.yml | landing page |
Ambos compartilham a rede externa network_swarm_public onde o Traefik opera.
Regra crítica de deploy
NUNCA usar
docker compose updiretamente. Sempre usarbash deploy.sh.
Ver Deploy para entender por quê e como.