Ir para o conteúdo

Lab local — WSL2 / Docker (sem VPS)

Objetivo: permitir que a equipe de suporte treine, valide scripts e teste apps web sem acesso a uma VPS de cliente.
Não substitui homologação com Issabel/PABX — telefonia real exige Linux VPS (ver Instalação completa).


1. O que funciona no lab

App URL típica Observação
Portal Orbitall http://127.0.0.1:8099/ Hub, /cti/, /licenca/
Supervisor http://127.0.0.1:8080/ Login PHP — requer SQL bootstrap/restore
MonitorOPS http://127.0.0.1:9090/ Diagnóstico, ferramentas, .env
CTI Monitor API Portal → /cti/ Sem AMI Issabel — grids vazios ou parciais
Lorentz CTI portas 3000/8000/8090 TCP interno; AMI não conecta sem PBX
SQL Server localhost:1433 Developer Edition no container
Base Histórica 127.0.0.1:8091 Se basehistorica.zip presente
Webphone http://127.0.0.1:8081/ --with-webphone
Energy http://127.0.0.1:8082/ --with-energy
Licença API Portal → /licenca/ --with-licenca + licenca.zip

2. O que não funciona (limitações)

Item Motivo
Issabel PBX Docker hostnet — SIP/RTP/443 no host; instável ou inviável no WSL2
deploy-all.sh Inclui Issabel — use deploy-lab-local.sh
deploy-stack.sh Mesmo core Docker, sem Issabel — ver 25-guia-scripts-deploy.md
AMI / FullyBooted CTI precisa do Asterisk no Issabel
SIP / WebRTC / filas Fluxo telefônico completo
validate-install.sh --external Testa IP público / Security Group AWS
Scripts open-aws-port-*.sh Só fazem sentido na EC2

Para PABX + CTI integrados, use VPS Linux de homologação (2 vCPU, 4 GB RAM, 40 GB).


3. Pré-requisitos

Windows + WSL2 (recomendado para suporte)

  1. Windows 11/10 com WSL2 habilitado
  2. Ubuntu 22.04 no WSL (wsl --install -d Ubuntu)
  3. Docker Desktop — Settings → Resources → WSL integration → Ubuntu ON
  4. RAM WSL ≥ 6 GB — arquivo %UserProfile%\.wslconfig:
[wsl2]
memory=8GB
processors=4
swap=4GB

Reinicie WSL: wsl --shutdown (PowerShell).

Linux nativo (VM ou desktop)

  • Docker Engine + Compose plugin
  • ≥ 4 GB RAM livre, ≥ 25 GB disco
  • Mesmos scripts bash

Artefatos

Escolha uma origem:

Origem Conteúdo
Pacote suporte dist/lorentz-deploy-*.tar.gz net9.0.zip, supervisor.tar.gz, stack
Monorepo lorentz-vps-stack/ + clone supervisor-php + resources/net9.0.zip
# Pacote suporte (após extrair)
cd ~/omnichannel/lorentz-vps-stack
./scripts/prepare-support-install.sh

# Monorepo dev
git clone .../lorentz-vps-stack ~/omnichannel/lorentz-vps-stack
git clone .../supervisor-php ~/omnichannel/supervisor
# Copie ou gere net9.0.zip em resources/

4. Deploy rápido

cd ~/omnichannel/lorentz-vps-stack

# Core: SQL + CTI + Supervisor + Portal + MonitorOPS
./scripts/deploy-lab-local.sh

# Com todos os opcionais (webphone, energy, licenca)
./scripts/deploy-lab-local.sh --all-optional

# Parar lab (preserva volumes SQL)
./scripts/deploy-lab-local.sh --stop

O script:

  1. Detecta WSL
  2. Cria/ajusta .env (URLs 127.0.0.1, LORENTZ_LAB_MODE=1)
  3. Extrai net9.0.zip se necessário
  4. Roda check-pre-install.sh (falhas de Issabel são esperadas — ignore avisos de Issabel ausente)
  5. Sobe stack sem Issabel
  6. Exibe URLs e ./scripts/diagnose-stack.sh --brief

Primeira vez — banco de dados

Após o stack subir:

# Opção A — bootstrap mínimo (MonitorOPS)
# Ferramentas → Bootstrap SQL

# Opção B — schema completo
cp /caminho/LorentzCTI.bak resources/
./scripts/restore-sql-bak.sh
docker compose restart lorentz-cti supervisor

Validar:

./scripts/validate-install.sh          # local only
./scripts/diagnose-stack.sh --problems

5. Variáveis de ambiente

Use .env.lab.example como base:

cp .env.lab.example .env
nano .env

Ou deixe deploy-lab-local.sh patch automático de IPs de exemplo para 127.0.0.1.

Variável Lab
LORENTZ_LAB_MODE=1 Marca instalação local
VPS_PUBLIC_IP=127.0.0.1 URLs do Portal
MSSQL_BIND_IP=127.0.0.1 SQL só local
ISSABEL_DIR=/tmp/issabel-empty-lab Issabel não instalado

6. Matriz de testes sugerida (suporte)

Cenário Como testar Critério OK
Portal hub http://127.0.0.1:8099/ Apps visíveis, links abrem
Supervisor login http://127.0.0.1:8080/login.php HTTP 200 após bootstrap SQL
MonitorOPS http://127.0.0.1:9090/ Login admin, diagnóstico verde
CTI dashboard Portal → CTI Página carrega; API pode retornar vazio
Licença Portal → Licença Gera .lic se API ativa
Scripts deploy deploy-lab-local.sh --stop + redeploy Containers sobem de novo
Pacote dist Extrair .tar.gz + prepare-support-install.sh Mesmo fluxo lab

7. Troubleshooting lab

Docker daemon inacessível (WSL)

# Docker Desktop aberto no Windows?
docker info
# Reinicie integração WSL em Docker Desktop → Settings → Resources

SQL Server OOM / container reinicia

  • Aumente RAM WSL para 8 GB
  • Reduza MSSQL_MEMORY_LIMIT_MB=1536 no .env

check-pre-install.sh falha em Issabel

Esperado no lab. Use --skip-check se RAM/Docker OK:

./scripts/deploy-lab-local.sh --skip-check

Porta em conflito

ss -tlnp | grep -E ':8080|:8099|:9090'
# Ajuste PORTAL_HTTP_PORT, SUPERVISOR_HTTP_PORT no .env

CTI com "Authentication failed" nos logs

Normal sem Issabel. Não bloqueia teste de Portal/Supervisor.

Acesso do browser Windows às URLs WSL

Use http://127.0.0.1:8099/ — WSL2 encaminha localhost automaticamente.
Se falhar, use o IP WSL: ip addr show eth0 dentro do Ubuntu.


8. Lab vs VPS de homologação

Lab WSL VPS homolog
Custo Zero EC2 / KVM
Issabel Não Sim
Treino suporte UI/scripts Ideal Ideal
Teste SIP/WebRTC Não Sim
Script de referência deploy-lab-local.sh deploy-all.sh

9. Scripts relacionados

Script Uso no lab
deploy-lab-local.sh Deploy principal
diagnose-stack.sh Status up/down
validate-install.sh Validação pós-deploy (sem --external)
prepare-support-install.sh Pacote dist sem fontes
deploy-licenca.sh Profile licenca
deploy-webphone.sh Profile webphone

10. Histórico

Data Notas
2026-07-12 Doc + script deploy-lab-local.sh + .env.lab.example