48 — Omnichannel-System junto do legado¶
O Supervisor (PHP, SQL Server LorentzCTI) continua sendo o contact center em produção. O Omnichannel-System (Laravel 12, MySQL, Redis) é o projeto que assume esse lugar. Nesta fase os dois sobem no mesmo ambiente e se encontram pelo Portal e pelo MonitorOPS. Cada um guarda o seu banco.
Não misture os composes. O arquivo omnichannel-system/docker-compose.yml publica a porta 8090, que já é a Monitor API do LorentzCTI. O stack usa só docker-compose.vps.yml, na porta 8095.
O que sobe¶
| Container | Função |
|---|---|
omnichannel_nginx |
HTTP do Laravel |
omnichannel_app |
PHP-FPM |
omnichannel_queue |
Filas |
omnichannel_scheduler |
Agendador |
omnichannel_db |
MySQL 8 (omnichannel) — não é o SQL Server do legado |
omnichannel_redis |
Cache, sessão e fila |
omnichannel_waha |
WhatsApp. Só com --with-waha. Fica em 127.0.0.1:3001 |
Código: pasta irmã ../omnichannel-system (OMNICHANNEL_DIR).
Onde entra em cada ambiente¶
| Ambiente | Comando | Quem alcança o Laravel |
|---|---|---|
| Lab WSL | ./scripts/deploy-lab-local.sh (já chama o script abaixo) |
http://127.0.0.1:8095/ |
Homologação 192.168.144.89 |
O mesmo script, com VPS_PUBLIC_IP=192.168.144.89 |
http://192.168.144.89:8095/ |
| VPS | ./scripts/deploy-all.sh ou ./scripts/deploy-omnichannel.sh --vps |
https://omnichannel.<domínio>/ via Caddy. A 8095 não abre no firewall |
Para não subir o Laravel no lab: ./scripts/deploy-lab-local.sh --skip-omnichannel.
Se a pasta omnichannel-system não existir, o script avisa e o legado segue sozinho.
Passo a passo¶
1. Código ao lado do stack¶
Na VPS, o mesmo layout em ~/omnichannel/.
2. Subir¶
cd ~/omnichannel/lorentz-vps-stack # ou /mnt/d/omnichannel/lorentz-vps-stack
chmod +x scripts/*.sh
# Lab ou homologação Windows/WSL (bind 0.0.0.0)
./scripts/deploy-omnichannel.sh --lab
# VPS (bind 127.0.0.1, atrás do Caddy)
./scripts/deploy-omnichannel.sh --vps
O script:
- Cria
omnichannel-system/.enva partir de.env.vps.examplese ainda não houver arquivo - Grava
OMNICHANNEL_APP_URL, a porta e o bind. OAPP_URLusado pelocomposer devno host não é trocado - No lab, se
DB_PASSWORD/DB_ROOT_PASSWORDainda foremCHANGE_ME, grava senha inicial de laboratório - Gera
APP_KEYse estiver vazio - Sobe o compose e roda
php artisan migrate --force
Senhas iniciais somente quando o .env ainda está no exemplo, em modo lab:
| Variável | Valor inicial |
|---|---|
DB_PASSWORD |
LabOmni_2026! |
DB_ROOT_PASSWORD |
LabOmni_Root2026! |
Na VPS o script recusa seguir com CHANGE_ME. Troque antes.
3. Conferir¶
curl -sI http://127.0.0.1:8095/login | head -5
docker ps --format '{{.Names}} {{.Status}}' | grep omnichannel_
No Portal (:8099), o cartão Suporte aponta para OMNICHANNEL_PUBLIC_URL + suporte.
No MonitorOPS (:9090), o grupo Omnichannel lista app, nginx, MySQL, Redis e WAHA.
4. Parar¶
Volumes do MySQL e do Redis permanecem. ./scripts/deploy-lab-local.sh --stop para o legado e o Laravel.
Integração nesta fase¶
| Ligação | Como |
|---|---|
| Menu | Portal Orbitall → Suporte → Omnichannel-System |
| Operação | MonitorOPS reinicia, reconstrói e lê o .env do Laravel |
| Dados | SQL Server LorentzCTI (Supervisor / CTI) e MySQL omnichannel (Laravel) ficam separados |
| Telefonia | Continua no LorentzCTI + Issabel. O Laravel ainda não substitui o CTI |
Profile waha, opcional: ./scripts/deploy-omnichannel.sh --lab --with-waha |
O container força DB_CONNECTION=mysql e DB_HOST=db. Isso vale dentro do Docker. O PHP no Windows, fora do container, continua com o DB_CONNECTION do .env do projeto.
Requisitos a mais¶
Além do legado (doc 47 ou doc 02):
| Recurso | Acréscimo |
|---|---|
| RAM | Cerca de 2 GB (MySQL + Redis + PHP + fila). Em WSL de 8 GB, baixe MSSQL_MEMORY_LIMIT_MB para 1536 |
| Disco | Cerca de 8 GB (imagem PHP com vendor/build + volume MySQL) |
| Porta lab/homolog | TCP 8095 na LAN. Não use 8090 |
| Porta VPS | 8095 só em localhost. Público: 443 no hostname omnichannel. |
| Clone | omnichannel-system com Dockerfile e docker-compose.vps.yml |
Build da imagem na primeira vez pode levar vários minutos (Composer e frontend dentro do Docker).
Homologação na 192.168.144.89¶
No .env do stack, antes do deploy:
VPS_PUBLIC_IP=192.168.144.89
OMNICHANNEL_PUBLIC_URL=http://192.168.144.89:8095/
OMNICHANNEL_HTTP_PORT=8095
OMNICHANNEL_DIR=../omnichannel-system
Inclua 8095 na regra de firewall da LAN (perfil Privado). O SQL Server do legado e o MySQL do Laravel continuam sem porta publicada para outros PCs.
Aceite: de outro PC, http://192.168.144.89:8095/login responde, e o cartão Suporte do Portal abre esse endereço.
Problemas frequentes¶
| Sintoma | Ação |
|---|---|
| Porta 8090 ocupada ou CTI Monitor cai ao subir o Laravel | Algum compose antigo do Omnichannel publicou 8090. Pare esses containers e use só docker-compose.vps.yml |
FALHA: defina DB_PASSWORD |
VPS: edite omnichannel-system/.env |
| Login do Laravel em loop no HTTP do lab | OMNICHANNEL_SESSION_SECURE tem de ser false no lab. Rode de novo ./scripts/deploy-omnichannel.sh --lab |
Portal ainda aponta para orbitall.app |
Ajuste OMNICHANNEL_PUBLIC_URL e rode ./scripts/render-config.sh |
| Pasta ausente | O legado sobe; o script só avisa. Clone omnichannel-system e rode o deploy de novo |
Histórico¶
| Data | Notas |
|---|---|
| 2026-09-28 | Deploy integrado ao lab, à homologação LAN e à VPS. Compose na porta 8095 |