# VM123 — Ligbox Ops Console (handoff implementação)

**Data:** 2026-06-16  
**Roger** · Spec **019**  
**Status:** Início implementação

---

## Papel da VM123

| Item | Valor |
|------|-------|
| **Função** | Host **UI only** — Ligbox Ops Console (SPA React) |
| **Deploy** | **Docker Compose obrigatório** (VM já tem outros serviços) |
| **Path** | `/opt/ligbox-ops-console/` |
| **Porta** | `8100` (validar com preflight) |
| **URL** | `https://console.ligbox.com.br` (Traefik CT114) |
| **API** | `https://api.ops.ligbox.com.br` (VM122 — não corre na 123) |

**Não construir na VM123:** API chamados, SQLite, workers, Wazuh, wizard.

---

## O que vai ser construído aqui

```text
/opt/ligbox-ops-console/
├── docker-compose.yml
├── .env
├── frontend/                 # React + Vite
│   ├── Dockerfile
│   └── src/
│       ├── views/
│       │   ├── Overview.jsx
│       │   ├── Discover.jsx
│       │   ├── ChamadosList.jsx
│       │   └── ChamadoHub.jsx    ← hub investigação CH-*
│       └── components/
│           ├── InvestigationTimeline.jsx
│           ├── ObservablesPanel.jsx
│           ├── AssistPanel.jsx
│           └── WazuhDeepLinkButton.jsx
├── nginx/default.conf
└── scripts/
    ├── preflight-vm123.sh
    └── deploy-console.sh
```

---

## Navegação (hub CH-*)

Ver: `specs/019-ops-console-active-operations/design/navigation-ia.md`

- **Discover** → entrada; click evento → hub `CH-*`
- **Hub** = timeline + observables + assist + infra + runbooks
- Deep link Wazuh → VM104 (novo tab)

---

## Legado

- `desk.ligbox.com.br` na VM122 **não é alterado** nesta fase
- Novo compose **não** faz `docker compose down` global na VM
- Cutover só com aprovação Roger

---

## Spec Kit (Obsidian)

| Documento | Path |
|-----------|------|
| Spec | `specs/019-ops-console-active-operations/spec.md` |
| Plan | `specs/019-ops-console-active-operations/plan.md` |
| Tasks | `specs/019-ops-console-active-operations/tasks.md` |
| Deploy template | `specs/019-ops-console-active-operations/deploy/` |
| Chat bruto | `LAPTOP/CHAT_BRUTO_OPS_CONSOLE_VM123_SPEC_20260616.txt` |

---

## Comandos deploy

```bash
# Copiar templates Spec Kit → VM123
rsync -av /root/obsidian-infra/ligbox-ops-platform/specs/019-ops-console-active-operations/deploy/ \
  root@10.10.10.123:/opt/ligbox-ops-console/

ssh root@10.10.10.123 'cd /opt/ligbox-ops-console && cp -n .env.example .env'
ssh root@10.10.10.123 'chmod +x /opt/ligbox-ops-console/scripts/*.sh'
ssh root@10.10.10.123 '/opt/ligbox-ops-console/scripts/preflight-vm123.sh'
```

---

## Inventário VM123 (preencher no 1º SSH)

| Campo | Valor |
|-------|-------|
| Hostname | `vm123-finance` |
| IP LAN | `10.10.10.123` |
| Porta 8100 | **livre** → Console em `127.0.0.1:8100` |
| Porta 8092 | **ocupada** — FOSSBilling (não usar) |
| Containers existentes | 9 (Odoo, FOSSBilling, OpenPanel, Caddy, …) — **inalterados** |
| Console stack | `ligbox-ops-console-ui` (compose isolado) |
| Path workspace | `/opt/ligbox-ops-console/` |
| Docs no host | `/opt/ligbox-ops-console/docs/` |
| SSH LAN | `root@10.10.10.123` |

---

## Dependências outras VMs

| Fase | VM |
|------|-----|
| F3 UI (agora) | **123** |
| F1–F2 API hub | 122 |
| F5 Assist | 112 |
| SOC mail logs | Spec 012 (futuro) |
