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)¶
- Windows 11/10 com WSL2 habilitado
- Ubuntu 22.04 no WSL (
wsl --install -d Ubuntu) - Docker Desktop — Settings → Resources → WSL integration → Ubuntu ON
- RAM WSL ≥ 6 GB — arquivo
%UserProfile%\.wslconfig:
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:
- Detecta WSL
- Cria/ajusta
.env(URLs127.0.0.1,LORENTZ_LAB_MODE=1) - Extrai
net9.0.zipse necessário - Roda
check-pre-install.sh(falhas de Issabel são esperadas — ignore avisos de Issabel ausente) - Sobe stack sem Issabel
- 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:
5. Variáveis de ambiente¶
Use .env.lab.example como base:
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=1536no.env
check-pre-install.sh falha em Issabel¶
Esperado no lab. Use --skip-check se RAM/Docker OK:
Porta em conflito¶
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 |