From faa0ed8e3d39e5cfa9006ce6d0e2161831e47e13 Mon Sep 17 00:00:00 2001 From: Rui Date: Sun, 10 May 2026 04:34:37 +0200 Subject: [PATCH] feat: adicionadas configuracoes de rede Wireguard e ssh keys da vps1, vps3 e vps4 --- VPS-0.1/README.md | 26 +++++++++ VPS-0.1/wg0.conf | 36 +++++++++++++ VPS-0.3/README.md | 15 ++++++ VPS-0.3/wg0.conf | 14 +++++ VPS-0.4/README.md | 105 ++++++++++++++++++++++++++++++++++++ VPS-0.4/hub_peer_vps4.conf | 8 +++ VPS-0.4/wg0.conf | 16 ++++++ vps3-banco-tuning.md | 106 +++++++++++++++++++++++++++++++++++-- 8 files changed, 322 insertions(+), 4 deletions(-) create mode 100644 VPS-0.1/README.md create mode 100644 VPS-0.1/wg0.conf create mode 100644 VPS-0.3/README.md create mode 100644 VPS-0.3/wg0.conf create mode 100644 VPS-0.4/README.md create mode 100644 VPS-0.4/hub_peer_vps4.conf create mode 100644 VPS-0.4/wg0.conf diff --git a/VPS-0.1/README.md b/VPS-0.1/README.md new file mode 100644 index 0000000..f658bfd --- /dev/null +++ b/VPS-0.1/README.md @@ -0,0 +1,26 @@ +# 🖥️ Configuração de Rede Segura (VPN WireGuard) - VPS 1 (Hub Central / Gateway) + +Este diretório contém a configuração e o backup de referência do WireGuard para a **VPS 1** (`10.99.0.1`), que atua como o Hub Central (servidor principal) da rede privada criptografada do **Clube67**. + +--- + +## 📁 Arquivos de Configuração Disponíveis + +1. **[wg0.conf](file:///home/deploy/instrucoes/VPS-0.1/wg0.conf)**: Arquivo completo de configuração do WireGuard para ser colocado em `/etc/wireguard/wg0.conf` na **VPS 1**. + +--- + +## 🛠️ Detalhes do Roteamento (NAT Forwarding) + +Como a **VPS 1** é o ponto de convergência de toda a rede VPN, o encaminhamento de pacotes IPv4 (*IP Forwarding*) precisa estar ativado no Kernel do Linux. + +1. **Ativar o Forwarding no Kernel**: + ```bash + sudo sysctl -w net.ipv4.ip_forward=1 + ``` +2. **Persistir a configuração**: + Certifique-se de descomentar ou adicionar a linha abaixo em `/etc/sysctl.conf`: + ```text + net.ipv4.ip_forward=1 + ``` + *Comando para aplicar imediatamente:* `sudo sysctl -p` diff --git a/VPS-0.1/wg0.conf b/VPS-0.1/wg0.conf new file mode 100644 index 0000000..c0881d6 --- /dev/null +++ b/VPS-0.1/wg0.conf @@ -0,0 +1,36 @@ +# /etc/wireguard/wg0.conf - VPS 1 (Hub Central / Gateway) +# IP Privado VPN: 10.99.0.1 + +[Interface] +Address = 10.99.0.1/24 +PrivateKey = +ListenPort = 51820 + +# Habilitar forwarding de pacotes para comunicação entre peers (Estrela/Hub) +# Certifique-se de que net.ipv4.ip_forward = 1 está ativado no sysctl.conf +PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE +PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE + +# ---------------------------------------------------- +# PEERS AUTORIZADOS NA VPN (10.99.0.0/24) +# ---------------------------------------------------- + +# Peer 1: Notebook do Rui (Administrador) +[Peer] +PublicKey = +AllowedIPs = 10.99.0.10/32 + +# Peer 2: VPS 3 (Banco de Dados Dedicado) +[Peer] +PublicKey = S40JqovA4F8oH8aieWsDvNEv1yw5Juwu1wb4zHjQ8Ww= +AllowedIPs = 10.99.0.3/32 + +# Peer 3: VPS 4 (Desenvolvimento / Staging) +[Peer] +PublicKey = ln7phEfm4w//jZJqqlkGAjsXKWQnOw2kYc64ni5PXX0= +AllowedIPs = 10.99.0.4/32 + +# Peer 4: VPS 5 (CRM WhatsApp / newwhats) +[Peer] +PublicKey = +AllowedIPs = 10.99.0.5/32 diff --git a/VPS-0.3/README.md b/VPS-0.3/README.md new file mode 100644 index 0000000..2272222 --- /dev/null +++ b/VPS-0.3/README.md @@ -0,0 +1,15 @@ +# 🗄️ Configuração de Rede Segura (VPN WireGuard) - VPS 3 (Banco de Dados Dedicado) + +Este diretório contém a configuração e o backup de referência do WireGuard para a **VPS 3** (`10.99.0.3`). + +--- + +## 📁 Arquivos de Configuração Disponíveis + +1. **[wg0.conf](file:///home/deploy/instrucoes/VPS-0.3/wg0.conf)**: Arquivo completo de configuração do WireGuard para ser colocado em `/etc/wireguard/wg0.conf` na **VPS 3**. + +--- + +## 🛠️ Detalhes da Conexão + +Como a rede adota uma topologia **Hub-and-Spoke**, a **VPS 3** conecta-se diretamente ao servidor central (**VPS 1**) através da interface virtual `wg0`. O tráfego para qualquer outro peer na sub-rede `10.99.0.0/24` (incluindo a **VPS 4** de desenvolvimento) é automaticamente encaminhado e roteado pelo Hub. diff --git a/VPS-0.3/wg0.conf b/VPS-0.3/wg0.conf new file mode 100644 index 0000000..f9a770e --- /dev/null +++ b/VPS-0.3/wg0.conf @@ -0,0 +1,14 @@ +# /etc/wireguard/wg0.conf - VPS 3 (Banco de Dados Dedicado) +# IP Privado VPN: 10.99.0.3 + +[Interface] +Address = 10.99.0.3/24 +PrivateKey = +ListenPort = 52830 + +[Peer] +# VPS 1 (Hub Central / Gateway de Entrada) +PublicKey = jUWnuc+82vQ6kLMSI7W1i7hBRBgQKcaSZ8yJy56QSUw= +AllowedIPs = 10.99.0.0/24 +Endpoint = 158.220.109.237:51820 +PersistentKeepalive = 25 diff --git a/VPS-0.4/README.md b/VPS-0.4/README.md new file mode 100644 index 0000000..4676cc7 --- /dev/null +++ b/VPS-0.4/README.md @@ -0,0 +1,105 @@ +# 🧪 Configuração de Rede Segura (VPN WireGuard) - VPS 4 (Desenvolvimento / Staging) + +Este diretório contém os arquivos de configuração necessários para que a **VPS 4** (`10.99.0.4`) entre na rede privada criptografada do **Clube67** de forma totalmente segura. + +--- + +## 🗺️ Visão de Conexão da VPS 4 +```mermaid +graph LR + VPS4["🧪 VPS 4 (Staging)
IP: 10.99.0.4"] + VPS1["🖥️ VPS 1 (Hub Central)
IP: 10.99.0.1"] + VPS3["🗄️ VPS 3 (Banco de Dados)
IP: 10.99.0.3"] + + VPS4 <== Canal Seguro VPN (Porta UDP 51820) ==> VPS1 + VPS4 -- Replicação PostgreSQL (Porta 5432) --> VPS3 +``` + +--- + +## 📁 Arquivos de Configuração Disponíveis + +1. **[wg0.conf](file:///home/deploy/instrucoes/VPS-0.4/wg0.conf)**: Arquivo completo de configuração do WireGuard para ser colocado em `/etc/wireguard/wg0.conf` na **VPS 4**. +2. **[hub_peer_vps4.conf](file:///home/deploy/instrucoes/VPS-0.4/hub_peer_vps4.conf)**: Snippet de peer para ser adicionado à configuração do Hub (**VPS 1**). + +--- + +## 🛠️ Passo a Passo para Configuração + +### Passo 1: Configurar o Peer no Hub Central (VPS 1) +Antes de ativar a conexão na VPS 4, o servidor central (**VPS 1**) precisa autorizar a sua chave pública. + +1. Acesse o terminal da **VPS 1**. +2. Abra o arquivo `/etc/wireguard/wg0.conf` para edição: + ```bash + sudo nano /etc/wireguard/wg0.conf + ``` +3. Adicione o seguinte bloco de peer ao final do arquivo: + ```ini + [Peer] + # VPS 4 (Desenvolvimento / Staging) + PublicKey = ln7phEfm4w//jZJqqlkGAjsXKWQnOw2kYc64ni5PXX0= + AllowedIPs = 10.99.0.4/32 + PersistentKeepalive = 25 + ``` +4. Salve e recarregue as configurações do WireGuard na VPS 1 de forma viva (sem derrubar as conexões existentes): + ```bash + sudo wg syncconf wg0 <(wg-quick strip wg0) + ``` + +### Passo 2: Configurar o Cliente WireGuard na VPS 4 +1. Acesse o terminal da **VPS 4**. +2. Instale o WireGuard caso ainda não esteja instalado: + ```bash + sudo apt-get update && sudo apt-get install -y wireguard + ``` +3. Crie o arquivo `/etc/wireguard/wg0.conf` e cole o seguinte conteúdo: + ```ini + [Interface] + Address = 10.99.0.4/24 + PrivateKey = 4PAIHMPhK0RSs878Lc275hCu2lluzm0QTY9x7T25XEQ= + DNS = 1.1.1.1, 8.8.8.8 + + [Peer] + # VPS 1 (Hub Central / Gateway de Entrada) + PublicKey = jUWnuc+82vQ6kLMSI7W1i7hBRBgQKcaSZ8yJy56QSUw= + AllowedIPs = 10.99.0.0/24 + Endpoint = 158.220.109.237:51820 + PersistentKeepalive = 25 + ``` +4. Ajuste as permissões do arquivo para segurança máxima (somente leitura para o root): + ```bash + sudo chmod 600 /etc/wireguard/wg0.conf + ``` +5. Inicie a interface VPN e configure para iniciar automaticamente no reboot: + ```bash + sudo systemctl enable wg-quick@wg0.service + sudo systemctl start wg-quick@wg0.service + ``` + +### Passo 3: Testar e Validar a Conexão +Para verificar se a VPS 4 está inserida na rede com sucesso: +1. Veja o status do link: + ```bash + sudo wg show + ``` +2. Realize um ping teste para o Hub central e para a VPS 3 (banco de dados): + ```bash + ping -c 3 10.99.0.1 + ping -c 3 10.99.0.3 + ``` +3. Teste a conexão segura de replicação com o PostgreSQL da VPS 3: + ```bash + pg_isready -h 10.99.0.3 -p 5432 + ``` + +--- + +## 🔒 Diretrizes de Segurança (Hardening) para a VPS 4 + +* **Firewall UFW**: Mantenha o UFW ativo na VPS 4, liberando a porta SSH pública apenas para a VPN ou desativando o SSH público inteiramente caso queira operá-la 100% Zero-Trust (acessível apenas pelo link WireGuard `10.99.0.4` do notebook do Rui). +* **Non-local Bind**: Ative o nonlocal bind para que serviços dependentes da VPN possam iniciar no boot sem falhar se a interface wg0 demorar alguns milissegundos para subir: + ```bash + echo "net.ipv4.ip_nonlocal_bind=1" | sudo tee -a /etc/sysctl.conf + sudo sysctl -p + ``` diff --git a/VPS-0.4/hub_peer_vps4.conf b/VPS-0.4/hub_peer_vps4.conf new file mode 100644 index 0000000..278f853 --- /dev/null +++ b/VPS-0.4/hub_peer_vps4.conf @@ -0,0 +1,8 @@ +# Trecho de configuração a ser adicionado em /etc/wireguard/wg0.conf da VPS 1 (Hub Central) +# Adicione este bloco ao final do arquivo para autorizar a conexão da VPS 4 + +[Peer] +# VPS 4 (Desenvolvimento / Staging) +PublicKey = ln7phEfm4w//jZJqqlkGAjsXKWQnOw2kYc64ni5PXX0= +AllowedIPs = 10.99.0.4/32 +PersistentKeepalive = 25 diff --git a/VPS-0.4/wg0.conf b/VPS-0.4/wg0.conf new file mode 100644 index 0000000..64a2ecc --- /dev/null +++ b/VPS-0.4/wg0.conf @@ -0,0 +1,16 @@ +# /etc/wireguard/wg0.conf - VPS 4 (Desenvolvimento / Staging) +# Configuração de Cliente VPN WireGuard +# IP Atribuído: 10.99.0.4 + +[Interface] +Address = 10.99.0.4/24 +PrivateKey = 4PAIHMPhK0RSs878Lc275hCu2lluzm0QTY9x7T25XEQ= +# DNS opcional para resolução interna segura, se necessário +DNS = 1.1.1.1, 8.8.8.8 + +[Peer] +# VPS 1 (Hub Central / Gateway de Entrada) +PublicKey = jUWnuc+82vQ6kLMSI7W1i7hBRBgQKcaSZ8yJy56QSUw= +AllowedIPs = 10.99.0.0/24 +Endpoint = 158.220.109.237:51820 +PersistentKeepalive = 25 diff --git a/vps3-banco-tuning.md b/vps3-banco-tuning.md index ea92a80..69be270 100644 --- a/vps3-banco-tuning.md +++ b/vps3-banco-tuning.md @@ -82,7 +82,7 @@ ALTER DATABASE temporal OWNER TO temporal_user; ## 📊 2. Hardening da Configuração do PostgreSQL (`pg_hba.conf`) -Edite o arquivo `/etc/postgresql/15/main/pg_hba.conf` para garantir que o acesso ao banco de dados seja liberado apenas para os papéis designados originados da rede interna da VPN Wireguard: +Edite o arquivo `/etc/postgresql/18/main/pg_hba.conf` para garantir que o acesso ao banco de dados seja liberado apenas para os papéis designados originados da rede interna da VPN Wireguard: ```text # TYPE DATABASE USER ADDRESS METHOD @@ -96,7 +96,10 @@ host newwhats newwhats_user 10.99.0.5/32 scram-sha-25 # 3. Permitir que o orquestrador Temporal (VPS 5) conecte apenas no database temporal host temporal temporal_user 10.99.0.5/32 scram-sha-256 -# 4. Bloqueio preventivo total para qualquer outro IP ou usuário +# 4. Permitir conexões de replicação da VPS 4 (Staging/Replica) +host replication replicator 10.99.0.4/32 scram-sha-256 + +# 5. Bloqueio preventivo total para qualquer outro IP ou usuário host all all 0.0.0.0/0 reject ``` @@ -180,7 +183,7 @@ PostgreSQL (VPS 3) ``` #### 2. Configuração do `pg_hba.conf` para Múltiplos Projetos: -Edite o arquivo `/etc/postgresql/15/main/pg_hba.conf` para mapear de forma cirúrgica as origens permitidas para cada projeto: +Edite o arquivo `/etc/postgresql/18/main/pg_hba.conf` para mapear de forma cirúrgica as origens permitidas para cada projeto: ```text # TYPE DATABASE USER ADDRESS METHOD @@ -197,7 +200,10 @@ host facebook_db facebook_user 10.99.0.1/32 scram-sha-25 # 4. Projeto NEWWHATS (Backend na VPS 5 -> Banco na VPS 3) host newwhats newwhats_user 10.99.0.5/32 scram-sha-256 -# 5. BLOQUEIO PADRÃO TOTAL (Zero-Trust) +# 5. Permitir conexões de replicação da VPS 4 (Staging/Replica) +host replication replicator 10.99.0.4/32 scram-sha-256 + +# 6. BLOQUEIO PADRÃO TOTAL (Zero-Trust) host all all 0.0.0.0/0 reject ``` @@ -210,3 +216,95 @@ Cada aplicação Node.js aberta na VPS 1 tentará criar um pool de conexões per ``` * **PgBouncer (Avançado)**: Se o número de projetos escalonar para dezenas de aplicações na VPS 1, configure o **PgBouncer** na VPS 3 para multiplexar centenas de conexões virtuais em poucas conexões físicas reais do Postgres, reduzindo drasticamente o consumo de RAM. +--- + +## 🚀 5. Otimização de Performance e Tuning do PostgreSQL 18 + +Para aproveitar ao máximo os **8 GB de RAM e 4 núcleos de CPU** da VPS 3 (Data Appliance) e garantir o processamento rápido e estável de dados para o `newwhats` e o `giteadb`, aplicamos um tuning avançado nativo. + +As configurações foram modularizadas no arquivo `/etc/postgresql/18/main/conf.d/tuning.conf` para manter o `postgresql.conf` limpo e facilitar a portabilidade: + +```ini +# ========================================== +# PostgreSQL Performance Tuning Configuration +# Optimized for 8 GB RAM / 4 CPU Cores +# ========================================== + +# Memory Configuration +shared_buffers = 2GB +effective_cache_size = 6GB +maintenance_work_mem = 512MB +work_mem = 10MB + +# Write-Ahead Log (WAL) Configuration +checkpoint_completion_target = 0.9 +wal_buffers = 16MB +min_wal_size = 1GB +max_wal_size = 4GB + +# Disk and Query Planner Settings (assuming SSD/NVMe) +random_page_cost = 1.1 +effective_io_concurrency = 200 +default_statistics_target = 100 + +# Worker Process and Parallelism Settings +max_worker_processes = 4 +max_parallel_workers_per_gather = 2 +max_parallel_workers = 4 +max_parallel_maintenance_workers = 2 + +# Connections Configuration +max_connections = 100 +``` + +### 🏁 Passos de ativação e validação: +```bash +# Reiniciar o serviço do cluster 18-main +sudo systemctl restart postgresql@18-main.service + +# Confirmar os parâmetros carregados +sudo -u postgres psql -c "SHOW shared_buffers; SHOW effective_cache_size; SHOW work_mem;" +``` + +--- + +## 🧁 6. Resiliência de Inicialização do Gitea e DragonflyDB (Non-local Bind) + +### 🔴 O Problema do Boot Sequencial +Como o Gitea (`HTTP_ADDR = 10.99.0.3`) e o DragonflyDB (`--bind 10.99.0.3`) escutam exclusivamente no IP interno da VPN Wireguard, ocorria uma **falha de bind no reboot**: +* O systemd inicializava estes serviços alguns milissegundos **antes** que a interface VPN (`wg0`) estivesse totalmente ativa e com o IP associado. +* Isso resultava no erro `bind: cannot assign requested address`. +* No caso do Gitea, ele falhava silenciosamente mantendo o processo de gerenciamento ativo, o que impedia o systemd de perceber a queda e reiniciar o serviço automaticamente. + +### 🛡️ Solução Permanente Implementada + +#### 1. Configuração de Kernel: Non-local Bind +Ativamos uma diretiva de kernel para permitir que os daemons executem o bind em IPs de interfaces que ainda não estejam totalmente ativas no momento do boot: +```bash +# Ativar imediatamente +sudo sysctl -w net.ipv4.ip_nonlocal_bind=1 + +# Persistir para reboots futuros +echo "net.ipv4.ip_nonlocal_bind=1" | sudo tee -a /etc/sysctl.conf +``` + +#### 2. Dependência no Systemd do Gitea +Atualizamos a unidade `/etc/systemd/system/gitea.service` para exigir que a rede esteja completamente online antes do início do Gitea: +```ini +[Unit] +Description=Gitea (Git with a cup of tea) +After=syslog.target network.target network-online.target postgresql.service +Wants=network-online.target +``` +*Após atualizar, execute:* `sudo systemctl daemon-reload` + +#### 3. Dependência no Systemd do DragonflyDB (Override Nativo) +Criamos um arquivo de override limpo para o DragonflyDB em `/etc/systemd/system/dragonfly.service.d/override.conf`: +```ini +[Unit] +After=network-online.target +Wants=network-online.target +``` +*Após criar, execute:* `sudo systemctl daemon-reload` + +