Files
instrucoes_gerais/instrucoes/compartilhamento_instrucoes.md
T

7.9 KiB

📂 Guia de Compartilhamento da Pasta de Instruções entre VPSs

Este documento descreve as melhores estratégias e o passo a passo técnico para que agentes (humanos, automatizados ou IA) em outras VPSs da sua rede segura (10.99.0.0/24) tenham acesso de leitura e escrita à pasta /home/deploy/instrucoes.

Como você já possui uma infraestrutura de rede privada criptografada baseada em WireGuard, podemos aproveitar essa segurança para compartilhar os arquivos de forma extremamente protegida e eficiente.


🗺️ Tabela Comparativa de Abordagens

Abordagem Tipo Sincronização Segurança Complexidade Recomendação
1. Git Privado Repositório Manual / CI-CD 🟢 Máxima (Chaves SSH) 🟡 Baixa Altamente Recomendado para desenvolvimento e IA
2. Syncthing P2P Ativo Instantânea 🟢 Excelente (TLS + VPN) 🟡 Média Ideal para espelhamento em tempo real bidirecional
3. SSHFS Mount Direto Sob demanda 🟢 Excelente (SSH s/ VPN) 🟢 Muito Baixa Excelente para montagem rápida sem duplicar arquivos
4. Rsync + Cron Script Push/Pull Periódica 🟢 Excelente (SSH) 🟢 Muito Baixa Para espelhamento simples de leitura apenas

🕸️ Opção 1: Repositório Git Privado (Recomendado para Agentes & IA)

Esta é a abordagem padrão da indústria. Em vez de compartilhar a pasta fisicamente via rede (o que gera dependência de conexão direta), transformamos a pasta instrucoes em um repositório Git privado (ex: no GitHub ou GitLab).

Como funciona:

Cada VPS possui um clone local em /home/deploy/instrucoes. Quando um agente ou você altera algo, faz um git commit e git push. As outras VPSs fazem git pull.

Vantagens para Agentes de IA:

Os agentes de IA (como o Antigravity e outros) lidam nativamente de forma excelente com comandos Git. Isso garante controle de versão, histórico de quem alterou o quê, facilidade de rollback e elimina riscos de corrupção de arquivos por escrita simultânea.

Passo a Passo de Configuração:

  1. Inicializar o Git localmente na máquina de origem (ex: VPS 1):

    cd /home/deploy/instrucoes
    git init
    # Adicionar um .gitignore para ignorar arquivos temporários ou chaves sensíveis que não devem subir
    echo "gcal_key.json" >> .gitignore
    echo "ssh_alerts_config.json" >> .gitignore
    git add .
    git commit -m "feat: commit inicial das instrucoes"
    
  2. Criar um Repositório Privado no GitHub/GitLab.

  3. Gerar chaves de acesso SSH (Deploy Keys) nas outras VPSs: Em cada VPS que precisa de acesso, gere uma chave SSH para o usuário deploy:

    ssh-keygen -t ed25519 -C "vps-instrucoes-deploy" -f ~/.ssh/id_ed25519_github
    

    Adicione a chave pública (.pub) gerada como Deploy Key (com permissão de escrita, se necessário) nas configurações do repositório no GitHub.

  4. Clonar o repositório nas outras VPSs:

    cd /home/deploy
    git clone git@github.com:seu-usuario/seu-repositorio.git instrucoes
    
  5. Automatizar o Pull (Opcional): Se quiser que as outras VPSs atualizem as instruções automaticamente sempre que houver mudanças no repositório remoto, configure um cronjob de 5 em 5 minutos para rodar o pull:

    crontab -e
    # Adicione a linha abaixo:
    */5 * * * * cd /home/deploy/instrucoes && git pull origin main > /dev/null 2>&1
    

🔄 Opção 2: Syncthing (Sincronização em Tempo Real Descentralizada)

O Syncthing é um serviço peer-to-peer de sincronização contínua de arquivos. Ele roda como um daemon leve nas VPSs e garante que qualquer arquivo criado ou modificado em uma pasta seja propagado instantaneamente para as outras em questão de segundos.

