50 — Setup do Windows do lab (winget, Hyper-V, Sandbox, WSL)¶
Preparo da máquina Windows antes do Docker e do deploy-lab-local.sh.
| Script | scripts/setup-lab-windows.ps1 |
| Homologação na LAN | 47 — Windows 11 192.168.144.89 |
| Lab só neste PC | 24 — Lab WSL/Docker |
| Mapa de repositórios | 35 — Repositórios da stack |
O script confere hardware, liga os recursos do Windows e instala Git, Windows Terminal e o pacote WSL pelo winget. Não debloata o sistema, não desliga o Windows Update e não sobe a stack Lorentz.
Telefonia (Issabel, SIP, RTP) não entra nesta máquina. Continua na VPS, doc 44.
1. Requisitos mínimos para começar¶
Valores da homologação em doc 47 §2. Abaixo disso o SQL reinicia ou a rede espelhada do WSL não existe.
| Item | Mínimo para montar | Recomendado | Por quê |
|---|---|---|---|
| CPU | 4 núcleos, VT-x ou AMD-V ligado na BIOS | 6–8 núcleos | WSL2, Hyper-V e Sandbox usam o mesmo hipervisor |
| RAM | 16 GB | 32 GB | SQL pede até 2 GB; o WSL fica com 12 GB |
| Disco livre | 60 GB (SSD) | 100 GB | Imagens Docker + volume do SQL + .bak |
| Windows | 11 22H2 (build 22621) ou mais novo | 23H2 ou 24H2 | networkingMode=mirrored |
| Edição | Pro, Enterprise ou Education | Pro | Hyper-V e Windows Sandbox não existem no Home |
| Rede | Perfil Privada | Reserva DHCP 192.168.144.89 |
Firewall e acesso dos outros PCs da LAN |
| Conta | Administrador local | A mesma | Ligar recurso do Windows exige elevação |
Windows 11 Home: o script ainda liga o WSL2. Hyper-V e Sandbox ficam de fora.
Não precisa estar instalado no Windows: .NET SDK, PHP, SQL Server nativo, Issabel. O SQL sobe no container.
2. Fontes e links¶
2.1 Microsoft (o que o script usa)¶
| Peça | Para que serve | Link |
|---|---|---|
| winget | Instalar Git, Terminal e WSL | winget · pacote App Installer · atalho aka.ms/getwinget |
| WSL 2 | Linux onde roda o Docker | Instalar o WSL · instalação manual |
.wslconfig |
RAM e rede espelhada | Configuração avançada · rede mirrored |
| Ubuntu 22.04 | Distro única do lab | Microsoft Store |
| Hyper-V | VMs e base do Sandbox | Habilitar o Hyper-V |
| Windows Sandbox | Testar um instalador isolado, descartável | Visão geral e requisitos |
| Git para Windows | Checkout no disco do Windows (C:\omnichannel) |
git-scm.com/download/win · winget Git.Git |
IDs winget que o script instala: Microsoft.WSL, Git.Git, Microsoft.WindowsTerminal. Com -WithDockerDesktop, também Docker.DockerDesktop.
2.2 Docker (depois do Ubuntu abrir a primeira vez)¶
Escolha uma opção. Não misture as duas na mesma distro.
| Opção | Quando | Link |
|---|---|---|
| A — Docker CE dentro do WSL | Padrão deste lab e da VPS | Docker Engine no Ubuntu · Compose já vem no pacote docker-compose-v2 do Ubuntu |
| B — Docker Desktop | Quem prefere a UI no Windows | Backend WSL · winget Docker.DockerDesktop |
2.3 Código e artefatos para o primeiro up¶
Layout em C:\omnichannel (no WSL: /mnt/c/omnichannel). Mapa completo: doc 35.
| Pasta / arquivo | Obrigatório para o core? | Origem |
|---|---|---|
lorentz-vps-stack/ |
Sim | araguaci/lorentz-vps-stack |
supervisor/ com login.php |
Sim | araguaci/lorentz-supervisor branch lorentz-vps, ou resources/supervisor.tar.gz |
resources/net9.0.zip ou resources/lorentz-cti-publish/LorentzCTI.dll |
Sim | Build de server/LorentzCTI/ (scripts/build-lorentz-cti-zip.sh). Não vem no git |
resources/LorentzCTI.bak |
Sim para login real | Backup de homologação. Não usar backup de produção sem máscara |
omnichannel-system/ |
Recomendado | Laravel na porta 8095. Guia: doc 48 |
resources/basehistorica.zip |
Recomendado | Build de server/LorentzDB.Worker/ |
lorentz-webphone/ |
Só com --with-webphone |
araguaci/lorentz-webphone |
Kit empacotado (sem clonar tudo): MonitorOPS → Ferramentas → Pacote suporte, doc 45.
Issabel não clonar nesta máquina. Fica na VPS: araguaci/issabel4-docker.
3. Checklist¶
Marque na ordem. O script cobre os itens 1 a 6. Do 7 em diante é o doc 47.
| # | Prova | Feito |
|---|---|---|
| 1 | BIOS com virtualização ligada; setup-lab-windows.ps1 sem FALTA em CPU, RAM, disco e Windows 11 22H2 |
|
| 2 | PowerShell administrador: .\scripts\setup-lab-windows.ps1 -Apply |
|
| 3 | Reboot feito se o script pediu (código de saída 2) e -Apply rodado de novo |
|
| 4 | wsl -l -v mostra Ubuntu 22.04 (nome Ubuntu ou Ubuntu-22.04) ou Debian, versão 2, com * na distro do Docker |
|
| 5 | %UserProfile%\.wslconfig tem networkingMode=mirrored e memory=12GB |
|
| 6 | Ubuntu aberto uma vez; usuário Linux criado | |
| 7 | Docker CE no Ubuntu (docker info) ou Docker Desktop com integração WSL — um só |
|
| 8 | Pastas e artefatos da tabela §2.3 no lugar | |
| 9 | .env com VPS_PUBLIC_IP=192.168.144.89 e senha sa forte, antes do deploy |
|
| 10 | ./scripts/deploy-lab-local.sh e o checklist de aceite do doc 47 §7 |
Windows Sandbox não entra no aceite da stack. Serve para abrir um .exe desconhecido e jogar a sessão fora ao fechar a janela.
4. Comandos¶
PowerShell como administrador, na pasta do stack:
cd C:\omnichannel\lorentz-vps-stack
# só lê; não muda o Windows
.\scripts\setup-lab-windows.ps1
# liga WSL, Plataforma de Máquina Virtual, Hyper-V, Sandbox;
# winget: Microsoft.WSL, Git.Git, Microsoft.WindowsTerminal;
# grava .wslconfig se ainda não existir
.\scripts\setup-lab-windows.ps1 -Apply
Variações:
.\scripts\setup-lab-windows.ps1 -Apply -SkipSandbox
.\scripts\setup-lab-windows.ps1 -Apply -WithDockerDesktop
.\scripts\setup-lab-windows.ps1 -Apply -ForceWslConfig -WslMemoryGb 16 -WslProcessors 6
-ForceWslConfig substitui o .wslconfig (guarda cópia .bak). Sem essa flag, arquivo existente é mantido.
Se a RAM for menor que 16 GB o script recusa. Se for 16 GB e pedirem 12 GB para o WSL, ele grava 12 GB e o Windows fica com cerca de 4 GB — é o piso do doc 47, não sobra para mais nada pesado no host.
4.1 O que o -Apply liga¶
| Recurso Windows | Nome técnico | Função no lab |
|---|---|---|
| Subsistema do Windows para Linux | Microsoft-Windows-Subsystem-Linux |
Base do WSL |
| Plataforma de Máquina Virtual | VirtualMachinePlatform |
WSL2 |
| Hyper-V | Microsoft-Hyper-V-All |
Hipervisor; exigido pelo Sandbox |
| Windows Sandbox | Containers-DisposableClientVM |
Sessão descartável |
Conteúdo gravado em %UserProfile%\.wslconfig quando o arquivo ainda não existe:
mirrored faz a porta publicada pelo Docker aparecer em 192.168.144.89, não só em 127.0.0.1.
4.2 Na mão, se o script não puder rodar¶
wsl --install -d Ubuntu-22.04
wsl --set-default-version 2
wsl --set-default Ubuntu-22.04
wsl -l -v
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All -All -NoRestart
Enable-WindowsOptionalFeature -Online -FeatureName Containers-DisposableClientVM -All -NoRestart
winget install --id Microsoft.WSL -e --accept-package-agreements --accept-source-agreements
winget install --id Git.Git -e --accept-package-agreements --accept-source-agreements
winget install --id Microsoft.WindowsTerminal -e --accept-package-agreements --accept-source-agreements
Reinicie quando o Windows pedir. Abra o Ubuntu, crie o usuário, e siga o Docker da opção A no doc 47 §3.3.
5. Conferir antes de chamar o deploy¶
No PowerShell:
No Ubuntu:
cd /mnt/c/omnichannel/lorentz-vps-stack
docker info
free -h
ip -4 addr
test -f ../supervisor/login.php && echo "Supervisor ok"
test -f resources/net9.0.zip -o -f resources/lorentz-cti-publish/LorentzCTI.dll && echo "CTI ok"
test -f resources/LorentzCTI.bak && echo "BAK ok"
ip -4 addr precisa listar 192.168.144.89 (ou o IP reservado desta máquina). Se só aparecer 172.x, a rede espelhada não pegou: confira o .wslconfig, rode wsl --shutdown e abra o Ubuntu de novo. Windows antigo (antes do 22H2) não tem esse modo.
Firewall da LAN, .env e ./scripts/deploy-lab-local.sh: doc 47 §3.4 em diante.
6. Pacote para o Drive (repetir a cada atualização)¶
A pasta de trabalho não sobe. Ela tem .env, .env.production e config/runtime/. A dist/ do dia a dia também não é este kit: lá ficam temas de Issabel.
O lab Windows não tem D:. O pacote extrai em C:\ e fica C:\omnichannel\lorentz-vps-stack\. O Supervisor não vai solto: está em resources/supervisor.tar.gz e o deploy cria C:\omnichannel\supervisor\.
6.1 Quando gerar de novo¶
Rode de novo no PC de desenvolvimento (D:\omnichannel) sempre que mudar um destes:
| Mudou | Antes do pacote |
|---|---|
| PHP do Supervisor | ./scripts/build-supervisor-package.sh (grava resources/supervisor.tar.gz) |
| LorentzCTI | ./scripts/build-lorentz-cti-zip.sh (grava resources/net9.0.zip) |
| Base Histórica | ./scripts/build-lorentz-basehistorica-zip.sh |
| Banco de homologação | copiar o .bak novo para resources/LorentzCTI.bak |
| Scripts, compose ou docs 47/50 | nada além do pacote |
scripts/build-dist-package.sh é outro produto: leva o Supervisor inteiro (~600 MB) e serve à equipe de suporte da VPS. Para este lab use só o script abaixo.
6.2 Gerar¶
No WSL, na pasta do stack:
cd /mnt/d/omnichannel/lorentz-vps-stack
chmod +x scripts/build-lab-windows-package.sh
./scripts/build-lab-windows-package.sh
Saída:
O script exige os quatro artefatos (net9.0.zip, supervisor.tar.gz, LorentzCTI.bak, basehistorica.zip) e recusa o arquivo se entrar .git, .env, .env.production, config/runtime/ ou tmp-*.
Não use o tar manual com --exclude=./.git e -C .. lorentz-vps-stack. O nome dentro do arquivo fica lorentz-vps-stack/.git, o filtro ./.git não casa, e gravar o .tar.gz dentro de dist/ enquanto o tar ainda lê essa pasta gera file changed as we read it. O arquivo dist/lorentz-lab-windows.tar.gz feito assim leva .git, .env e config/runtime. Não suba esse arquivo.
Entra: scripts, docker/, docs, .env.lab.example e os quatro artefatos. Fica de fora: .git, .env*, config/runtime/, site/, themes/, dist/.
6.3 Subir e extrair¶
Suba o .tar.gz e o .sha256. O link fica restrito à equipe: o .bak é banco de homologação. Apague do Drive o pacote anterior quando o novo estiver no lab.
No Windows do lab:
cd C:\
tar -xzf "$env:USERPROFILE\Downloads\lorentz-lab-windows-YYYYMMDD-HHMM.tar.gz"
cd C:\omnichannel\lorentz-vps-stack
copy .env.lab.example .env
notepad .env
Se o download caiu em outra pasta, troque o caminho do tar.
Confira o hash no PowerShell: Get-FileHash do .tar.gz contra a linha do .sha256.
Ajuste no .env pelo menos VPS_PUBLIC_IP, as *_PUBLIC_URL e MSSQL_SA_PASSWORD. Senha nova, desta máquina. Não copie o .env do PC de desenvolvimento.
Siga o doc 47 a partir do Docker e do ./scripts/deploy-lab-local.sh.
Histórico¶
| Data | Notas |
|---|---|
| 2026-10-02 | Checklist e setup-lab-windows.ps1: winget, Hyper-V, Sandbox, WSL2, requisitos e links |
| 2026-10-02 | Pacote do lab para o Drive: scripts/build-lab-windows-package.sh (§6). Não sobe a pasta de trabalho |