# Acesso à VPS — Doza > Mesma VPS usada pelo projeto CRM (`/Volumes/Merongo/SISTEMAS/GENIAL SISTEMAS/CRM/admin/VPS-ACCESS.md`). > Copiado de lá em 2026-08-31 para uso no projeto Doza. > ⚠️ **Nunca coloque a senha em texto puro em chat, commit ou qualquer lugar além deste arquivo.** > A autenticação por chave SSH já está configurada — não é preciso senha no uso normal. > Este arquivo não deve ser commitado (adicione a um `.gitignore` se o projeto virar repositório git). ## Credenciais ``` VPS_HOST=179.197.228.240 VPS_USER=root SSH_KEY=~/.ssh/id_ed25519 ``` > Senha (`VPS_PASSWORD`) existe só como fallback de emergência — está guardada > apenas no arquivo original do projeto CRM, não duplicada aqui. Autenticação > normal é sempre por chave SSH. Domínio base (wildcard automático da Hostinger, HTTPS via Let's Encrypt/Traefik): ``` TRAEFIK_HOST=srv1838065.hstgr.cloud ``` ## Como conectar (sem senha) A chave pública `~/.ssh/id_ed25519.pub` já está instalada em `/root/.ssh/authorized_keys` da VPS. ```bash # conectar e executar um comando ssh root@179.197.228.240 "" # conectar interativo ssh root@179.197.228.240 # copiar arquivos (rsync) rsync -az -e "ssh" ./ root@179.197.228.240:/caminho/no/servidor/ ``` Alias opcional (se configurado em `~/.ssh/config`): ```bash ssh gestor-trafego-vps "" ``` ## O que já está rodando na VPS (relevante para o Doza) Levantado via `ssh root@179.197.228.240 "docker ps"` em 2026-08-31. Cada app fica isolado em `/docker//` com seu próprio `docker-compose.yml`. - `traefik` (network_mode host, Let's Encrypt automático) — **não mexer**. - `openclaw` (agente da Hostinger) — **não mexer**. - Stack **Supabase completa** já rodando: `supabase-db` (Postgres 17), `supabase-pooler` (porta 5432/6543 públicas), `supabase-rest` (PostgREST v14.12), `supabase-kong` (porta 8000/8443), `supabase-studio`, `supabase-auth`, `supabase-storage`, `supabase-meta`, `supabase-realtime`, `supabase-imgproxy`, `supabase-edge-functions`. **Já é Postgres + PostgREST prontos** — antes de subir um stack RAG novo, avaliar se dá para usar schemas isolados aqui em vez de duplicar infraestrutura. - `genial-crm-postgres-1` já usa imagem `pgvector/pgvector:pg16` (porta local `127.0.0.1:57432`) — pertence ao projeto CRM, não usar para o Doza. - `ollama` (porta 11434) e `open-webui` — modelos locais já disponíveis na VPS. - `automacoes-db` (container Docker avulso, porta local `127.0.0.1:5433`) — criado via "Gerenciador Docker" do painel Hostinger, é o alvo original para um novo container RAG (pgvector + PostgREST) discutido nesta sessão. - `n8n` (porta 5678), `gitea`, `evolution-go`/`evolution-api`, `gestor-trafego` (porta 4001), `wacrm20` (porta 3000). ## RAG Hub — banco compartilhado de desenvolvimento (equipe, não só Doza) Criado em 2026-08-31 (renomeado de `rag-hub-doza` para `rag-hub` no mesmo dia, assim que decidido que a infra é compartilhada). Stack própria, sem relação com Supabase/CRM/genial-crm — serve exclusivamente para a equipe de dev usar como RAG (indexação de código/docs) e reduzir tokens gastos por IAs ao consultar os projetos. **Não é o banco de produção de nenhum sistema.** Modelo: **um container Postgres+pgvector só**, e **um banco por sistema** dentro dele (CRM, Doza, contabilidade, etc. cada um cria o seu). Mais barato de manter (1 backup, 1 upgrade) do que um container Docker por projeto. - Local na VPS: `/docker/rag-hub/` (compose + `.env`, `chmod 600`, gerado isolado nesta instalação). - Container: `rag-hub-db` (imagem `pgvector/pgvector:pg16`). - **Não exposto publicamente** — porta ligada só em `127.0.0.1:55435` na VPS. Acesso externo (ex: do Mac/Mini M4) é via túnel SSH: ```bash ssh -N -L 55435:127.0.0.1:55435 root@179.197.228.240 # depois conectar em localhost:55435 normalmente ``` - Usuário admin: `rag_admin`, senha em `/docker/rag-hub/.env` na própria VPS (não duplicada aqui). - Extensões ativas: `vector` (pgvector 0.8.6), `pg_trgm` (habilitadas no banco `rag_doza`; ao criar um banco novo pra outro sistema, rodar `CREATE EXTENSION vector; CREATE EXTENSION pg_trgm;` nele também). - **Banco do Doza**: `rag_doza`, schema `doza`, tabela inicial `doza.code_chunks` (id, file_path, content, chunk_index, embedding vector(768), updated_at) com índice ivfflat (cosine, lists=100). - **Banco do Jhonny** (projeto MCP TypeScript em `code/`): `jhonny-rag`, schema `jhonny-rag`. Criado em 2026-09-07. Usa o mesmo padrão do `rag_tigre` (busca híbrida HNSW + pg_trgm, `file_index` com `summary_embedding`). Role dedicada: `jhonny-rag` (grants por schema, sem DDL). Wrappers locais: `rag/index_jhonny.sh`, `rag/search_jhonny.sh`, `rag/migrate_jhonny.sh`; credenciais em `rag/jhonny.env`. Índice: 505 arquivos de `code/` (TypeScript), 3479 chunks. Como o schema tem um guífen, o `search.py`/`index_code.py` escapam o identificador com aspas duplas (`_qid`); os bancos sem guífen (doza/tigre) seguem intactos e funcionando. - **Para adicionar outro sistema** (ex: CRM, contabilidade): conectar como `rag_admin` e rodar `CREATE DATABASE rag_crm OWNER rag_admin;` (ou outro nome), depois `\c rag_crm` e criar extensões/schema/tabelas próprias — sem mexer no banco `rag_doza`. - Init SQL do banco `rag_doza` versionado em `/docker/rag-hub/init/01-init.sql` na VPS (roda automaticamente só na primeira subida do volume). - Subir/parar: `ssh root@179.197.228.240 "cd /docker/rag-hub && docker compose up -d"` (ou `down`). ## Segurança - A senha **não deve** aparecer em comandos, arquivos ou histórico do shell. - Se a chave SSH for comprometida, revogá-la removendo a linha de `/root/.ssh/authorized_keys` na VPS e gerar uma nova. - Manter `~/.ssh/id_ed25519` protegido (`chmod 600`).