367 lines
7.1 KiB
Markdown
367 lines
7.1 KiB
Markdown
# Deploy em VPS - ThorAgentIA
|
|
|
|
Guia completo para rodar o ThorAgentIA automaticamente em um servidor VPS Linux (Debian/Ubuntu).
|
|
|
|
---
|
|
|
|
## Pré-requisitos
|
|
|
|
- Acesso SSH ao servidor VPS
|
|
- Python 3.10+ instalado
|
|
- Git (opcional, para clonar o repositório)
|
|
- Sudo/root configurado
|
|
|
|
---
|
|
|
|
## Passo 1: Preparar o Servidor
|
|
|
|
```bash
|
|
# Atualizar pacotes
|
|
sudo apt update && sudo apt upgrade -y
|
|
|
|
# Instalar dependências básicas
|
|
sudo apt install -y python3 python3-venv python3-pip git curl
|
|
|
|
# Verificar versão do Python
|
|
python3 --version
|
|
```
|
|
|
|
---
|
|
|
|
## Passo 2: Transferir o Projeto para o VPS
|
|
|
|
### Opção A: Via Git (recomendado)
|
|
|
|
```bash
|
|
# Clonar o repositório
|
|
git clone <URL_DO_REPOSITORIO> /opt/thoragentia
|
|
cd /opt/thoragentia/app
|
|
```
|
|
|
|
### Opção B: Via SCP/SFTP
|
|
|
|
```bash
|
|
# No seu computador local
|
|
scp -r app/ usuario@vps:/opt/thoragentia/
|
|
```
|
|
|
|
### Opção C: Via rsync
|
|
|
|
```bash
|
|
rsync -avz app/ usuario@vps:/opt/thoragentia/app/
|
|
```
|
|
|
|
---
|
|
|
|
## Passo 3: Configurar o Ambiente
|
|
|
|
```bash
|
|
cd /opt/thoragentia/app
|
|
|
|
# Dar permissão de execução ao script
|
|
chmod +x iniciar.sh
|
|
|
|
# Executar o script de inicialização
|
|
./iniciar.sh
|
|
```
|
|
|
|
O script irá:
|
|
- Criar o ambiente virtual
|
|
- Instalar dependências
|
|
- Preparar o sistema
|
|
|
|
---
|
|
|
|
## Passo 4: Configurar Variáveis de Ambiente
|
|
|
|
```bash
|
|
# Criar/editar o arquivo .env
|
|
nano /opt/thoragentia/app/.env
|
|
```
|
|
|
|
Preencher com:
|
|
```env
|
|
TELEGRAM_BOT_TOKEN=seu_token
|
|
TELEGRAM_CHAT_ID=seu_chat_id
|
|
INTERVAL_MINUTES=60
|
|
START_HOUR=7
|
|
END_HOUR=22
|
|
DAYS_OF_WEEK=1,2,3,4,5,6,7
|
|
TOPICS=Marketing,Negócios,Produtividade,Liderança,Vendas
|
|
|
|
OPENROUTER_API_KEY=sua_chave_openrouter
|
|
OPENROUTER_MODEL=seu_modelo
|
|
```
|
|
|
|
---
|
|
|
|
## Método 1: systemd (Recomendado para Produção)
|
|
|
|
### 4.1 Criar o arquivo de serviço
|
|
|
|
```bash
|
|
sudo nano /etc/systemd/system/thoragentia.service
|
|
```
|
|
|
|
Conteúdo:
|
|
```ini
|
|
[Unit]
|
|
Description=ThorAgentIA - Sistema de Insights via Telegram
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=marco
|
|
Group=seu_usuario
|
|
WorkingDirectory=/opt/thoragentia/app
|
|
ExecStart=/opt/thoragentia/app/venv/bin/python3 /opt/thoragentia/app/main.py
|
|
Restart=always
|
|
RestartSec=10
|
|
StandardOutput=journal
|
|
StandardError=journal
|
|
SyslogIdentifier=thoragentia
|
|
|
|
# Segurança (opcional mas recomendado)
|
|
NoNewPrivileges=true
|
|
PrivateTmp=true
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
> **Importante**: Substitua `seu_usuario` pelo usuário real do sistema (não use root).
|
|
|
|
### 4.2 Habilitar e iniciar o serviço
|
|
|
|
```bash
|
|
# Recarregar configurações do systemd
|
|
sudo systemctl daemon-reload
|
|
|
|
# Habilitar inicialização automática no boot
|
|
sudo systemctl enable thoragentia.service
|
|
|
|
# Iniciar o serviço
|
|
sudo systemctl start thoragentia.service
|
|
```
|
|
|
|
### 4.3 Comandos de gerenciamento
|
|
|
|
```bash
|
|
# Verificar status do serviço
|
|
sudo systemctl status thoragentia.service
|
|
|
|
# Parar o serviço
|
|
sudo systemctl stop thoragentia.service
|
|
|
|
# Reiniciar o serviço
|
|
sudo systemctl restart thoragentia.service
|
|
|
|
# Ver logs em tempo real
|
|
sudo journalctl -u thoragentia.service -f
|
|
|
|
# Ver últimas 100 linhas de log
|
|
sudo journalctl -u thoragentia.service -n 100
|
|
|
|
# Desabilitar inicialização automática
|
|
sudo systemctl disable thoragentia.service
|
|
```
|
|
|
|
### 4.4 Verificar se está rodando
|
|
|
|
```bash
|
|
ps aux | grep main.py | grep -v grep
|
|
```
|
|
|
|
---
|
|
|
|
## Método 2: screen/tmux (Alternativa Simples)
|
|
|
|
### Usando screen
|
|
|
|
```bash
|
|
# Instalar screen (se não tiver)
|
|
sudo apt install -y screen
|
|
|
|
# Criar uma nova sessão
|
|
screen -S thoragentia
|
|
|
|
# Dentro da sessão, executar:
|
|
cd /opt/thoragentia/app
|
|
source venv/bin/activate
|
|
python3 main.py
|
|
|
|
# Desanexar da sessão: Ctrl+A, depois D
|
|
|
|
# Para retomar a sessão:
|
|
screen -r thoragentia
|
|
|
|
# Para encerrar a sessão:
|
|
# Dentro da sessão: Ctrl+C, depois digite "exit"
|
|
```
|
|
|
|
### Usando tmux
|
|
|
|
```bash
|
|
# Instalar tmux
|
|
sudo apt install -y tmux
|
|
|
|
# Criar nova sessão
|
|
tmux new -s thoragentia
|
|
|
|
# Executar:
|
|
cd /opt/thoragentia/app
|
|
source venv/bin/activate
|
|
python3 main.py
|
|
|
|
# Desanexar: Ctrl+B, depois D
|
|
|
|
# Retomar sessão:
|
|
tmux attach -t thoragentia
|
|
|
|
# Encerrar sessão:
|
|
# Dentro da sessão: Ctrl+C, depois digite "exit"
|
|
```
|
|
|
|
---
|
|
|
|
## Método 3: nohup (Execução Simples em Background)
|
|
|
|
```bash
|
|
cd /opt/thoragentia/app
|
|
source venv/bin/activate
|
|
|
|
# Executar em background com logs
|
|
nohup python3 main.py > thoragentia.log 2>&1 &
|
|
|
|
# Verificar PID
|
|
ps aux | grep main.py | grep -v grep
|
|
|
|
# Parar o processo (substitua PID pelo número real)
|
|
kill PID
|
|
|
|
# Ou matar todos os processos main.py
|
|
pkill -f "python3 main.py"
|
|
```
|
|
|
|
---
|
|
|
|
## Logs e Monitoramento
|
|
|
|
### Logs do systemd
|
|
```bash
|
|
# Ver logs do serviço
|
|
sudo journalctl -u thoragentia.service --since "1 hour ago"
|
|
|
|
# Ver apenas erros
|
|
sudo journalctl -u thoragentia.service -p err
|
|
|
|
# Limpar logs antigos
|
|
sudo journalctl --vacuum-time=7d
|
|
```
|
|
|
|
### Logs da aplicação (se usar nohup)
|
|
```bash
|
|
# Ver logs em tempo real
|
|
tail -f thoragentia.log
|
|
|
|
# Ver últimas 50 linhas
|
|
tail -n 50 thoragentia.log
|
|
```
|
|
|
|
---
|
|
|
|
## Atualizações do Sistema
|
|
|
|
```bash
|
|
cd /opt/thoragentia/app
|
|
|
|
# Parar o serviço (se usar systemd)
|
|
sudo systemctl stop thoragentia.service
|
|
|
|
# Atualizar código (se usar git)
|
|
git pull origin main
|
|
|
|
# Reinstalar dependências (se necessário)
|
|
source venv/bin/activate
|
|
pip install -r requirements.txt --upgrade
|
|
|
|
# Reiniciar o serviço
|
|
sudo systemctl start thoragentia.service
|
|
```
|
|
|
|
---
|
|
|
|
## Segurança
|
|
|
|
- **Nunca** comite o arquivo `.env` com dados reais
|
|
- Use permissões restritivas no `.env`:
|
|
```bash
|
|
chmod 600 /opt/thoragentia/app/.env
|
|
```
|
|
- Configure firewall para restringir acesso SSH
|
|
- Mantenha o sistema atualizado: `sudo apt update && sudo apt upgrade -y`
|
|
- Use chaves SSH para acesso ao VPS (desative senha)
|
|
|
|
---
|
|
|
|
## Solução de Problemas
|
|
|
|
### Serviço não inicia
|
|
```bash
|
|
# Verificar logs
|
|
sudo journalctl -u thoragentia.service -n 50
|
|
|
|
# Testar execução manual
|
|
cd /opt/thoragentia/app
|
|
source venv/bin/activate
|
|
python3 main.py
|
|
```
|
|
|
|
### Erro de permissão
|
|
```bash
|
|
# Ajustar permissões do diretório
|
|
sudo chown -R seu_usuario:seu_usuario /opt/thoragentia
|
|
chmod +x /opt/thoragentia/app/iniciar.sh
|
|
chmod 600 /opt/thoragentia/app/.env
|
|
```
|
|
|
|
### Variáveis de ambiente não carregam
|
|
```bash
|
|
# Verificar se o .env está no diretório correto
|
|
ls -la /opt/thoragentia/app/.env
|
|
|
|
# Testar leitura do .env
|
|
cd /opt/thoragentia/app
|
|
python3 -c "from dotenv import load_dotenv; import os; load_dotenv(); print(os.getenv('TELEGRAM_BOT_TOKEN'))"
|
|
```
|
|
|
|
---
|
|
|
|
## Backup
|
|
|
|
```bash
|
|
# Fazer backup do .env
|
|
cp /opt/thoragentia/app/.env /home/seu_usuario/backup-thoragentia-$(date +%Y%m%d).env
|
|
|
|
# Backup completo do projeto
|
|
tar -czf thoragentia-backup-$(date +%Y%m%d).tar.gz /opt/thoragentia/
|
|
```
|
|
|
|
---
|
|
|
|
## Comandos Rápidos de Referência
|
|
|
|
| Ação | Comando (systemd) | Comando (screen/tmux) | Comando (nohup) |
|
|
|------|------------------|----------------------|-----------------|
|
|
| Iniciar | `sudo systemctl start thoragentia` | `screen -r thoragentia` + `python3 main.py` | `nohup python3 main.py &` |
|
|
| Parar | `sudo systemctl stop thoragentia` | `Ctrl+C` dentro da sessão | `pkill -f main.py` |
|
|
| Status | `sudo systemctl status thoragentia` | `screen -ls` / `tmux ls` | `ps aux \| grep main.py` |
|
|
| Logs | `sudo journalctl -u thoragentia -f` | Ver tela da sessão | `tail -f thoragentia.log` |
|
|
| Reiniciar | `sudo systemctl restart thoragentia` | Parar e iniciar novamente | `pkill -f main.py` + `nohup ...` |
|
|
|
|
---
|
|
|
|
## Contato
|
|
|
|
Para suporte: marcocosta@gmx.com
|