Ir para o conteúdo

34 — Checklist portas, apps e DNS (orbitall.app)

VPS produção (Hostinger): 2.25.92.168 · AWS arquivada: 3.93.232.33 — 37-migracao-vps-aws-hostinger.md Homolog por IP: http://2.25.92.168:8099/ (até DNS propagar) Alvo: orbitall.app + subdomínios · TLS Let's Encrypt · proxy na borda Plano completo: 22-plano-dominio-orbitall-app.md

Como usar: marque [x] na ordem das fases. Cada linha da tabela §1 liga app → porta → URL hoje → DNS alvo.


1. Mapa apps × portas × DNS

# App Container Porta host Bind URL homolog (hoje) DNS alvo (fase LE) Público? SG / notas
1 Portal Orbitall lorentz-portal 8099 HTTP 0.0.0.0 http://3.93.232.33:8099/ https://orbitall.app/ Sim open-aws-port-8099.sh
2 Portal PWA (TLS local) lorentz-portal 8443 HTTPS 0.0.0.0 https://3.93.232.33:8443/ (substituído por LE no apex) Sim open-aws-port-8443.sh — provisório
3 CTI Dashboard Portal nginx — — http://3.93.232.33:8099/cti/ https://orbitall.app/cti/ Sim path no portal
4 Licença UI Portal → API 8092 127.0.0.1 http://3.93.232.33:8099/licenca/ https://orbitall.app/licenca/ Sim API interna; não expor 8092
5 Supervisor lorentz-supervisor 8080 0.0.0.0 http://3.93.232.33:8080/ https://supervisor.orbitall.app/ Sim open-aws-port-8080.sh
6 Webphone lorentz-webphone 8081 0.0.0.0 http://3.93.232.33:8081/ https://phone.orbitall.app/ Sim LE obrigatório WebRTC
7 MonitorOPS lorentz-monitor 9090 0.0.0.0 http://3.93.232.33:9090/ https://monitorops.orbitall.app/ TI only restringir SG ao IP admin
8 Lorentz Energy lorentz-energy 8082 0.0.0.0 http://3.93.232.33:8082/ https://energy.orbitall.app/ Conforme produto opcional SG
9 Portainer lorentz-portainer 9443 HTTPS 0.0.0.0 https://3.93.232.33:9443/ https://portainer.orbitall.app/ TI only restringir SG
10 Issabel PBX issabel-prod 443 HTTPS hostnet https://3.93.232.33/ https://pbx.orbitall.app/ Sim (TI) conflito :443 — ver §3
11 Asterisk WSS Issabel hostnet 8089 TCP hostnet wss://3.93.232.33:8089/ws wss://wss.orbitall.app/ws Sim (agentes) open-aws-port-8089.sh
12 SIP Issabel hostnet 5060 UDP/TCP hostnet 3.93.232.33:5060 pbx.orbitall.app ou IP Sim SG UDP + RTP
13 RTP Issabel hostnet 10000–10100 UDP hostnet — — Sim SG range
14 AMI Asterisk Issabel hostnet 5038 TCP hostnet interno CTI — Não só rede Docker/host
15 Lorentz CTI Concentre lorentz-cti 3000 0.0.0.0 TCP 3.93.232.33:3000 — VPN/rede Phoenix / dialer
16 CTI Agentes lorentz-cti 8000 TCP/UDP 0.0.0.0 TCP 3.93.232.33:8000 — VPN/rede clientes desktop
17 CTI URA socket lorentz-cti 4000 0.0.0.0 TCP — interno URA
18 Monitor API CTI lorentz-cti 8090 0.0.0.0* http://127.0.0.1:8090/health proxy: orbitall.app/api/cti/monitor/ TI preferir localhost bind pós-LE
19 Base Histórica API lorentz-basehistorica 8091 127.0.0.1 interno Supervisor — Não nunca expor SG
20 SQL Server lorentz-sqlserver 1433 127.0.0.1 túnel SSH — Não nunca 0.0.0.0
21 Docs MkDocs (futuro) 80/443 — lorentzdocs.orbitall.net.br https://docs.orbitall.app/ Sim redirect legado

Homolog publica :8090; produção com domínio: restringir a 127.0.0.1 e usar proxy Portal.

1.1 Registros DNS (Route 53 / registrador)

Todos A → VPS_PUBLIC_IP (TTL 300), salvo www CNAME:

