# 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 git clone https://git.spec.ligbox.com.br/ligbox/ligbox-ops-platform.git cd deploy/vm123-finance-stack && docker compose up -d # Console: specs/019-.../deploy/ → /opt/ligbox-ops-console/ ``` ## 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.