Ir para o conteúdo

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 beforeinstallprompt em HTTPS. Em http://…:8099/ o portal funciona, mas não aparece o botão de instalação.

Instalar PWA (passo a passo)

  1. Liberar 8443 no Security Group: ./scripts/open-aws-port-8443.sh
  2. Abrir https://<IP>:8443/ e aceitar o certificado autoassinado
  3. O botão ⊕ Instalar App aparece no rodapé

Windows — script automático (baixa cert via HTTP, abre HTTPS):

irm http://3.93.232.33:8099/assets/install-portal-cert.ps1 | iex

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:

docker compose up -d --build lorentz-portal

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

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.templateconfig/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-portallorentz-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