From fcf01cb19e856a4fc0dd3c4a355690b8a410f63c Mon Sep 17 00:00:00 2001 From: marco Date: Thu, 3 Sep 2026 16:51:18 -0300 Subject: [PATCH] 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. --- .env | 1 + DEPLOY.md | 53 +++++++++++++++++++++++++++++++++++++++-------- psagentia.service | 17 +++++++++++++++ 3 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 psagentia.service diff --git a/.env b/.env index ffe50c7..b0d9138 100755 --- a/.env +++ b/.env @@ -4,6 +4,7 @@ TELEGRAM_CHAT_ID=7889499475 # Default AI Model DEFAULT_MODEL=inclusionai/ling-3.0-flash +DEFAULT_MODEL=minimax/minimax-m3:free # OpenRouter Configuration diff --git a/DEPLOY.md b/DEPLOY.md index 84834ac..62b3f50 100755 --- a/DEPLOY.md +++ b/DEPLOY.md @@ -67,6 +67,8 @@ 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 @@ -77,9 +79,9 @@ After=network.target [Service] Type=simple User=marco -WorkingDirectory=/opt/PsAgentIAMarco/app -Environment="PATH=/opt/PsAgentIAMarco/app/venv/bin:/usr/bin:/bin" -ExecStart=/opt/PsAgentIAMarco/app/venv/bin/python3 /opt/PsAgentIAMarco/app/psagentia_agent.py +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 @@ -91,22 +93,55 @@ 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 psagentiamarco.service -sudo systemctl start psagentiamarco.service +sudo systemctl enable psagentia.service +sudo systemctl start psagentia.service ``` -Comandos úteis: +### Opção B — Serviço de usuário (sem sudo, NÃO sobrevive a reboot — use se não tiver sudo) ```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 +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 ``` --- diff --git a/psagentia.service b/psagentia.service new file mode 100644 index 0000000..dc82166 --- /dev/null +++ b/psagentia.service @@ -0,0 +1,17 @@ +[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