305 lines
6.0 KiB
Markdown
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!** 🚀🎯
|