# 🚀 Guia de Deploy Completo - Cidadão.AI ## 📊 Comparação de Opções | Opção | Custo | Complexidade | Recursos | Recomendado Para | |-------|-------|--------------|----------|------------------| | **HuggingFace Spaces** | Grátis | Fácil | Limitado (sem DB/Redis) | Demo/MVP | | **Render.com** | Grátis/Pago | Médio | Completo | Produção pequena | | **Railway.app** | $5-20/mês | Fácil | Completo | Produção média | | **VPS + Docker** | $5-40/mês | Difícil | Completo | Controle total | | **Kubernetes** | $100+/mês | Expert | Escalável | Produção grande | ## 🏃 Quick Start - Deploy Completo ### Opção 1: Render.com (Recomendado para começar) 1. **Crie conta no Render.com** 2. **Configure o Blueprint**: ```bash git add render.yaml git commit -m "Add Render deployment config" git push origin main ``` 3. **No Render Dashboard**: - New > Blueprint - Connect GitHub repo - Add environment variables: - `MARITACA_API_KEY` - `GROQ_API_KEY` - `JWT_SECRET_KEY` - `SECRET_KEY` ### Opção 2: VPS com Docker (Mais controle) 1. **Prepare o VPS** (Ubuntu 22.04): ```bash # No seu computador export VPS_HOST=user@your-vps-ip ./deploy.sh vps ``` 2. **Configure SSL**: ```bash ssh $VPS_HOST sudo certbot --nginx -d api.cidadao.ai ``` 3. **Monitore**: ```bash docker-compose -f docker-compose.production.yml logs -f ``` ## 🔧 Configuração Completa ### 1. Banco de Dados PostgreSQL ```sql -- Criar database CREATE DATABASE cidadao; CREATE USER cidadao WITH ENCRYPTED PASSWORD 'strong_password'; GRANT ALL PRIVILEGES ON DATABASE cidadao TO cidadao; -- Extensões necessárias CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; CREATE EXTENSION IF NOT EXISTS "pg_trgm"; ``` ### 2. Redis Configuration ```conf # redis.conf maxmemory 256mb maxmemory-policy allkeys-lru save 900 1 save 300 10 save 60 10000 ``` ### 3. Nginx Configuration ```nginx server { listen 80; server_name api.cidadao.ai; location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /ws { proxy_pass http://localhost:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } ``` ## 🔒 Segurança em Produção 1. **Firewall**: ```bash sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable ``` 2. **Backups automáticos**: ```bash # Adicione ao crontab 0 2 * * * pg_dump cidadao | gzip > /backups/cidadao_$(date +\%Y\%m\%d).sql.gz ``` 3. **Monitoramento**: - Grafana: http://your-server:3000 - Prometheus: http://your-server:9090 ## 📈 Otimizações para Produção 1. **Database Indexes**: ```sql CREATE INDEX idx_contracts_date ON contracts(created_at); CREATE INDEX idx_contracts_value ON contracts(value); CREATE INDEX idx_investigations_status ON investigations(status); ``` 2. **Redis Clustering** (opcional): ```bash # Para alta disponibilidade docker-compose -f docker-compose.redis-cluster.yml up -d ``` 3. **CDN para Assets**: - Configure Cloudflare - Cache static files ## 🔍 Troubleshooting ### Problema: "Network is unreachable" **Solução**: Configure DATABASE_URL corretamente ### Problema: "Redis connection refused" **Solução**: Verifique REDIS_URL e senha ### Problema: "Out of memory" **Solução**: Aumente limits no Docker: ```yaml deploy: resources: limits: memory: 2G ``` ## 📊 Monitoramento ### Métricas importantes: - API Latency P95 < 200ms - Error Rate < 1% - Cache Hit Rate > 80% - Database Connections < 80% ### Alertas recomendados: - CPU > 80% por 5 minutos - Memory > 90% - Error rate > 5% - Database down ## 🚀 Checklist de Deploy - [ ] Variáveis de ambiente configuradas - [ ] Banco de dados com migrations rodadas - [ ] Redis funcionando - [ ] SSL/HTTPS configurado - [ ] Backups automáticos - [ ] Monitoramento ativo - [ ] Logs centralizados - [ ] Rate limiting configurado - [ ] CORS para frontend - [ ] Health checks passando ## 💡 Dicas Finais 1. **Comece pequeno**: Use Render.com gratuito 2. **Escale conforme necessário**: Migre para K8s quando precisar 3. **Monitore sempre**: Configure alertas antes de problemas 4. **Faça backups**: Automatize desde o dia 1 5. **Documente tudo**: Mantenha este guia atualizado