Registro DNS Tipo App
orbitall.app (@) A Portal apex
www.orbitall.app CNAME → apex redirect
supervisor.orbitall.app A Supervisor
phone.orbitall.app A Webphone
pbx.orbitall.app A Issabel admin
wss.orbitall.app A Asterisk WSS
monitorops.orbitall.app A MonitorOPS
energy.orbitall.app A Energy
docs.orbitall.app A Documentação
portainer.orbitall.app A Portainer

Check Registro DNS

  • [x] orbitall.app (@) | A | Portal apex |
  • [x] www.orbitall.app | CNAME → apex | redirect |
  • [x] supervisor.orbitall.app | A | Supervisor |
  • [x] phone.orbitall.app | A | Webphone |
  • [x] pbx.orbitall.app | A | Issabel admin |
  • [x] wss.orbitall.app | A | Asterisk WSS |
  • [x] monitorops.orbitall.app | A | MonitorOPS |
  • [x] energy.orbitall.app | A | Energy |
  • [x] docs.orbitall.app | A | Documentação |
  • [x] portainer.orbitall.app | A | Portainer |

Opcional fase 2: api.orbitall.app, cti-api.orbitall.app — ver 22 §3.3.

1.2 Variáveis .env após DNS (referência)

ORBITALL_DOMAIN=orbitall.app
PORTAL_PUBLIC_URL=https://orbitall.app/
SUPERVISOR_PUBLIC_URL=https://supervisor.orbitall.app/
WEBPHONE_PUBLIC_URL=https://phone.orbitall.app/
MONITOR_PUBLIC_URL=https://monitorops.orbitall.app/
ISSABEL_PUBLIC_URL=https://pbx.orbitall.app/
ENERGY_PUBLIC_URL=https://energy.orbitall.app/
ISSABEL_SIP_EXTERNAL_ADDRESS=orbitall.app
# WebRTC: wss://wss.orbitall.app/ws (via proxy → :8089)

Depois: ./scripts/render-config.sh + reload Portal / restart Webphone.


2. Status homolog (13/07/2026)

App Porta HTTP/S health DNS ainda não
Portal 8099 / 8443 200 usa IP
Supervisor 8080 200 usa IP
Webphone 8081 200 usa IP
MonitorOPS 9090 200 usa IP
Energy 8082 200 usa IP
Licença 8092 → /licenca/ 200 usa IP
Portainer 9443 up usa IP
Issabel 443 200 usa IP
CTI Monitor API 8090 200 usa IP
Base Histórica 8091 200 interno OK

Stack core 7/7 + opcionais 4/4 — ver 33-checklist-teste-ambiente.md.


3. Fases de execução (checklist)

Fase A — DNS (registrador / Route 53)

  • [x] Confirmar domínio orbitall.app ativo e acesso ao painel DNS
  • [x] Criar registros A §1.1 apontando para VPS_PUBLIC_IP
  • [x] Criar www CNAME → orbitall.app
  • [x] Validar propagação: dig +short orbitall.app · dig supervisor.orbitall.app
  • [ ] (Opcional) wildcard *.orbitall.app + cert DNS-01

Para validar todos os subdomínios de uma vez na VPS:

