infraestrutura: actualiza mapa de portas do gateway e regras de operação

Corrige a próxima porta livre (a 3188 documentada estava ocupada e causou um
deploy falhado), regista o router youtube e o ssh-unified, e acrescenta três
regras: backups do nginx nunca em sites-enabled/, cruzar sempre ss -tlnH com
as portas roteadas, e contar ~40s de arranque nos MCPs Python/FastMCP.
This commit is contained in:
2026-07-30 22:58:47 +01:00
parent 1f19ec315c
commit ca6c56c4d4
+17 -3
View File
@@ -35,7 +35,6 @@ Gestao e health check dos MCPs no servidor gateway (VM 103, gateway.descomplicar
| 2 | mcp-wikijs | 3152 | /v1/wikijs/mcp | P3 |
| 5 | mcp-moloni | 3158 | /v1/moloni/mcp | P2 |
| 6 | mcp-youtube-research | 3157 | /v1/youtube-research/mcp | P3 |
| 7 | mcp-youtube | 3187 | /v1/youtube/mcp | P3 |
### systemd (24 services)
@@ -64,9 +63,15 @@ Gestao e health check dos MCPs no servidor gateway (VM 103, gateway.descomplicar
| presenton-mcp | 3182 | /v1/presenton/mcp | supergateway | P3 |
| cwp-mcp | 3183 | /v1/cwp/mcp | supergateway | P3 |
| design-engine-mcp | 3184 | /v1/design-engine/mcp | supergateway | P3 |
| mcp-youtube-router | 3198 | /v1/youtube/mcp | Python/Starlette | P3 |
| mcp-youtube | 3187 | (nenhuma — upstream interno) | Python/FastMCP | P3 |
| mcp-youtube-desc | 3199 | (nenhuma — upstream interno) | Python/FastMCP | P3 |
| ssh-unified | 3192 | /v1/ssh-unified/mcp | Python/FastMCP | P3 |
**Prioridades:** P1=critico (bloqueia trabalho) | P2=importante (degrada workflow) | P3=util
**Proxima porta livre:** 3188
**Proxima porta livre:** 3185 (depois: 3186, 3201). **Verificar sempre** — este mapa
ficou desactualizado e a "3188" que aqui constava estava ocupada, causando um deploy falhado (30-07-2026):
`ss -tlnH` cruzado com `grep -oE "127.0.0.1:3[0-9]{3}" /etc/nginx/sites-enabled/mcp-gateway`.
---
@@ -203,6 +208,13 @@ IP autorizado: `188.251.199.30`. Actualizar em `/etc/nginx/sites-enabled/` se mu
- **Sempre** reportar estado mesmo que tudo OK
- **Sempre** testar endpoint apos restart
- **Sempre** actualizar mapa de portas ao adicionar/remover MCPs
- **Nunca** guardar backups do nginx dentro de `sites-enabled/` — o include e por
wildcard, o backup passa a ser carregado e `nginx -t` falha com `duplicate log_format`,
quebrando *todo* o gateway. Backups vao para `/root/`.
- **Nunca** confiar no "proxima porta livre" deste ficheiro sem cruzar `ss -tlnH` com as
portas roteadas no nginx.
- **Contar** ~40s de arranque nos MCPs Python/FastMCP no gateway (import lento, I/O de
disco). Um probe imediato apos `systemctl start` da falso negativo — aguardar o bind.
---
@@ -215,7 +227,9 @@ IP autorizado: `188.251.199.30`. Actualizar em `/etc/nginx/sites-enabled/` se mu
Registo de erros conhecidos e como evitá-los. Lido automaticamente antes de executar.
```jsonl
{"date":"","issue":"","fix":"","source":"user|auto"}
{"date":"2026-07-30","issue":"Backup do nginx criado em sites-enabled/ -> duplicate log_format mcp_audit -> nginx -t falhou para todo o gateway","fix":"Backups para /root/. Verificar com nginx -t apos remover.","source":"auto"}
{"date":"2026-07-30","issue":"Skill anunciava 3188 como proxima porta livre; estava ocupada -> deploy abortou","fix":"Cruzar ss -tlnH com grep 127.0.0.1:3XXX no nginx antes de escolher porta","source":"auto"}
{"date":"2026-07-30","issue":"Probe tools/list imediatamente apos systemctl start deu falso negativo (FastMCP demora ~40s a bindar)","fix":"Poll da porta com timeout antes do probe HTTP","source":"auto"}
```
*Adicionar nova linha após cada erro corrigido.*