Portal Orbitall — Hub (:8099 HTTP / :8443 HTTPS)¶
Apps core: 32-instalar-apps-core.md · Índice: 28-indice-instalacao-apps.md
Portal de entrada na VPS inspirado em Lorentz-Orbitall-V5.html, com menu orbital das soluções Lorentz e rodapé linkando Orbitall.
HTTP vs HTTPS (PWA)¶
| Porta | Variável .env |
URL homologação | Uso |
|---|---|---|---|
| 8099 | PORTAL_HTTP_PORT |
http://3.93.232.33:8099/ |
Acesso normal ao hub |
| 8443 | PORTAL_HTTPS_PORT |
https://3.93.232.33:8443/ |
Instalar PWA — botão ⊕ Instalar App |
O nginx do container expõe duas portas em paralelo (sem redirect HTTP→HTTPS):
:8099→ nginx:80(HTTP):8443→ nginx:443(HTTPS, cert autoassinado)
PWA: Chrome/Edge só exibem
beforeinstallpromptem HTTPS. Emhttp://…:8099/o portal funciona, mas não aparece o botão de instalação.
Instalar PWA (passo a passo)¶
- Liberar 8443 no Security Group:
./scripts/open-aws-port-8443.sh - Abrir
https://<IP>:8443/e aceitar o certificado autoassinado - O botão ⊕ Instalar App aparece no rodapé
Windows — script automático (baixa cert via HTTP, abre HTTPS):
Certificado manual: http://<IP>:8099/assets/lorentz-portal.crt
URLs na VPS de homologação¶
| App (rótulo V5) | Destino | URL exemplo |
|---|---|---|
| CTI | Dashboard Lorentz Server (Monitor API) | http://IP:8099/cti/ |
| MonitorOPS | Console de operações (infra) | http://IP:9090/ |
| Monitoramento | Supervisor web | http://IP:8080/ |
| Client | Webphone | http://IP:8081/ |
| AD | PABX Issabel | https://IP/ |
| Gravador | Em desenvolvimento | http://IP/gravador/ |
| URA | Dashboard Lorentz URA | http://IP/ura/ |
| Energy | Lorentz Energy (futuro) | http://IP/energy/ |
Configuração gerada em config/runtime/portal.apps.json a partir de .env.
Porta 80 vs Issabel¶
| Porta | Serviço |
|---|---|
| 80 | Portal Orbitall (lorentz-portal) |
| 443 | Issabel PBX (HTTPS admin) |
| 8088 | Issabel HTTP legado (redirect opcional) |
O template issabel.env usa ISSABEL_HTTP_PORT=8088 para não disputar a porta 80 com o portal.
Se a VPS já tinha Issabel em :80, após atualizar o stack:
./scripts/render-config.sh
cp config/runtime/issabel.env ~/issabel4-docker/.env
# redeploy ou ajuste Apache Issabel para nao escutar :80
./scripts/deploy-portal.sh
Deploy¶
cd ~/lorentz-vps-stack
cp .env.example .env # se necessario
# Ajuste PORTAL_PUBLIC_URL=http://SEU_IP/
./scripts/render-config.sh
./scripts/deploy-portal.sh
Firewall AWS:
./scripts/open-aws-port-8099.sh # HTTP
./scripts/open-aws-port-8443.sh # HTTPS (PWA)
# ou restrito: ./scripts/open-aws-port-8443.sh SEU_IP/32
O portal também sobe com o stack completo:
Estrutura de arquivos¶
portal/
index.html # Hub orbital (V5)
assets/orbitall.css
assets/orbitall.js
assets/cti-monitor.js # SSE + fallback polling
assets/cti-monitor.css
cti/index.html # Dashboard CTI (substituto MonitorCTI)
ura/index.html # Dashboard URA
gravador/index.html # Placeholder
energy/index.html # Placeholder Lorentz Energy
docker/lorentz-portal/
Dockerfile
nginx.conf # proxy /api/cti/monitor/ → lorentz-cti:8090
Personalizar links¶
Edite .env e rode render-config.sh:
PORTAL_PUBLIC_URL=http://3.93.232.33/
SUPERVISOR_PUBLIC_URL=http://3.93.232.33:8080/
MONITOR_PUBLIC_URL=http://3.93.232.33:9090/
WEBPHONE_PUBLIC_URL=http://3.93.232.33:8081/
ISSABEL_PUBLIC_URL=https://3.93.232.33/
LORENTZ_CTI_MONITOR_API_KEY=ChangeMe_MonitorApi2026!
Dashboard CTI Monitor (/cti/)¶
Substituto web do MonitorCTI desktop (Windows/UDP). Consome a Monitor API do LorentzCTI via proxy nginx.
| Recurso | URL (exemplo) |
|---|---|
| Dashboard | http://IP:8099/cti/ |
| Snapshot (proxy) | http://IP:8099/api/cti/monitor/snapshot |
| SSE tempo real | http://IP:8099/api/cti/monitor/stream?key=<api-key> |
| API direta CTI | http://IP:8090/api/monitor/snapshot (header X-Monitor-Api-Key) |
O que exibe: grid de agentes, dispositivos (ramais/troncos), fila de espera e parâmetros do servidor (senhas mascaradas).
Config (config/templates/portal.apps.json.template → config/runtime/portal.apps.json):
"ctiMonitor": {
"apiBase": "/api/cti/monitor",
"apiKey": "__LORENTZ_CTI_MONITOR_API_KEY__",
"useSse": true
}
Variáveis .env: LORENTZ_CTI_MONITOR_API_KEY, LORENTZ_CTI_PORT_MONITOR_API=8090.
Planta A (stack atual): proxy nginx no container lorentz-portal → lorentz-cti:8090.
Planta B (Impacta CSTA): deploy isolado — ver 21-plano-deploy-impacta-csta.md (copiar dashboard ou apontar apiBase para host Impacta).
Doc técnica da API: server/LorentzCTI/docs/api-monitor.md · 07-lorentz-cti-servidor.md
Lorentz Energy (planejado)¶
Serviço futuro no docker-compose.yml (profile energy). Por enquanto o hub aponta para /energy/ com página “em desenvolvimento”.
Documentação relacionada¶
- MAPA-FLUXO-AMBIENTE.md
- 07-lorentz-cti-servidor.md — Monitor API + Planta A
- 21-plano-deploy-impacta-csta.md — Planta B Impacta (pendente)
- 09-integracao-e-redes.md
- 17-dashboard-monitoramento.md