for h in [orbitall.app](http://orbitall.app) [www.orbitall.app](http://www.orbitall.app) [supervisor.orbitall.app](http://supervisor.orbitall.app) [phone.orbitall.app](http://phone.orbitall.app) \

         [pbx.orbitall.app](http://pbx.orbitall.app) [wss.orbitall.app](http://wss.orbitall.app) [monitorops.orbitall.app](http://monitorops.orbitall.app) [energy.orbitall.app](http://energy.orbitall.app) \

         [docs.orbitall.app](http://docs.orbitall.app) [portainer.orbitall.app](http://portainer.orbitall.app); do

  printf '%-28s %s\n' "$h" "$(dig +short "$h" A "$h" CNAME | paste -sd' ' -)"

done
Esperado: todos com 3.93.232.33 (ou www como CNAME/alias do apex).

Fase B — Security Group AWS (antes ou em paralelo ao proxy)

B.0 Auditoria externa (14/07/2026 — 3.93.232.33)

Teste HTTP(S) de fora da VPC (curl externo):

Porta Serviço Externo Fase B
22 SSH (não testado) Restringir IP TI
80 HTTP / ACME 302 ✅ OK
443 Issabel HTTPS 200 ✅ OK (proxy futuro)
8080 Supervisor 200 ✅ OK (transição)
8081 Webphone 200 ✅ OK (transição)
8082 Energy 200 ✅ OK
8099 Portal HTTP 200 ✅ OK (transição)
8443 Portal PWA 200 ✅ OK (transição)
9090 MonitorOPS restrito ✅ 177.67.207.138/32 (14/07)
9443 Portainer restrito ✅ 177.67.207.138/32 (14/07)
9000 Portainer HTTP restrito ✅ 177.67.207.138/32 (14/07)
8089 Asterisk WSS SG OK ✅ (14/07) TCP aberto — WSS não responde HTTP
5060 / 10000–10100 SIP/RTP UDP — validar softphone Confirmar no console
1433, 8091, 8092 APIs internas não expostos ✅ Manter fechado

AWS CLI na VPS: InvalidClientTokenId — instância sem IAM role (ou credenciais inválidas). Scripts open-aws-port-*.sh falham até corrigir IAM ou abrir regras manualmente no console EC2.

B.1 Pré-requisito IAM (automação)

Escolha uma opção:

  1. IAM role na EC2 (recomendado): anexar role com ec2:AuthorizeSecurityGroupIngress + ec2:DescribeSecurityGroups ao instance profile.
  2. aws configure na VPS — Access Key de usuário IAM com permissão no SG.
  3. Console AWS — regras manuais (§B.3).

Depois:

cd ~/omnichannel/lorentz-vps-stack
chmod +x scripts/*.sh
./scripts/audit-aws-security-group.sh          # listar regras
./scripts/apply-phase-b-security-group.sh SEU_IP/32   # abre faltantes + restringe 9090/9443
./scripts/check-ports.sh --external

B.2 Checklist Fase B

  • [x] 80 TCP aberto (ACME HTTP-01 + redirect HTTPS)
  • [x] 443 TCP aberto (Issabel hoje; proxy após Fase C/D)
  • [x] 8080, 8081, 8082, 8099, 8443 — abertos (transição IP:porta)
  • [x] 8089 TCP — WebRTC/WSS (liberado 14/07 — SG sgr-09b342760086a6c78)
  • [x] 5060 UDP + 10000–20000 UDP — SIP/RTP (presente no SG; doc stack usa 10000–10100)
  • [x] 9090, 9443, 9000 — restringidos a 177.67.207.138/32 (14/07)
  • [ ] Manter 22 SSH restrito ao IP TI
  • [x] Não abrir 1433, 5038, 8091, 8092 publicamente

B.3 Console AWS — regra faltante (8089 WSS)

EC2 → Security Groups → SG da instância 3.93.232.33 → Edit inbound rules → Add rule:

Type Port Source Descrição
Custom TCP 8089 0.0.0.0/0 Asterisk WSS WebRTC

SIP/RTP (se ausentes):

Type Port Source
Custom UDP 5060 0.0.0.0/0
Custom TCP 5060 0.0.0.0/0
Custom UDP 10000–10100 0.0.0.0/0

Restringir MonitorOPS / Portainer — substituir 0.0.0.0/0 por SEU_IP/32 nas regras 9090, 9443 e 9000.

Scripts: 10-firewall-aws-security-group.md · scripts/open-aws-port-*.sh · scripts/apply-phase-b-security-group.sh

Fase C — Issabel: liberar :443 para proxy (bloqueante)

Conflito :8443: Portal PWA já usa 8443 no host. Issabel (hostnet) usa 8445 internamente até Fase D/G; o proxy pbx.orbitall.app apontará para 127.0.0.1:8445 (ou 8443 após desativar TLS autoassinado do Portal).

cd ~/omnichannel/lorentz-vps-stack
chmod +x scripts/apply-phase-c-issabel-https.sh
./scripts/apply-phase-c-issabel-https.sh
curl -sk -o /dev/null -w '%{http_code}\n' https://127.0.0.1:8445/
ss -tln | grep ':443 ' || echo ':443 livre'
  • [x] ISSABEL_HTTPS_PORT=8445 em .env → issabel.env (via render-config.sh) (14/07)
  • [x] Apache Issabel escuta 8445 (não 443 no host) (14/07 — hot-reload)
  • [x] Confirmar https://127.0.0.1:8445/ → 200/302 (14/07)
  • [x] Confirmar :443 livre no host (para Caddy Fase D) (14/07)
  • [x] Issabel SIP/RTP inalterados (5060, 10000–10100)
  • [x] SG: abrir 8445 se acesso externo TI antes da Fase D (14/07 — SG sg-013b51a540339a5fd + UFW)
  • [x] Script: scripts/apply-phase-c-issabel-https.sh
  • [ ] Doc: 22 §5 · 06-issabel-pbx.md

Fase D — Reverse proxy TLS (Caddy ou nginx + certbot)

cd ~/omnichannel/lorentz-vps-stack
chmod +x scripts/apply-phase-d-caddy.sh scripts/render-edge-config.sh
./scripts/apply-phase-d-caddy.sh
./scripts/apply-phase-d-caddy.sh --validate-only   # re-testar HTTPS
  • [x] Instalar Caddy 2 no host (fora Docker bridge) (14/07 — v2.11.4)
  • [x] Configurar vhosts §1 → 127.0.0.1:<porta> backend (14/07)
  • [x] Obter certificados Let's Encrypt (HTTP-01) (14/07)
  • [x] Testar cada subdomínio HTTPS (200/302) (14/07 — apex, supervisor, phone, pbx, energy)
  • [x] Habilitar HSTS no apex (14/07)
  • [x] PWA via https://orbitall.app/ (substitui :8443 autoassinado)

Scripts: scripts/apply-phase-d-caddy.sh · scripts/render-edge-config.sh · config/templates/Caddyfile.template

Fase E — Atualizar stack (.env + configs)

cd ~/omnichannel/lorentz-vps-stack
./scripts/apply-phase-e-orbitall-env.sh
  • [x] Aplicar bloco .env §1.2 (14/07)
  • [x] ./scripts/render-config.sh (14/07)
  • [x] Atualizar portal.apps.json (URLs dos apps em órbita + Portainer) (14/07)
  • [x] configure-issabel-wss.sh + WEBRTC_* para domínio (14/07)
  • [x] Webphone cfgLorentz008.json: WSS = wss://wss.orbitall.app/ws (14/07)
  • [x] docker compose up -d --build portal, webphone, supervisor, monitor (14/07)
  • [x] Issabel: ISSABEL_SIP_EXTERNAL_ADDRESS=orbitall.app (14/07)
  • [x] Docs MkDocs → https://docs.orbitall.app/ (deploy-docs.sh) (14/07)
  • [x] MonitorOPS: sidebar Apps + Portainer na tabela de serviços (14/07)

Scripts: apply-phase-e-orbitall-env.sh · deploy-docs.sh

Fase F — Validação por app (pós-DNS)

# Teste URL alvo OK
1 Portal hub https://orbitall.app/ [ ]
2 PWA instalar apex HTTPS — botão Instalar App [ ]
3 CTI dashboard https://orbitall.app/cti/ JSON ao vivo [ ]
4 Supervisor login https://supervisor.orbitall.app/login.php [ ]
5 Webphone registro https://phone.orbitall.app/ + SIP [ ]
6 WSS wss://wss.orbitall.app/ws [ ]
7 Issabel admin https://pbx.orbitall.app/ [ ]
8 MonitorOPS https://monitorops.orbitall.app/ (IP allowlist) [ ]
9 Energy https://energy.orbitall.app/ [ ]
10 Licença https://orbitall.app/licenca/ [ ]
11 Portainer https://portainer.orbitall.app/ (TI) [ ]
./scripts/validate-install.sh --external
./scripts/diagnose-stack.sh --brief

Fase G — Descomissionar acesso IP:porta (opcional)

  • [ ] Redirect 301 http://IP:8099 → https://orbitall.app
  • [ ] Fechar SG portas 8080/8081/8082/8099 se proxy único
  • [ ] Atualizar ENTREGA-V1.9.md com URLs finais
  • [ ] Comunicar equipe / clientes — novas URLs

4. Conflitos e decisões

Conflito Decisão
Issabel :443 vs proxy :443 Migrar Issabel → :8445 interno (8443 ocupado pelo Portal PWA)
Portal :8443 PWA Substituir por LE em orbitall.app
Monitor API :8090 público Bind 127.0.0.1 + proxy /api/cti/monitor/
Base Histórica / Licença API Sempre localhost; UI via Portal/Supervisor
Docs legado .net.br Redirect 301 → docs.orbitall.app

5. Referências cruzadas

Documento Conteúdo
22 Arquitetura proxy, Caddy, certificados
10 Security Group detalhado
14 WSS + Webphone com domínio
20 Portal, PWA, proxy CTI
33 Homolog IP — pendências AMI, senhas, testes

Histórico

Data Evento
2026-07-14 Fase E — URLs orbitall.app, docs.orbitall.app, MonitorOPS apps sidebar