Files
PsAgentIA/DEPLOY.md
T
marco fcf01cb19e feat(deploy): add systemd service configuration and update deployment documentation
Add psagentia.service file for systemd service management and update DEPLOY.md
with new deployment paths, user service option (without sudo), and improved
service management commands for both system and user-level installations.
2026-09-03 16:51:18 -03:00

212 lines
5.1 KiB
Markdown
Executable File

# Deploy — PsAgentIA no Debian 12
Este documento descreve como colocar o sistema PsAgentIA para rodar de forma contínua em um servidor Debian 12 (Bookworm), com auto-start no boot e logs centralizados.
---
## 1. Pré-requisitos no servidor
```bash
sudo apt update
sudo apt install -y python3 python3-venv python3-pip git curl
```
Acesse o servidor como usuário comum (ex: `marco` ou `ubuntu`). NÃO execute como root a menos que saiba o que está fazendo.
---
## 2. Clonar o repositório
```bash
cd ~
git clone <URL_DO_REPOSITORIO> PsAgentIA
cd PsAgentIA/app
```
---
## 3. Configurar o ambiente
```bash
chmod +x iniciar.sh
cp .env.example .env
nano .env # edite com suas chaves
```
Preencha obrigatoriamente:
- `TELEGRAM_BOT_TOKEN`
- `TELEGRAM_CHAT_ID`
- pelo menos uma chave de IA (`OPENROUTER_API_KEY`, `STEPFUN_API_KEY` ou `QWENCLOUD_API_KEY`)
---
## 4. Testar manualmente antes do deploy
```bash
./iniciar.sh
```
Envie uma mensagem no Telegram para o bot. Se responder, pare o processo com `CTRL+C` e prossiga.
---
## 5. Criar usuário de serviço dedicado (recomendado)
```bash
sudo useradd -r -s /bin/bash -m -d /home/psagentia psagentia
sudo chown -R marco:marco /home/marco/PsAgentIA
```
Ajuste permissões:
```bash
sudo chmod 600 .env
```
---
## 6. Criar serviço systemd
### Opção A — Serviço de sistema (requer sudo)
Crie o arquivo `/etc/systemd/system/psagentia.service`:
```ini
[Unit]
Description=PsAgentIA - Personal Agent IA Conversacional
After=network.target
[Service]
Type=simple
User=marco
WorkingDirectory=/home/marco/PsAgentIA/app
Environment="PATH=/home/marco/PsAgentIA/app/venv/bin:/usr/local/bin:/usr/bin:/bin"
ExecStart=/home/marco/PsAgentIA/app/venv/bin/python3 /home/marco/PsAgentIA/app/psagentia_agent.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
```
Ajuste `User` e `WorkingDirectory` conforme seu cenário.
### Opção B — Serviço de usuário (não requer sudo)
Se o arquivo `psagentia.service` já existe em `~/.config/systemd/user/`, basta:
```bash
systemctl --user daemon-reload
systemctl --user enable --now psagentia.service
```
---
## 7. Ativar e iniciar o serviço
### Opção A — Serviço de sistema (requer sudo, sobrevive a reboot)
```bash
sudo systemctl daemon-reload
sudo systemctl enable psagentia.service
sudo systemctl start psagentia.service
```
### Opção B — Serviço de usuário (sem sudo, NÃO sobrevive a reboot — use se não tiver sudo)
```bash
systemctl --user daemon-reload
systemctl --user enable --now psagentia.service
```
> **Importante:** Se usar a Opção B (serviço de usuário), o processo será morto quando você fizer logout. Para torná-lo persistente mesmo sem login, adicione ` lingering` para o usuário:
> ```bash
> sudo loginctl enable-linger marco
> ```
Comandos úteis (Opção A — sistema):
```bash
sudo systemctl status psagentia.service # status
sudo journalctl -u psagentia.service -f # logs em tempo real
sudo systemctl restart psagentia.service # reiniciar após alterações
sudo systemctl stop psagentia.service # parar
```
Comandos úteis (Opção B — usuário):
```bash
systemctl --user status psagentia.service # status
journalctl --user -u psagentia.service -f # logs em tempo real
systemctl --user restart psagentia.service # reiniciar
systemctl --user stop psagentia.service # parar
```
---
## 8. Verificar se está funcionando
```bash
sudo systemctl status psagentia.service
```
Envie uma mensagem no Telegram para o bot. Se não houver resposta, verifique os logs:
```bash
sudo journalctl -u psagentia.service -n 100 --no-pager
```
### Possíveis causas se não responder
1. **Você está mandando mensagem para o bot errado** — confira o username do bot (ex: `@hermesjogo1000_bot`).
2. **Chat ID errado** — use `/debug` no bot para ver o chat ID da mensagem e compare com `TELEGRAM_CHAT_ID` no `.env`.
3. **Token inválido** — o bot pode ter sido revogado no @BotFather.
4. **Firewall bloqueando saída** — teste: `curl -s https://api.telegram.org` deve funcionar.
5. **Chave de IA ausente ou inválida** — o bot recebe a mensagem mas não consegue responder; verifique os logs.
---
## 9. Atualizações
```bash
cd /home/marco/PsAgentIA
git pull
cd app
source venv/bin/activate
pip install -r requirements.txt -q
sudo systemctl restart psagentia.service
```
---
## 10. Segurança
- Nunca comite o arquivo `.env` em repositórios públicos.
- Restrinja permissões: `chmod 600 .env`.
- Revogue tokens expostos e gere novos no @BotFather ou nos provedores de IA.
- Considere usar um `.env` fora do diretório do projeto se o servidor for compartilhado.
---
## 11. Estrutura final no servidor
```
/home/marco/PsAgentIA/
├── app/
│ ├── psagentia_agent.py
│ ├── iniciar.sh
│ ├── .env
│ ├── requirements.txt
│ ├── user_profile.json
│ ├── contexts/
│ │ └── YYYY-MM-DD.json
│ ├── README.md
│ └── LICENSE
├── venv/ # ambiente virtual local
└── .git/
```
Serviço: `/etc/systemd/system/psagentia.service`