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.appativo e acesso ao painel DNS - [x] Criar registros A §1.1 apontando para
VPS_PUBLIC_IP - [x] Criar
wwwCNAME →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
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). Scriptsopen-aws-port-*.shfalham até corrigir IAM ou abrir regras manualmente no console EC2.
B.1 Pré-requisito IAM (automação)¶
Escolha uma opção:
- IAM role na EC2 (recomendado): anexar role com
ec2:AuthorizeSecurityGroupIngress+ec2:DescribeSecurityGroupsao instance profile. aws configurena VPS — Access Key de usuário IAM com permissão no SG.- 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.appapontará para127.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=8445em.env→issabel.env(viarender-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
:443livre 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:8443autoassinado)
Scripts: scripts/apply-phase-d-caddy.sh · scripts/render-edge-config.sh · config/templates/Caddyfile.template
Fase E — Atualizar stack (.env + configs)¶
- [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 --buildportal, 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) |
[ ] |
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 |