feat(freeswitch): publica SIP/RTP no host pra registro de ramal de verdade

Usuário tentou registrar um ramal e não conseguiu — nenhuma porta SIP/RTP
estava publicada no host, só o Event Socket (interno). O teste ponta a
ponta da fase anterior só funcionava porque os softphones de teste
rodavam dentro da mesma rede Docker.

RTP restrito a um range fixo de 200 portas (16384-16584, via sed em
switch.conf.xml) — o default vanilla (~16k portas) é inviável de publicar
uma a uma. docker-compose.yml publica 5060/udp+tcp (SIP) e
16384-16584/udp (RTP); Event Socket continua nunca publicado.

Verificado: iptables -t nat -L DOCKER confirma DNAT correto pras 201
portas; sofia status confirma que o STUN já configurado (external_rtp_ip/
external_sip_ip) resolve pro IP público real da VM, então o SDP vai
anunciar o IP certo — não só o registro, o áudio também deve funcionar.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFaBaBSQGhyXGEgtTYZGV8
This commit is contained in:
2026-08-30 15:37:49 -03:00
parent af46739af2
commit 2cd638d26f
3 changed files with 50 additions and 2 deletions

View File

@@ -91,9 +91,15 @@ services:
# host e precisa enxergar os mesmos arquivos que o FreeSWITCH grava
# (agente.md secao 90-91) — ver docs/RECORDING.md.
- ./data/recordings-spool:/recordings
# Nenhuma porta publicada no host: SIP/RTP ainda não têm troncos reais
# configurados, e o Event Socket (8021) só deve ser alcançável por outros
# Event Socket (8021) NUNCA publicado — só alcançável por outros
# containers na rede interna do compose (agente.md secao 22).
# SIP (5060) e RTP (16384-16584, range fixo no Dockerfile) publicados
# a partir da PHASE 54 — necessário pra registrar um softphone/telefone
# de fora da rede Docker (achado testando registro de verdade).
ports:
- "5060:5060/udp"
- "5060:5060/tcp"
- "16384-16584:16384-16584/udp"
healthcheck:
test: ["CMD-SHELL", "fs_cli -p \"$$ESL_PASSWORD\" -x status | grep -q 'is ready'"]
interval: 10s