feat: add psagentai agent with deployment and configuration
Initial project setup including the main agent script, configuration files, profile JSON state, systemd service unit, startup script, deployment documentation, and Python dependencies. Includes .env, venv/, and __pycache__/ which should likely be excluded via .gitignore to avoid committing secrets and artifacts.
This commit is contained in:
@@ -0,0 +1,223 @@
|
||||
# PsAgentAI - Deploy em Servidor
|
||||
|
||||
Deploy como serviço systemd em Debian/Ubuntu para funcionar 24/7 em VPS.
|
||||
|
||||
---
|
||||
|
||||
## Pré-requisitos no servidor
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y python3 python3-venv python3-pip git
|
||||
```
|
||||
|
||||
Habilite o journal se quiser logs persistentes (opcional):
|
||||
|
||||
```bash
|
||||
sudo apt install -y systemd-journal-remote
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1) Copie o projeto para o servidor
|
||||
|
||||
Use git ou scp/rsync. Exemplo com git:
|
||||
|
||||
```bash
|
||||
cd /opt
|
||||
sudo git clone <URL_DO_REPOSITORIO> psagentai
|
||||
sudo chown -R $USER:$USER /opt/psagentai
|
||||
cd /opt/psagentai/app
|
||||
```
|
||||
|
||||
Ajuste o caminho no serviço systemd para o diretório real:
|
||||
|
||||
```bash
|
||||
nano psagentai.service
|
||||
# altere /home/marco/PsAgentAI/app para /opt/psagentai/app
|
||||
```
|
||||
|
||||
> O serviço usa `User=marco` por padrão. Crie o usuário se não existir:
|
||||
> ```bash
|
||||
> sudo useradd -m -s /bin/bash marco || true
|
||||
> sudo usermod -aG sudo marco
|
||||
> ```
|
||||
> Ou edite `User=` no `.service` para o usuário existente do seu VPS.
|
||||
|
||||
---
|
||||
|
||||
## 2) Configure o `.env`
|
||||
|
||||
```bash
|
||||
cp .env.example .env # se existir exemplo
|
||||
nano .env
|
||||
```
|
||||
|
||||
Preencha obrigatoriamente:
|
||||
|
||||
- `TELEGRAM_BOT_TOKEN`
|
||||
- `TELEGRAM_CHAT_ID`
|
||||
- `AI_PROVIDER` (`openrouter`, `stepfun`, `qwencloud` ou `llamacpp`)
|
||||
- `DEFAULT_MODEL`
|
||||
- pelo menos a chave de IA correspondente ao provider escolhido
|
||||
|
||||
Ajuste opcionalmente:
|
||||
|
||||
- `MIN_INTERVAL_MINUTES` / `MAX_INTERVAL_MINUTES`
|
||||
- `MIN_MESSAGE_LINES`
|
||||
|
||||
> Importante: no Telegram, envie `/start` uma vez para o bot antes de ligar o serviço, caso contrário ele não conseguirá enviar mensagens iniciantes.
|
||||
|
||||
---
|
||||
|
||||
## 3) Instale as dependências
|
||||
|
||||
```bash
|
||||
chmod +x iniciar.sh
|
||||
./iniciar.sh
|
||||
```
|
||||
|
||||
Esse script cria o `venv`, instala dependências e valida as variáveis do `.env`.
|
||||
|
||||
---
|
||||
|
||||
## 4) Instale o serviço systemd
|
||||
|
||||
```bash
|
||||
# caminho absoluto no seu servidor
|
||||
sudo nano /etc/systemd/system/psagentai.service
|
||||
```
|
||||
|
||||
Conteúdo mínimo:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=PsAgentAI
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=marco
|
||||
WorkingDirectory=/opt/psagentai/app
|
||||
Environment="PATH=/opt/psagentai/app/venv/bin:/usr/local/bin:/usr/bin:/bin"
|
||||
ExecStart=/opt/psagentai/app/venv/bin/python3 /opt/psagentai/app/psagentai_agent.py
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
Ative e inicie:
|
||||
|
||||
```bash
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable psagentai
|
||||
sudo systemctl start psagentai
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5) Comandos úteis
|
||||
|
||||
```bash
|
||||
# status
|
||||
sudo systemctl status psagentai
|
||||
|
||||
# logs em tempo real
|
||||
sudo journalctl -u psagentai -f
|
||||
|
||||
# reiniciar após atualização
|
||||
sudo systemctl restart psagentai
|
||||
|
||||
# parar
|
||||
sudo systemctl stop psagentai
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6) Atualizações futuras
|
||||
|
||||
```bash
|
||||
cd /opt/psagentai/app
|
||||
git pull
|
||||
./iniciar.sh
|
||||
sudo systemctl restart psagentai
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7) Múltiplos usuários / VPSs
|
||||
|
||||
Cada instância do sistema é independente por chat ID do Telegram.
|
||||
|
||||
Para cada novo usuário/VPS:
|
||||
|
||||
1. Crie o bot via @BotFather (`/newbot`) e pegue o token.
|
||||
2. Copie o projeto em um diretório separado, por exemplo `/opt/psagentai-user2`.
|
||||
3. Crie um `.env` próprio com `TELEGRAM_BOT_TOKEN`, `TELEGRAM_CHAT_ID` e suas chaves de IA.
|
||||
4. Instale dependências com `./iniciar.sh`.
|
||||
5. Crie um serviço systemd separado, ex: `psagentai-user2.service`, apontando para esse diretório.
|
||||
6. Habilite e inicie.
|
||||
|
||||
Nomes recomendados para evitar conflito:
|
||||
|
||||
- `/opt/psagentai-user1/`, `/opt/psagentai-user2/`
|
||||
- `psagentai-user1.service`, `psagentai-user2.service`
|
||||
|
||||
---
|
||||
|
||||
## 8) Variáveis do `.env`
|
||||
|
||||
| Variável | Obrigatória | Descrição |
|
||||
|---|---|---|
|
||||
| `AI_PROVIDER` | não | Provider preferencial: `openrouter`, `stepfun`, `qwencloud` ou `llamacpp` |
|
||||
| `TELEGRAM_BOT_TOKEN` | sim | Token do bot do Telegram |
|
||||
| `TELEGRAM_CHAT_ID` | sim | Chat ID do usuário |
|
||||
| `DEFAULT_MODEL` | sim | Modelo de IA padrão |
|
||||
| `OPENROUTER_API_KEY` | 1 das chaves | Chave OpenRouter |
|
||||
| `STEPFUN_API_KEY` | 1 das chaves | Chave StepFun |
|
||||
| `QWENCLOUD_API_KEY` | 1 das chaves | Chave QwenCloud |
|
||||
| `MIN_INTERVAL_MINUTES` | não | Intervalo mínimo para mensagens proativas |
|
||||
| `MAX_INTERVAL_MINUTES` | não | Intervalo máximo para mensagens proativas |
|
||||
| `MIN_MESSAGE_LINES` | não | Mínimo de linhas por mensagem do agente |
|
||||
| `AUTO_ENRICH_EVERY` | não | Enriquece perfil a cada N mensagens |
|
||||
| `AUTO_IMPROVE_EVERY` | não | Melhoria automática a cada N mensagens |
|
||||
| `UPLOAD_CONTEXT_MAX_CHARS` | não | Limite de caracteres do upload enviado para a IA (`0` = sem limite) |
|
||||
|
||||
---
|
||||
|
||||
## Comandos úteis via Telegram
|
||||
|
||||
- `/veria` — mostra o provider e o modelo de IA atuais
|
||||
- `/configia` — configura interativamente o provider e o modelo de IA
|
||||
|
||||
---
|
||||
|
||||
## 9) Backups importantes
|
||||
|
||||
Faça backup regular dos arquivos de dados dentro de `/app`:
|
||||
|
||||
- `user_profile.json`
|
||||
- `agent_profile.json`
|
||||
- `system_improvements.json`
|
||||
- `uploads_metadata.json`
|
||||
- pasta `contexts/`
|
||||
- pasta `uploadsfiles/`
|
||||
|
||||
Exemplo simples de backup diário:
|
||||
|
||||
```bash
|
||||
tar czf /root/backups/psagentai-$(date +%F).tar.gz -C /opt/psagentai/app user_profile.json agent_profile.json system_improvements.json uploads_metadata.json contexts uploadsfiles
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 10) Segurança
|
||||
|
||||
- Nunca comite o `.env` no repositório.
|
||||
- Restrinja permissões: `chmod 600 .env`.
|
||||
- Use um usuário exclusivo para cada instância do serviço.
|
||||
- Para maior isolamento, execute cada instância em um container Docker separado ou em VMs distintas.
|
||||
Reference in New Issue
Block a user