# 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 ffmpeg ``` 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 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 sudo apt install -y ffmpeg ```bash chmod +x iniciar.sh ./iniciar.sh ``` Esse script cria o `venv`, instala dependências e valida as variáveis do `.env`. Se o comando acima não instalar `ffmpeg` na versão esperada, use também: ```bash sudo apt install -y ffmpeg ``` > O reconhecimento de voz usa `SpeechRecognition` + `pydub` + `ffmpeg`. --- ## 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) | | `VISION_MODEL` | não | Modelo de IA para análise de imagens | | `VISION_PROVIDER` | não | Provider do modelo de visão (`openrouter`, `stepfun`, `qwencloud`) | --- ## Comandos úteis via Telegram - `/veria` — mostra o provider e o modelo de IA atuais - `/configia` — configura interativamente o provider e o modelo de IA - `/veriavision` — mostra o provider e o modelo de visão atuais - `/configiavision` — configura interativamente o modelo de visão - `/about` — exibe informações do sistema, versão, autor e licença --- ## 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 `workspace/` 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 workspace ``` --- ## 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.