---
name: aspeednet-network
description: >
  Infraestrutura Aspeednet / Speed Fibra — WireGuard, DNS, túneis site-to-site,
  Ookla speedtest, VPN wg0. Use quando o usuário mencionar Carlos Chagas, São Paulo,
  PTT-SP, wg-sp-cc, aspeednet, 45.65.135.x, tst.aspeednet.com.br, melhorar rede,
  continuar programando rede, ou pedir contexto da infraestrutura.
---

# Aspeednet Network Skill

**Sempre leia primeiro:** `/root/aspeednet-network/INVENTORY.md` e `/root/aspeednet-network/CHANGELOG.md`

## Host onde o Grok opera (hub principal)

| Item | Valor |
|------|-------|
| Hostname | `nextcloud` |
| Local | Carlos Chagas (Speed Fibra) |
| WAN | `ens192` → `45.65.135.180/28` |
| Gateway | `45.65.135.177` |
| PTR | `veloz.aspeednet.com.br` |

## Servidores da rede

| Host | IP | Domínio | Função |
|------|-----|---------|--------|
| nextcloud (CC) | 45.65.135.180 | veloz.aspeednet.com.br | Hub WG, wg0 VPN, wg-sp-cc, Nextcloud |
| DNS | 45.65.135.150 | — | BIND9, zona aspeednet.com.br |
| Speedtest Ookla | 45.65.135.185 | tst.aspeednet.com.br | OoklaServer + nginx HTTPS |
| Speedtest nPerf | 45.65.135.156 | nperf.aspeednet.com.br | nperf2024 (ex-149) |
| n8n | 45.65.135.148 | n8n.aspeednet.com.br | Automação + leads Fibri |
| Hub SP | 38.60.241.221 | — | WireGuard peer (PTT-SP) |

## WireGuard — dois túneis independentes

### wg0 (clientes VPN)
- Porta: `51820`
- Rede: `10.8.0.0/24` (servidor `.1`)
- Policy routing: tabela `wg-bypass` (100), fwmark `0x100`
- Config backup: `/etc/wireguard.bak/wg0.conf`

### wg-sp-cc (site-to-site CC ↔ SP)
- Porta: `51822`
- CC: `10.250.1.1/30` | SP: `10.250.1.2/32`
- Rede extra túnel: `10.250.2.0/30`, `10.9.0.0/24`
- Config: `/etc/wireguard/wg-sp-cc.conf`
- Chave pública CC: `/etc/wireguard/wg-sp-cc.pub`
- **Regra:** mesma faixa IP → usar `/32` ou `/30`, nunca `/24` inteira no AllowedIPs do peer
- SP inicia conexão; CC escuta (sem Endpoint no CC)

## Redes internas (split tunnel clientes wg0)

```
10.8.0.0/24, 10.10.0.0/16, 100.64.0.0/12, 45.65.132.0/22
```

## DNS (45.65.135.150)

- Zona: `/etc/bind/master/aspeednet.com.br.hosts`
- Reverso 135: `/etc/bind/reverso/45.65.135.rev`
- NS: ns1–ns4.aspeednet.com.br
- Registros chave: `tst` → 185, `nperf` → 156, PTR 180 → veloz, PTR 185 → tst, PTR 156 → nperf

## Speedtest (45.65.135.185)

- Ookla: `/usr/local/src/ooklaserver/`
- HTTPS: https://tst.aspeednet.com.br e https://tst.aspeednet.com.br:8080
- CLI: `speedtest`, `iperf3`, `librespeed-cli`
- SSL: Let's Encrypt + renovação `/etc/speedtest/renovassl.sh`
- OS: Debian 13 (trixie)

## Acesso SSH (sem digitar senha)

**Chave:** `/root/.ssh/id_ed25519` (deployada nos servidores)

| Comando | Servidor | Acesso |
|---------|----------|--------|
| `ssh tst 'cmd'` | 45.65.135.185 | root, sem senha |
| `ssh cc 'cmd'` | 45.65.135.180 | root, sem senha |
| `ssh nperf 'cmd'` | 45.65.135.156 | nbessonicosta, sem senha |
| `ssh esxi1 'cmd'` | 10.100.99.2 | root, chave RSA |
| `ssh esxi2 'cmd'` | 10.100.99.3 | root, chave ed25519 |
| `ssh pve 'cmd'` | 10.100.99.4 | root, chave ed25519 |
| `ssh dns-user 'cmd'` | 45.65.135.150 | nbessonicosta, sem senha |
| `aexec dns 'cmd'` | 45.65.135.150 | tenta root (su bloqueado no DNS) |
| `aexec tst 'cmd'` | qualquer | wrapper universal |

