Ir para o conteúdo

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.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:

[wsl2]
memory=12GB
processors=4
swap=4GB
localhostForwarding=true
networkingMode=mirrored

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:

wsl -l -v
Get-Content $env:USERPROFILE\.wslconfig
Get-NetConnectionProfile

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:

dist/lorentz-lab-windows-YYYYMMDD-HHMM.tar.gz
dist/lorentz-lab-windows-YYYYMMDD-HHMM.sha256

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