Como configurar de forma segura via VPN WireGuard:

  1. Instalar o Syncthing em todas as VPSs:

    sudo apt-get update
    sudo apt-get install -y syncthing
    
  2. Configurar para escutar apenas no IP da VPN (Zero-Trust): Edite o arquivo de configuração do Syncthing (gerado após a primeira execução em ~/.config/syncthing/config.xml) e ajuste o endereço da interface gráfica e de sincronização para rodar apenas nos IPs locais ou de VPN, prevenindo exposição pública.

    • Altere a linha do GUI para escutar localmente: <address>127.0.0.1:8384</address> (Você pode acessar usando um túnel SSH do seu notebook: ssh -L 8384:127.0.0.1:8384 deploy@10.99.0.1).
  3. Adicionar os Servidores como Peers:

    • No painel do Syncthing da VPS 1, copie o Device ID.
    • Adicione esse Device ID no painel da VPS 4/5, especificando o endereço fixo da VPN (ex: tcp://10.99.0.1:22000).
    • Compartilhe a pasta /home/deploy/instrucoes entre eles.
  4. Habilitar o Serviço na inicialização:

    sudo systemctl enable syncthing@deploy.service
    sudo systemctl start syncthing@deploy.service
    

🔗 Opção 3: SSHFS (Montagem de Pasta sobre SSH na VPN)

O SSHFS permite montar um diretório remoto de um servidor em outro servidor de forma transparente, utilizando o próprio protocolo SSH de transporte. Como a sua porta SSH (22) está aberta e protegida dentro da rede privada da VPN (10.99.0.0/24), este método é extremamente simples e não exige serviços extras rodando em segundo plano além do próprio SSH.

Como configurar:

Digamos que a pasta física está na VPS 1 (IP 10.99.0.1) e você deseja acessá-la em tempo real na VPS 4 (IP 10.99.0.4):

  1. Instalar o SSHFS na VPS de destino (ex: VPS 4):

    sudo apt-get update
    sudo apt-get install -y sshfs
    
  2. Garantir que o usuário deploy da VPS 4 tem acesso SSH sem senha à VPS 1: Adicione a chave SSH pública (~/.ssh/id_ed25519.pub) do usuário deploy da VPS 4 no arquivo /home/deploy/.ssh/authorized_keys da VPS 1.

  3. Criar a pasta de montagem na VPS de destino (VPS 4):

    mkdir -p /home/deploy/instrucoes
    
  4. Montar o diretório manualmente para testar:

    sshfs deploy@10.99.0.1:/home/deploy/instrucoes /home/deploy/instrucoes -o IdentityFile=/home/deploy/.ssh/id_ed25519 -o allow_other -o reconnect -o ServerAliveInterval=15
    
  5. Tornar a montagem permanente pós-reboot (fstab): Adicione a seguinte linha ao final do arquivo /etc/fstab na VPS de destino:

    deploy@10.99.0.1:/home/deploy/instrucoes /home/deploy/instrucoes fuse.sshfs x-systemd.automount,IdentityFile=/home/deploy/.ssh/id_ed25519,allow_other,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,_netdev 0 0
    

🚀 Opção 4: Rsync Automatizado via Cron (Espelhamento Simples)

Se os agentes nas outras VPSs precisam apenas ler as instruções ou executar instaladores (como o install.sh) e você quer uma solução extremamente leve e direta sem montagens de disco.

Script de sincronização unidirecional (VPS 1 -> VPS de Destino):

Na VPS 1, crie um script simples ou configure uma tarefa recorrente no Cron para enviar as atualizações:

# Sincroniza a pasta de instruções para a VPS 4 através da VPN segura
rsync -avz --delete -e "ssh -i /home/deploy/.ssh/id_ed25519" /home/deploy/instrucoes/ deploy@10.99.0.4:/home/deploy/instrucoes/

Você pode programar isso para rodar a cada hora ou a cada 15 minutos de forma silenciosa e imperceptível.


🎯 Veredito: Qual escolher?

  • Escolha o Git Privado (Opção 1) se você deseja que múltiplos agentes (incluindo IAs) façam alterações nos scripts e nos documentos de forma colaborativa, sem riscos de conflitos cegos de escrita e mantendo histórico de auditoria perfeito.
  • Escolha o SSHFS (Opção 3) se você quer facilidade máxima de implementação imediata: a pasta fica unificada, consome armazenamento físico de apenas uma máquina e reflete edições instantaneamente sem sincronizações adicionais.