# VM123 — Finance Stack + Ops Console UI

| Item | Valor |
|------|-------|
| **IP LAN** | `10.10.10.123` |
| **SSH WAN** | `95.216.14.146:2523` |
| **Hostname** | vm123-finance |
| **URLs** | `financeiro.ligbox.com.br` · `openpanel.ligbox.com.br` · `console.ligbox.com.br` |

## Papel

- **FOSSBilling** (:8092) — billing clientes
- **Odoo 16** (:8069) — CRM/finance
- **OpenPanel** (:2083) — hosting sites
- **Ops Console UI** (Spec 019) — React SPA Docker `:8100`

## No repo Git (CT130)

```
deploy/vm123-finance-stack/     # docker-compose FOSS/Odoo/OpenPanel
specs/019-ops-console-active-operations/deploy/  # Template Console UI
specs/023-billing-recurrence-desk-visibility/
specs/024-openpanel-fossbilling/
specs/035-ligbox-mail-bundles-foss-openpanel/   # `/admin` gerente
specs/037-dns-multi-cloudflare-orchestration/    # DNS Viewer V3
docs/network/VM123_INVENTARIO.md
docs/VM123_OPS_CONSOLE_HANDOFF.md
```

## Serviços Docker (host)

| Container | Porta | Função |
|-----------|-------|--------|
| fossbilling | 8092 | FOSSBilling |
| odoo | 8069 | Odoo 16 |
| openpanel | 2083 | OpenPanel |
| ligbox-ops-console-ui | 8100 | Console Spec 019 + `/admin/dominio` (037) |

## DNS Viewer Console (Spec 037 V3)

| Item | Valor |
|------|-------|
| URL | `https://console.ligbox.com.br/admin/dominio` |
| Frontend | `AdminDominio.jsx` + `DnsViewerPanel.jsx` |
| API | Proxy Desk `GET /api/v1/domain-console/dns/viewer/{domain}` (VM122) |
| Auth | Login Desk → JWT em `localStorage` |

Deploy: build em `specs/019-.../deploy/frontend` → `/opt/ligbox-ops-console/frontend`.

## Deploy

```bash
# Canónico (repo CT130)
cd /opt/ligbox-spec-hub/repos/ligbox-ops-platform/deploy/vm123-finance-modern
./deploy-vm123-full.sh    # sync + console build + FINANCE_RELEASE=GREEN
./smoke-vm123.sh          # só validação
```

Runtime VM123: `/opt/vm123-finance-stack` · `/opt/ligbox-ops-console`  
Rule Cursor: `.cursor/rules/vm123-deploy-release.mdc`

## Integração

- **← VM122:** API `api.ops.ligbox.com.br` (motor chamados)
- **→ Desk:** deep-links FOSS/Odoo/OpenPanel (Spec 023, 027)
- **← Traefik CT114:** rotas públicas

## ⚠️ Nota sync

Código **runtime** na VM123 (`/opt/vm123-finance-stack`, `/opt/ligbox-ops-console`) deve ser actualizado via **git pull** do CT130 — não estava no sync inicial VM122-only.
