Files
rodrigonet/PRODUCTION-DEPLOY.md
T
2025-08-08 10:34:12 -03:00

305 lines
6.0 KiB
Markdown

# 🐳 Deploy em Produção - Bot de Ajuda Telegram
## 📦 **ARQUIVOS CRIADOS**
### 🔧 **Arquivos Docker**
- ✅ `Dockerfile` - Configuração da imagem Docker
- ✅ `docker-compose.yml` - Orquestração de containers
- ✅ `.dockerignore` - Otimização do build
### ⚙️ **Arquivos de Configuração**
- ✅ `.env.production` - Template de configuração de produção
- ✅ `deploy.sh` - Script de deploy para Linux/Mac
- ✅ `deploy.ps1` - Script de deploy para Windows
## 🚀 **INSTRUÇÕES DE DEPLOY**
### **Pré-requisitos:**
- 🐳 Docker instalado
- 🔧 Docker Compose instalado
- 🔑 Token do bot do Telegram
- 🌐 Acesso SSH aos equipamentos
### **1. Configurar Ambiente**
**Linux/Mac:**
```bash
# Copiar template de configuração
cp .env.production .env
# Editar configurações
nano .env
```
**Windows:**
```powershell
# Copiar template de configuração
Copy-Item .env.production .env
# Editar configurações
notepad .env
```
### **2. Configurar Variáveis (arquivo .env)**
```properties
# Token do Bot (OBRIGATÓRIO)
TELEGRAM_BOT_TOKEN=7673419014:AAGK7HNBYMMWl-bTNc5VBAl4FDLutMBx7pc
# SSH (OBRIGATÓRIO)
DEFAULT_SSH_HOST=131.0.192.254
DEFAULT_SSH_USER=rodrigo
DEFAULT_SSH_PASSWORD=@102030Rod
# Bot
BOT_DEBUG=false
NODE_ENV=production
# Usuários autorizados
ALLOWED_USERS=593272271
```
### **3. Deploy Automatizado**
**Linux/Mac:**
```bash
chmod +x deploy.sh
./deploy.sh
```
**Windows:**
```powershell
.\deploy.ps1
```
### **4. Deploy Manual**
```bash
# Build e iniciar
docker-compose up -d --build
# Verificar status
docker-compose ps
# Ver logs
docker-compose logs -f telegram-bot
```
## 🏗️ **ARQUITETURA DO CONTAINER**
### **Base Image:** `node:18-alpine`
- 📦 Tamanho otimizado (~50MB)
- 🔒 Segurança aprimorada
- ⚡ Performance superior
### **Características de Segurança:**
- 👤 Usuário não-root (`botuser`)
- 🛡️ Permissões restritivas
- 🔐 Variáveis de ambiente seguras
- 📋 Health checks automáticos
### **Recursos do Container:**
- 💾 **Memória:** 256MB-512MB
- ⚡ **CPU:** 0.25-0.5 cores
- 📊 **Logs:** Rotação automática (10MB, 3 arquivos)
- 🔄 **Restart:** unless-stopped
## 🎛️ **GERENCIAMENTO**
### **Comandos Essenciais:**
```bash
# Ver status
docker-compose ps
# Ver logs em tempo real
docker-compose logs -f telegram-bot
# Reiniciar bot
docker-compose restart telegram-bot
# Parar bot
docker-compose down
# Atualizar e reiniciar
docker-compose up -d --build
# Limpar logs
docker-compose logs --tail=0 telegram-bot
# Executar comando no container
docker-compose exec telegram-bot npm --version
```
### **Monitoramento:**
```bash
# CPU e Memória
docker stats bot-ajuda-telegram
# Health check
docker-compose ps telegram-bot
# Logs de erro
docker-compose logs telegram-bot | grep ERROR
```
## 📊 **VOLUMES E PERSISTÊNCIA**
### **Logs Persistentes:**
- 📁 `./logs` → `/app/logs`
- 🔄 Rotação automática
- 📝 Formato JSON estruturado
### **Configuração:**
- 🔧 Variáveis via `.env`
- 🔒 Secrets via Docker Compose
- 📋 Configuração read-only no container
## 🚨 **TROUBLESHOOTING**
### **Bot não inicia:**
```bash
# Verificar configuração
docker-compose config
# Ver logs de erro
docker-compose logs telegram-bot
# Verificar variáveis
docker-compose exec telegram-bot env | grep TELEGRAM
```
### **Erro de SSH:**
```bash
# Testar conectividade
docker-compose exec telegram-bot ping 131.0.192.254
# Verificar credenciais
docker-compose logs telegram-bot | grep SSH
```
### **Bot não responde:**
```bash
# Health check manual
docker-compose exec telegram-bot node -e "console.log('Bot is running')"
# Verificar logs do Telegram
docker-compose logs telegram-bot | grep TelegramError
```
## 🔄 **ATUALIZAÇÕES**
### **Atualizar código:**
```bash
# Parar bot
docker-compose down
# Atualizar código (git pull, etc.)
# Rebuild e reiniciar
docker-compose up -d --build
```
### **Atualizar dependências:**
```bash
# Rebuild sem cache
docker-compose build --no-cache
docker-compose up -d
```
## 🔒 **SEGURANÇA EM PRODUÇÃO**
### **Variáveis Sensíveis:**
- 🔑 Nunca commitar arquivo `.env`
- 🔐 Usar Docker secrets em produção
- 🛡️ Restringir acesso ao servidor
### **Monitoramento:**
- 📊 Logs de tentativas de acesso
- 🚨 Alertas de falhas
- 📈 Métricas de uso
### **Backup:**
- 💾 Backup regular da configuração
- 📋 Documentar usuários autorizados
- 🔄 Plano de disaster recovery
## 📈 **MÉTRICAS E LOGS**
### **Logs Importantes:**
```bash
# Comandos executados
docker-compose logs telegram-bot | grep "📨 Mensagem"
# Operações SSH
docker-compose logs telegram-bot | grep "SSH"
# Acessos negados
docker-compose logs telegram-bot | grep "🚫 Acesso negado"
# Errors
docker-compose logs telegram-bot | grep "❌"
```
### **Monitoramento Automático:**
- 🔍 Health checks a cada 30s
- 📊 Restart automático em falhas
- 📝 Logs estruturados para análise
## 🎯 **COMANDOS DE PRODUÇÃO**
### **Deploy inicial:**
```bash
git clone <repo>
cd bot-ajuda
cp .env.production .env
# Editar .env com credenciais reais
./deploy.sh
```
### **Manutenção diária:**
```bash
# Ver status
docker-compose ps
# Ver logs recentes
docker-compose logs --tail=50 telegram-bot
# Restart se necessário
docker-compose restart telegram-bot
```
### **Deploy de atualização:**
```bash
git pull
docker-compose down
docker-compose up -d --build
docker-compose logs --tail=20 telegram-bot
```
## ✅ **RESULTADO FINAL**
**Após o deploy bem-sucedido, você terá:**
- 🤖 **Bot rodando em container Docker**
- 🔒 **Usuário restrito e seguro**
- 📊 **Logs persistentes e organizados**
- 🔄 **Restart automático em falhas**
- 📈 **Monitoramento via health checks**
- 🛡️ **Variáveis de ambiente seguras**
- ⚡ **Performance otimizada**
**Para testar:** Envie `/start` para o bot no Telegram!
## 🎉 **PRONTO PARA PRODUÇÃO!**
Seu bot agora está:
- ✅ Containerizado e isolado
- ✅ Configurado para produção
- ✅ Monitorado automaticamente
- ✅ Seguro e restrito
- ✅ Fácil de gerenciar e atualizar
**Deploy completo e bot em produção!** 🚀🎯