# Spec 024 — Card cliente → FOSS → OpenPanel (provisionamento) **Roger · 2026-06-17** ## O teu raciocínio está correto 1. **Card do cliente (Desk / portal)** — recolhe dados mínimos do comprador. 2. **FOSSBilling** — cria cliente + pedido + activa produto hosting. 3. **OpenPanel** — recebe API call do FOSS (`createAccount`) e cria user hosting. 4. **pfSense** — **não** cria conta; só encaminha tráfego WAN → Traefik → VM123. ``` Internet → 95.216.14.146 (pfSense WAN) → NAT :80/:443 → 10.10.10.114 (Traefik) → financeiro.ligbox.com.br/foss|/odoo → 10.10.10.123 → openpanel.ligbox.com.br → 10.10.10.123:2083 ``` **NAT pfSense já existente (não precisa duplicar):** | Regra | WAN | Destino | |-------|-----|---------| | Traefik HTTP | 80 | 10.10.10.114 | | Traefik HTTPS | 443 | 10.10.10.114 | Novos hostnames só precisam de **DNS Cloudflare** → mesmo IP público. --- ## Campos obrigatórios no card (→ FOSS → OpenPanel) | Campo no card | Vai para FOSSBilling | Vai para OpenPanel API | Notas | |---------------|----------------------|------------------------|-------| | **email** | Cliente `email` | `email` | Login/recuperação | | **nome / empresa** | Cliente `first_name` / company | — | Facturação | | **domínio** | Opcional no produto | gera `username` (7 chars + dígito) | ex: `cliente1.com` → user `cliente1x` | | **senha painel** | Order / hosting password | `password` | Senha OpenPanel user | | **plano** | Product / `plan_name` | `plan_name` | **Deve coincidir** com plano OpenPanel | | **CPF/CNPJ** | Cliente custom field | — | Fiscal (Odoo fase 2) | | **telefone** | Cliente `phone` | — | Suporte | ### Plano OpenPanel criado (VM123) | name | id | Uso | |------|-----|-----| | `ligbox-site-cms` | 3 | Site/CMS Spec 018 | | `Standard plan` | 1 | Testes | | `Developer Plus` | 2 | Maior | **FOSS product** deve usar `plan_name` = `ligbox-site-cms` (exacto). --- ## Config FOSSBilling → Server OpenPanel Admin FOSS → **System → Hosting plans → New server** | Campo | Valor | |-------|-------| | Manager | OpenPanel | | Hostname | `10.10.10.123` | | Port | `2087` | | Secure | Yes (HTTPS) | | Username | `ligboxadmin` | | Password | `LbOpen805353` | Test connection → depois associar produto hosting ao server + plano `ligbox-site-cms`. --- ## Fluxo automático (pedido pago) ``` Card cliente (email, domínio, plano, senha) → FOSSBilling: create client + order → FOSSBilling: activate hosting → OpenPanel.php: POST /api/users { email, username, password, plan_name } → OpenPanel: conta hosting criada → Email cliente com URL openpanel.ligbox.com.br ``` --- ## O que o Desk precisa (Spec 023 fase 2) No card **Serviços / Site CMS**: - `client_email` * - `client_name` * - `domain` * (para username OpenPanel) - `hosting_plan` * (dropdown: ligbox-site-cms) - `panel_password` * (ou gerar) - `foss_client_id` (após sync) - `openpanel_username` (read-only após provision)