# 🧪 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) <br> IP: 10.99.0.4"]
    VPS1["🖥️ VPS 1 (Hub Central) <br> IP: 10.99.0.1"]
    VPS3["🗄️ VPS 3 (Banco de Dados) <br> 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=

   [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
  ```