Script: `/root/aspeednet-network/scripts/aexec`
Credenciais fallback: `/root/.config/aspeednet/credentials` (chmod 600)

**DNS root:** servidor 150 bloqueia `su` via SSH — leitura BIND ok como nbessonicosta; escrita root requer console ou liberar SSH root manualmente uma vez.

## n8n (automação)

- URL: https://n8n.aspeednet.com.br
- Stack: `/opt/speedfibra-n8n` no host 148
- Webhook leads: `POST /webhook/fibri-lead`
- Doc: `/root/aspeednet-network/docs/n8n-speedfibra.md`
- Manage: `bash /root/aspeednet-network/scripts/n8n-manage.sh status`

## Phoenix — registrar todo serviço novo

Inventário único: `/opt/phoenix-monitoring/config/aspeednet-hosts.yml`

Ao implantar VM, serviço ou host novo:

```bash
/opt/phoenix-monitoring/scripts/register-phoenix-host.sh \
  --id meu-servico --name "Meu Serviço" --ip 45.65.135.X \
  --section servers --role web --url 'https://...'
```

Isso atualiza YAML, Prometheus (file_sd), Uptime Kuma e reinicia phoenix-api.

Sync manual: `python3 /opt/phoenix-monitoring/scripts/sync-phoenix-targets.py`

Node-exporter (CPU/RAM/disco Grafana): `bash /opt/phoenix-monitoring/scripts/deploy-node-exporter.sh all`

## Ao modificar a rede

1. Ler `INVENTORY.md` e `CHANGELOG.md`
2. Aplicar mudanças
3. Atualizar `CHANGELOG.md` com data, host, o que mudou
4. Registrar no Phoenix (`register-phoenix-host.sh`) se for host/serviço monitorável
5. Rodar `/root/aspeednet-network/scripts/health-check.sh`
6. Backup configs em `/root/aspeednet-network/backups/` antes de mudanças grandes

## Conflitos conhecidos

| Risco | Mitigação |
|-------|-----------|
| Tailscale vs WG rotas | `tailscale up --accept-routes=false` |
| Mesma faixa IP WG | AllowedIPs em `/32` ou `/30` |
| iptables | usar `iptables-legacy` (mesmo backend do wg0) |
| wg-sp-cc sem handshake | SP deve iniciar; CC não precisa Endpoint |

## Referências detalhadas

- `references/hosts.md` — inventário completo de hosts
- `references/wireguard.md` — topologia e comandos WG
- `references/dns.md` — zona DNS e registros
## Changelog / documentação NOC (obrigatório após mudanças)

Ao **criar, desenvolver ou modificar** algo relevante na infra, ao final da tarefa:

```bash
noc-changelog "Título curto da entrega" "O que mudou, onde, impacto e como validar" \
  --host <host-ou-sistema> --cat <categoria> [--ip X.X.X.X] [--memo]
```

- Alimenta a aba **Changelog** do Phoenix e `docs/AUTO-CHANGELOG.md`
- Memorando: `docs/MEMORANDO-AUTO-CHANGELOG.md`
- Inventário longo: `/phoenix/docs/grok-cli`
- Serviço auto-watch: `speedfibra-changelog-watch` (não substitui texto bom na CLI)

Categorias: `rede` `seguranca` `phoenix` `dns` `mikrotik` `site` `iptv` `ftth` `ia` `automacao` `documentacao` `noc` `geral`

## Cliente TV Edge + portal white-label (MEMÓRIA)

**Pasta canônica (sempre ler primeiro):** `/root/aspeednet-network/cliente-tv-edge/`

| Recurso | Path |
|---------|------|
| Índice | `/root/aspeednet-network/cliente-tv-edge/README.md` |
| Memória Grok | `/root/aspeednet-network/cliente-tv-edge/MEMORIA-GROK.md` |
| Runbook | `/root/aspeednet-network/cliente-tv-edge/docs/RUNBOOK-CLIENTE-TV-EDGE-SMARTNET.md` |
| Prompt | `/root/aspeednet-network/cliente-tv-edge/prompts/PROMPT-GROK-CLIENTE-TV-EDGE.md` |
| Script | `/root/aspeednet-network/cliente-tv-edge/scripts/deploy-cliente-tv-edge.sh` |
| **Zip download** | `/root/aspeednet-network/cliente-tv-edge.zip` |
| Download web (tv-paulo) | `http://181.189.4.28/downloads/cliente-tv-edge.zip` |

Triggers: "outro cliente TV", "edge", "multiplicar canal", "igual tv-paulo", "economizar banda", SmartNet white-label deploy.

Modelo: origin-first + nginx HLS **1 pull → N viewers**. Não confundir com hub de apps multi-device.

