Documenta Wizard→Desk→FOSS→OpenPanel→Odoo com contratos, rollback e registo SPEC-REGISTRY antes da implementação das fases de activação. Co-authored-by: Cursor <cursoragent@cursor.com>
29 KiB
Spec 035 — Bundles Ligbox Mail (FOSSBilling + OpenPanel + Nextcloud)
Criado: 2026-06-21
Solicitado por: Roger
Status: 📋 Draft — aguarda aprovação comercial + Fase 0
Prioridade: P1
Relacionado: Spec 024 (FOSS/OpenPanel) · 028 (bridge CE) · 034 (Nextcloud) · 027 (RBAC) · 010 (Domain Admin) · 018 (catálogo serviços) · 037 (dns-viewer.md) · 043 mapa activação
Resumo executivo
Definir como vender, provisionar e administrar pacotes de email profissional Ligbox (Carbonio VM112) + Nextcloud (VM116) + certificação EasyDMARC, usando:
| Camada | Função |
|---|---|
| FOSSBilling (VM123) | Catálogo, preços, pedidos, faturação, área cliente |
| OpenPanel (VM123) | Provisionamento hub (backend) — sem UI exposta ao gerente |
| Área Gerente de Domínio | Console único SPA — ver domain-manager-console-ui.md |
| Wizard Domain Admin (VM112) | Criar/gerir contas email, quotas, Nextcloud por domínio |
| Desk (VM122) | Orquestração, health, RBAC staff Ligbox |
Princípio central: o Gerente de Domínio (admin@{dominio} ou titular FOSS) configura o bundle e habilita contas. Utilizadores finais de email acedem só a webmail + Nextcloud Files — sem painel administrativo.
1. Ofertas comerciais
1.1 Planos base (bundles fixos)
Estes são os templates de venda no FOSSBilling. O cliente pode comprar directamente ou usar como ponto de partida para personalização.
| Código FOSS | Nome comercial | Contas email (máx.) | Quota mail / conta | Nextcloud / conta | Subdomínio | Preço sugerido Ligbox* |
|---|---|---|---|---|---|---|
ligbox-mail-starter |
Ligbox Mail Starter | 10 | 20 GB | 100 GB (config. 100–200) | 1 incluído | R$ 249/mês |
ligbox-mail-business |
Ligbox Mail Business | 25 | 30 GB | 200 GB (config. 100–300) | 1 incluído | R$ 549/mês |
ligbox-mail-enterprise |
Ligbox Mail Enterprise | 50 | 50 GB | 300 GB (config. 100–500) | 1 incluído | R$ 999/mês |
* Preços sugeridos — Roger valida margem antes de publicar no FOSS.
Incluído em todos os bundles:
- Email
@seudominio.com.br(Carbonio — webmail, IMAP, SMTP, calendário, contactos) - Nextcloud Files em
files.{dominio}(sync desktop/mobile, partilha, links) - Certificação email EasyDMARC (SPF, DKIM, DMARC monitorizado — ver §4)
- 1 conta Gerente de Domínio com painel administrativo
- Suporte DNS (MX, SPF, DMARC) via wizard onboarding
- Painel DNS read-only (gerente + staff) — Spec 037-DNS-VIEWER
- TLS Let's Encrypt (mail + files)
1.2 Bundle personalizado (configurador)
Cliente escolhe combinação dentro dos limites operacionais:
| Parâmetro | Opções | Notas |
|---|---|---|
| Nº contas email | 10 · 25 · 30 · 40 · 50 | Hard cap inicial = 50 (escalar após VM116) |
| Quota mail / conta | 20 · 30 · 40 · 50 GB | Aplica-se Carbonio (hot tier VM112) |
| Quota Nextcloud / conta | 100 · 200 · 300 · 400 · 500 GB | Aplica-se VM116 Files |
| Subdomínio | 1 incluído | ex.: mail.empresa.com.br ou site CMS add-on |
Código FOSS: ligbox-mail-custom — produto configurável com opções FOSS (ver §5).
Exemplo pedido Roger: 10 contas × 50 GB mail + 500 GB Nextcloud cada:
ligbox-mail-custom
seats=10
mail_gb=50
files_gb=500
→ Preço calculado: base + (seats × mail_rate) + (seats × files_rate)
→ Estimativa: ~R$ 890/mês (ver fórmula §1.4)
1.3 Benchmark concorrência (referência Jun/2026)
| Concorrente | Plano | Preço / utilizador / mês | Storage mail | Cloud files | DMARC incluído |
|---|---|---|---|---|---|
| Google Workspace | Business Starter | R$ 40,90 (anual) · USD 7 | 30 GB pooled | Drive incluído | Não |
| Google Workspace | Business Standard | R$ 81,80 (anual) · USD 14 | 2 TB pooled | Drive | Não |
| Microsoft 365 | Business Basic | ~USD 6 (~R$ 35) | 50 GB Exchange | 1 TB OneDrive | Não |
| Microsoft 365 | Business Standard | ~USD 12,50 (~R$ 72) | 50 GB | 1 TB + Office | Não |
| Zoho Mail | Premium (BR) | R$ 20 (anual) | 50 GB | WorkDrive extra | Não |
| EasyDMARC | Plus (MSP) | ~USD 36/mês (~R$ 200) | — | — | 2 domínios |
| Ligbox Mail Business | 25 contas | R$ 549/mês = R$ 22/conta | 30 GB + 200 GB NC | Files incluído | Sim |
Posicionamento Ligbox:
- 20–45% abaixo do Google/Microsoft por utilizador em bundles PME
- Mais storage mail + files que Zoho no mesmo tier
- EasyDMARC incluído (valor ~R$ 200/mês separado) — diferencial entregabilidade
- Domínio próprio + dados na infra Ligbox (soberania BR/EU)
- Gerente de domínio controla tudo — sem licença Microsoft por utilizador ocioso
1.4 Fórmula de preço — bundle custom
preço_mensal =
base_fee # R$ 99 (infra + EasyDMARC pool)
+ (seats × mail_gb × R$ 0,35) # mail hot tier
+ (seats × files_gb × R$ 0,08) # nextcloud warm tier
+ addon_subdomain # R$ 0 (incluído) ou R$ 29 extra
Exemplo: 10 seats · 50 GB mail · 500 GB files:
99 + (10 × 50 × 0,35) + (10 × 500 × 0,08)
= 99 + 175 + 400 = R$ 674/mês
Desconto anual: −15% (alinhado Google/Zoho).
2. O que cada bundle inclui (feature matrix)
2.1 Email (Carbonio VM112)
| Feature | Starter | Business | Enterprise | Custom |
|---|---|---|---|---|
| Webmail HTTPS | ✅ | ✅ | ✅ | ✅ |
| IMAP / SMTP / ActiveSync | ✅ | ✅ | ✅ | ✅ |
| Calendário / Contactos | ✅ | ✅ | ✅ | ✅ |
| Alias / lista / forward | ✅ | ✅ | ✅ | ✅ |
| Quota por caixa | 20 GB | 30 GB | 50 GB | 20–50 |
| Anti-spam / anti-virus | ✅ | ✅ | ✅ | ✅ |
| Domain Admin (gerente) | ✅ | ✅ | ✅ | ✅ |
2.2 Nextcloud (VM116)
| Feature | Todos os bundles |
|---|---|
URL files.{dominio} |
✅ sempre (Files obrigatório no bundle) |
| Sync desktop / mobile | ✅ |
| Partilha links + password | ✅ |
| Quota por utilizador | Configurável 100–500 GB |
| App Mail (IMAP → Carbonio) | ⚙️ Opcional por domínio — gerente activa/desactiva no /admin |
| OnlyOffice / Collabora | Fase 2 |
| Versionamento ficheiros | ✅ |
2.2.1 Nextcloud Mail — opcional por domínio (decisão Roger 2026-06-21)
Default: desactivado em domínios novos. Webmail Carbonio (mail.{dominio}) é sempre a interface email principal.
| Estado | O que o utilizador vê |
|---|---|
| Mail OFF (default) | mail.{dom} webmail Carbonio + files.{dom} Nextcloud Files — apps separadas |
| Mail ON | Mail app pré-configurado no Nextcloud (IMAP→Carbonio) + Files na mesma UI |
Quem controla: Gerente de Domínio em onboard.ligbox.com.br/admin → secção Nextcloud / Files → toggle «Activar Mail no Nextcloud».
Comportamento técnico:
| Acção gerente | Backend |
|---|---|
| Activar Mail domínio | PATCH bundle_entitlements + flag NC tenant |
| Desactivar Mail domínio | Remove contas Mail app (mantém Files + Carbonio) |
| Criar conta email (Mail ON) | OCS user + pré-config IMAP SMTP (Spec 034 NC-3) |
| Criar conta email (Mail OFF) | OCS user Files only — sem Mail app |
Carbonio permanece autoridade — MX, SMTP, quotas mail, OOO, assinatura. Nextcloud Mail é cliente IMAP opcional, nunca substituto do servidor.
Motivo: equipas só-email usam webmail/Outlook; equipas Files+email escolhem Mail unificado — sem impor carga IMAP extra na VM112 a todos.
2.3 EasyDMARC (certificação email Ligbox)
Ligbox opera os servidores de email — EasyDMARC é incluído no bundle como garantia de entregabilidade:
| Capacidade | Incluído no bundle |
|---|---|
| Monitorização DMARC | ✅ Relatórios agregados |
| SPF lookup / validação | ✅ |
| DKIM alinhamento | ✅ Wizard + agente A3 Desk |
| DMARC policy roadmap | ✅ p=none → quarantine → reject |
| EasySPF (flatten) | Business+ |
| Alertas falha autenticação | ✅ email gerente + Desk |
| Badge «Ligbox Certified Mail» | Fase 2 — selo no webmail |
Modelo operacional: conta EasyDMARC MSP Ligbox (pool) — 1 domínio tenant = 1 slot no pool. Custo interno ~USD 4–8/domínio/mês repartido no bundle.
2.4 Subdomínio
- Incluído: 1 subdomínio DNS gerido (ex.:
intranet.empresa.com.br→ site ou redirect) - Se bundle incluir Ligbox Site CMS (Spec 024): subdomínio aponta OpenPanel hosting
- Email bundle sem site: subdomínio pode ser CNAME para landing ou Nextcloud
3. Quem acede a quê (RBAC cliente)
┌─────────────────────────────────────┐
│ DOMÍNIO cliente.com.br │
└─────────────────────────────────────┘
│
┌───────────────────────────┼───────────────────────────┐
▼ ▼ ▼
GERENTE DE DOMÍNIO UTILIZADOR EMAIL VISITANTE
admin@cliente.com.br joao@cliente.com.br (público)
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Painel Admin │ │ Webmail │
│ (§6) │ │ mail.dom │
│ │ │ Nextcloud │
│ • contas │ │ files.dom │
│ • quotas │ │ (sem admin) │
│ • nextcloud │ └──────────────┘
│ • DNS/DMARC │ ← Spec 037-DNS-VIEWER (read-only + links)
│ • faturação │
└──────────────┘
| Actor | Login | Painel admin? | Benefícios |
|---|---|---|---|
| Gerente de Domínio | FOSS cliente → «Gerir domínio» OU onboard.ligbox.com.br/admin |
Sim | Cria contas, quotas, Nextcloud, vê DMARC |
| Utilizador email | mail.{dom} webmail · app Nextcloud |
Não | Email + ficheiros pessoais |
| Staff Ligbox | Desk VM122 | Sim (RBAC Spec 027) | Suporte, override, billing |
Regra Roger: painel administrativo ≠ webmail. Apenas 1+ gerentes por domínio (configurável, default 1).
4. Arquitectura FOSS + OpenPanel + Mail
flowchart TB
subgraph Cliente
GM[Gerente Domínio]
U[Users email]
end
subgraph VM123["VM123 — Finance"]
FOSS[FOSSBilling<br/>catálogo + pedidos]
GW[Gateway pagamento<br/>Boleto + PIX QR]
OP[OpenPanel<br/>provision backend]
BR[Bridge :18087]
end
subgraph VM122["VM122 — Desk"]
DS[API orquestração<br/>FOSS ↔ Wizard ↔ NC]
end
subgraph VM112["VM112 — Mail"]
WZ[Wizard API]
DA[Domain Admin SPA<br/>onboard.ligbox.com.br/admin]
CB[Carbonio]
end
subgraph VM116["VM116 — Files"]
NC[Nextcloud Hub]
OCS[OCS Provisioning API]
end
subgraph External
EDM[EasyDMARC API]
CF[Cloudflare DNS]
end
GM -->|compra bundle| FOSS
FOSS -->|boleto / PIX QR| GW
GW -->|pagamento confirmado| FOSS
FOSS -->|order paid| BR
BR -->|provision hub| OP
FOSS -->|webhook| DS
DS -->|mail-bundle| WZ
WZ -->|domínio + contas| CB
WZ -->|provision OCS| OCS
OCS --> NC
WZ -->|registar domínio| EDM
GM -->|login único| DA
DA -->|CRUD contas + quotas NC| WZ
DA -->|resumo plano / faturas| DS
DS -->|proxy FOSS| FOSS
U --> CB
U --> NC
WZ --> CF
4.1 Papel de cada sistema (ecossistema completo — Roger 2026-06-21)
Face visível ao gerente: uma só página — https://onboard.ligbox.com.br/admin
Por trás (invisível ao cliente):
| Sistema | VM | Papel |
|---|---|---|
| FOSSBilling | 123 | Venda, planos, faturas, área «Meus serviços», pedidos |
| Gateway pagamento | 123 | Boleto bancário + PIX QR Code — geração, confirmação, baixa automática no FOSS |
| OpenPanel | 123 | Provisionamento backend (hub) — sem UI separada para mail |
| Desk API | 122 | Orquestração FOSS ↔ Wizard ↔ Nextcloud; webhooks; proxy billing |
| Wizard VM112 | 112 | Motor do /admin — Carbonio CRUD, limites bundle, DNS |
| Nextcloud Hub | 116 | Files por conta — gerido pelo gerente no /admin (quotas, activar/desactivar) |
| EasyDMARC | ext. | Certificação SPF/DKIM/DMARC |
| Carbonio | 112 | Motor email (webmail, IMAP) — users finais |
4.2 Gateway pagamento — Boleto + PIX QR (obrigatório Spec 035)
Roger: não esquecer — cliente Ligbox precisa pagar com meios BR standard.
| Capacidade | Onde | UX cliente |
|---|---|---|
| Boleto bancário | Gateway → módulo FOSS | PDF / linha digitável na área FOSS + email |
| PIX QR Code | Gateway → módulo FOSS | QR na fatura + copia-e-cola |
| Cartão (opcional fase 2) | Gateway | Checkout FOSS |
| Confirmação pagamento | Webhook gateway → FOSS → Desk → Wizard | Activa bundle + limites |
Gateway candidatos: ASAAS · Iugu · Mercado Pago (decisão §14)
Fluxo:
Cliente escolhe plano FOSS
→ FOSS gera fatura
→ Gateway emite boleto + PIX QR
→ Cliente paga
→ Webhook confirma
→ FOSS order = active
→ Desk provisiona mail + Nextcloud
→ Gerente entra /admin
No /admin (gerente): resumo «Plano activo / aguardando pagamento» + link «Ver boleto / PIX» (embed FOSS ou API Desk — não redireccionar para setup noutro portal).
4.3 Nextcloud — visão admin no /admin (obrigatório Spec 035)
Roger: gestão de contas Files no mesmo painel — gerente não abre consola Nextcloud separada.
| Acção gerente | UI /admin |
Backend |
|---|---|---|
| Criar conta email | modal contas | Carbonio + auto-provision NC |
| Quota Files por user | slider / dropdown | Nextcloud OCS API VM116 |
| Activar/desactivar Files | toggle | OCS disable user |
| Ver uso disco domínio | card resumo | OCS quota report |
| Atalho Files user | botão «Abrir Files» | SSO token → files.{dominio} |
Regra: cada @dominio com mail activo → conta Nextcloud espelhada (Spec 034 OCS).
Utilizador final: só app/web files.{dominio} — sem admin NC.
4.4 Papel resumido (versão curta)
| Sistema | Papel no bundle email |
|---|---|
| FOSSBilling | Venda, upgrade/downgrade, fatura, área «Meus serviços» |
| Gateway | Boleto + PIX QR — cobrança Brasil |
| OpenPanel | Backend provision — invisível ao gerente |
Wizard + /admin |
Cockpit único — mail + Nextcloud + resumo plano |
| Desk | APIs orquestração (FOSS ↔ Wizard ↔ NC) |
| Nextcloud VM116 | Storage Files — admin via /admin, uso via files.{dom} |
Importante: OpenPanel não substitui Carbonio nem Nextcloud admin. FOSS não substitui /admin para gestão de contas.
5. Configuração FOSSBilling
5.1 Produtos a criar (Admin → Products)
Produto 1–3: bundles fixos
| Campo FOSS | Starter | Business | Enterprise |
|---|---|---|---|
title |
Ligbox Mail Starter | Ligbox Mail Business | Ligbox Mail Enterprise |
slug |
ligbox-mail-starter | ligbox-mail-business | ligbox-mail-enterprise |
type |
hosting | hosting | hosting |
pricing |
monthly R$ 249 | monthly R$ 549 | monthly R$ 999 |
setup |
R$ 0 | R$ 0 | R$ 0 |
plugin |
OpenPanel | OpenPanel | OpenPanel |
plugin_config.plan |
ligbox-mail-starter | ligbox-mail-business | ligbox-mail-enterprise |
Custom fields no pedido (obrigatórios):
| Campo | Tipo | Exemplo |
|---|---|---|
domain |
text | empresa.com.br |
manager_email |
admin@empresa.com.br |
|
manager_name |
text | João Silva |
Produto 4: bundle custom (configurável)
| Campo | Valor |
|---|---|
slug |
ligbox-mail-custom |
type |
hosting + config options |
Config options FOSS:
| Option ID | Nome | Tipo | Valores | Preço unitário |
|---|---|---|---|---|
seats |
Nº contas email | dropdown | 10,25,30,40,50 | ver §1.4 |
mail_gb |
GB mail/conta | dropdown | 20,30,40,50 | R$ 0,35/GB/seat |
files_gb |
GB Nextcloud/conta | dropdown | 100,200,300,400,500 | R$ 0,08/GB/seat |
5.2 Webhook pós-pagamento
POST https://desk.ligbox.com.br/api/v1/billing/webhook/foss/order-activated
{
"order_id": 123,
"product_slug": "ligbox-mail-business",
"client_email": "admin@empresa.com.br",
"domain": "empresa.com.br",
"config": {
"seats": 25,
"mail_gb": 30,
"files_gb": 200
}
}
Desk → Wizard POST /api/internal/provision/mail-bundle
6. Configuração OpenPanel
6.1 Planos OpenPanel (OpenAdmin → Plans)
Criar planos espelhando FOSS (bridge plan_name):
| plan_name | Domínios | Contas OP | Notas |
|---|---|---|---|
ligbox-mail-starter |
1 | 1 | Hub gerente only |
ligbox-mail-business |
1 | 1 | idem |
ligbox-mail-enterprise |
1 | 1 | idem |
ligbox-mail-custom |
1 | 1 | quotas via metadata JSON |
ligbox-site-cms |
1 | 1 | já existe — add-on site |
Limites OpenPanel CE: 1 user OpenPanel = gerente. Não criar 1 user OP por caixa email.
6.2 Metadata do plano (JSON em custom field bridge)
{
"bundle_type": "ligbox_mail",
"max_seats": 25,
"mail_gb_per_seat": 30,
"files_gb_per_seat": 200,
"easydmarc": true,
"wizard_domain": "empresa.com.br"
}
6.3 Página custom «Ligbox Mail» no OpenPanel (Fase 1)
Objectivo: gerente loga em https://openpanel.ligbox.com.br e vê:
┌─────────────────────────────────────────────────────────┐
│ Ligbox Mail Console — empresa.com.br │
├─────────────────────────────────────────────────────────┤
│ Plano: Business · 12/25 contas · DMARC: ✅ │
│ │
│ [ Gerir contas email ] → autologin Domain Admin │
│ [ Abrir webmail ] → mail.empresa.com.br │
│ [ Abrir Files ] → files.empresa.com.br │
│ [ Certificação DMARC ] → modal EasyDMARC status │
│ [ Faturação ] → financeiro.ligbox.com.br │
└─────────────────────────────────────────────────────────┘
Implementação (escolher 1):
| Opção | Esforço | Recomendação |
|---|---|---|
| A — Deep-link Desk | Baixo | OpenPanel mostra links estáticos + token SSO |
| B — iframe Domain Admin | Médio | SPA wizard embutida no OP |
| C — Módulo OP custom | Alto | Plugin PHP/JS nativo OpenPanel |
Recomendação Spec 035: Opção A (MVP) → Opção B (Fase 2).
7. Login do Gerente de Domínio — fluxo completo
7.1 Primeiro acesso (pós-compra)
1. Cliente paga bundle no FOSSBilling (financeiro.ligbox.com.br)
2. FOSS → Bridge OpenPanel: cria user `empresa-hub` + plan ligbox-mail-*
3. FOSS → email boas-vindas com:
• Link FOSS cliente: financeiro.ligbox.com.br/login
• Link OpenPanel hub: openpanel.ligbox.com.br
• Credenciais temporárias (forçar troca)
4. Webhook → Wizard:
• Cria domínio Carbonio
• Cria admin@empresa.com.br (gerente)
• Regista EasyDMARC
• Provisiona Nextcloud tenant
• Grava bundle limits em DB wizard
5. Gerente acede OpenPanel OU onboard.ligbox.com.br/admin
6. Primeiro login → wizard onboarding DNS (MX, SPF, DMARC)
7.2 Login recorrente (3 caminhos equivalentes)
| Caminho | URL | Mecanismo |
|---|---|---|
| FOSS → Gerir | financeiro.ligbox.com.br/client/service/{id} |
Botão «Gerir Mail» → SSO token → OpenPanel ou Domain Admin |
| OpenPanel hub | openpanel.ligbox.com.br |
Login OP → página Ligbox Mail Console |
| Directo Domain Admin | onboard.ligbox.com.br/admin |
Login admin@{dom} + senha Carbonio/wizard |
7.3 SSO token (Desk emite)
POST /api/v1/domain-admin/sso-token
Authorization: Bearer <session gerente>
Body: { "domain": "empresa.com.br" }
Response:
{
"redirect_url": "https://onboard.ligbox.com.br/admin?sso=eyJ...",
"expires_in": 300
}
Validação: token assinado HMAC, single-use, domínio no claim = domínio do gerente.
7.4 O que o gerente faz no painel (Domain Admin SPA)
| Acção | Onde executa | Propaga para |
|---|---|---|
Criar conta vendas@ |
Domain Admin | Carbonio + Nextcloud (auto) |
| Alterar quota mail 30→40 GB | Domain Admin | Carbonio zmprov |
| Alterar quota Files 200→500 GB | Domain Admin | Nextcloud OCS API |
| Suspender conta | Domain Admin | Carbonio + NC disable |
| Ver status DMARC | Domain Admin modal | EasyDMARC API |
| Adicionar alias | Domain Admin | Carbonio |
| Reset senha user | Domain Admin | Carbonio (+ sync NC fase 2) |
Limite: gerente não pode exceder max_seats / quotas do bundle FOSS — wizard valida contra bundle_entitlements table.
7.5 Upgrade de plano
Gerente → FOSS «Upgrade para Enterprise»
→ FOSS recalcula preço
→ Pagamento confirmado
→ Webhook atualiza bundle_entitlements
→ Domain Admin reflecte novos limites (25→50 contas)
8. Provisionamento técnico (ordem)
| Step | Actor | Acção |
|---|---|---|
| 1 | FOSS | Order active |
| 2 | Bridge | POST /api/users plan=ligbox-mail-* domain=X |
| 3 | Desk webhook | Recebe order, valida slug |
| 4 | Wizard | POST /api/internal/provision/mail-bundle |
| 5 | Wizard | Carbonio: createDomain, createAccount admin@ |
| 6 | Wizard | Nextcloud: OCS create tenant + admin |
| 7 | Wizard | EasyDMARC: register domain (API) |
| 8 | Wizard | Cloudflare: MX, SPF, DMARC records |
| 9 | Traefik CT114 | SNI mail.{dom} + files.{dom} |
| 10 | Desk | billing_accounts.plan_code = slug · state = active |
| 11 | FOSS | Email «Domínio pronto» + links login |
9. Entitlements (tabela wizard — nova)
CREATE TABLE bundle_entitlements (
id INTEGER PRIMARY KEY,
domain TEXT NOT NULL UNIQUE,
foss_order_id INTEGER,
product_slug TEXT NOT NULL,
max_seats INTEGER NOT NULL,
mail_gb_per_seat INTEGER NOT NULL,
files_gb_per_seat INTEGER NOT NULL,
seats_used INTEGER DEFAULT 1,
easydmarc_enabled BOOLEAN DEFAULT 1,
nextcloud_mail_enabled BOOLEAN DEFAULT 0,
subdomain TEXT,
dns_mode TEXT, -- ligbox_cf_* | byo_cf | external | openpanel_bind (Spec 037)
dns_provider TEXT, -- cf_ligbox | cf_byo | openpanel_bind | registrar
cf_zone_id TEXT,
expires_at TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Wizard rejeita createAccount se seats_used >= max_seats.
9.1 DNS Viewer — visibilidade DNS (Spec 037-DNS-VIEWER)
Roger (2026-06-25): gerente e staff precisam ver todos os apontamentos sem aceder a Cloudflare/OpenPanel directamente.
| Actor | Onde vê | Pode editar? |
|---|---|---|
| Gerente domínio | Console /admin → secção Domínio & DNS |
❌ na Console — link externo se BYO |
| Staff Ligbox | Desk Overview + Serviços IaaS | ❌ — deep-link CF/OP (027) |
| Cliente wizard | Passo DNS onboarding | ❌ — instructions only |
Regra de exibição (037):
dns_mode no entitlements |
UI mostra |
|---|---|
ligbox_cf_* |
Registos aplicados/planeados Ligbox + NS Cloudflare |
byo_cf / external / registrar |
DNS actual (público) + instruções |
Documento técnico: 037 dns-viewer.md
UI gerente: domain-manager-console-ui.md §5.5
Deploy (2026-06-25): Console /admin/dominio ✅ VM123 · API proxy GET /api/v1/domain-console/dns/viewer/{domain} ✅ VM122 · Wizard V4 📋 patches prontos.
10. Add-ons FOSS (venda separada)
| Slug | Nome | Preço sugerido |
|---|---|---|
ligbox-mail-seat-extra |
+1 conta email | R$ 19/mês |
ligbox-mail-storage-mail |
+10 GB mail (domínio) | R$ 29/mês |
ligbox-mail-storage-files |
+50 GB Nextcloud (domínio) | R$ 39/mês |
ligbox-site-cms |
Site CMS OpenPanel | já existe (grátis hoje) |
ligbox-mail-easydmarc-pro |
DMARC enforcement + relatórios 1 ano | R$ 49/mês |
11. Fases de implementação
| Fase | Entregável | Spec deps |
|---|---|---|
| 0 | Produtos FOSS + planos OP + preços publicados | 024, 028 |
| 1 | Webhook provision mail-bundle + entitlements | 034 Fase 0 |
| 2 | Domain Admin: quotas NC + seat limits + DNS Viewer /admin |
034 Fase 1 · 037 dns-viewer |
| 3 | OpenPanel Ligbox Mail Console (links SSO) | 028, 035 |
| 4 | EasyDMARC API integrada + badge | Agent A3 |
| 5 | Configurador custom FOSS + upgrade flow | 023 |
12. Critérios de aceite
- Cliente compra Ligbox Mail Business no FOSS → em ≤15 min domínio activo com admin@ funcional.
- Gerente loga OpenPanel hub → vê resumo bundle + link «Gerir contas» funcional.
- Gerente cria 3 contas email → Nextcloud provisionado automaticamente para cada.
- Utilizador
vendas@acede webmail + files — sem acesso admin. - Tentativa criar conta #26 em plano 25 → erro claro «Upgrade plano».
- EasyDMARC mostra SPF+DKIM+DMARC ✅ no painel gerente.
- Upgrade FOSS Starter→Business → limites actualizados sem re-provision completo.
- Gerente abre Domínio & DNS → vê tabela read-only completa (037-DNS-VIEWER); domínio Ligbox mostra applied/planned; externo mostra estado público actual.
13. Documentos relacionados
| Doc | Path |
|---|---|
| Nextcloud integração | specs/034-nextcloud-carbonio-vm112-integration/spec.md |
| FOSS + OpenPanel | specs/024-openpanel-fossbilling/spec.md |
| Bridge API | specs/028-openpanel-ce-ligbox-reengineering/contracts/foss-bridge-api.md |
| Domain Admin | specs/010-admin-domain-validation/spec.md |
| Nextcloud OCS API | specs/034-.../contracts/nextcloud-provisioning-api.md |
| Tasks 035 | specs/035-ligbox-mail-bundles-foss-openpanel/tasks.md |
| FOSS product JSON | specs/035-ligbox-mail-bundles-foss-openpanel/foss-products.md |
| UI Shell unificada | ligbox-console-shell.md |
| UI Gerente domínio | domain-manager-console-ui.md |
| UI Admin Ligbox (sistema) | ligbox-system-admin-ui.md |
| UI Utilizador email (Fase B) | user-self-service-ui.md |
| DNS Viewer read-only | 037 dns-viewer.md |
14. Decisões
14.1 Fixadas (Roger 2026-06-21)
| # | Decisão | Valor |
|---|---|---|
| U1 | Shell visual partilhada | Design system React único |
| U2 | URL marca | console.ligbox.com.br — login detecta role |
| U3 | Ops Wazuh | Mesmo shell — /ops (Spec 019) |
| U4 | Tom visual | Caloroso BR — banco digital |
| U5 | Prioridade UI | Gerente /admin primeiro |
| U6 | Nextcloud Mail | Opcional por domínio — toggle /admin |
| U7 | Padrões UX Spec 030 | Status bar, 3 colunas, cards, context panel |
| U8 | DNS domínio | Read-only — Spec 037-DNS-VIEWER; Ligbox=planned/applied, externo=actual |
14.2 Pendentes (Roger)
| # | Pergunta | Opções |
|---|---|---|
| 1 | Preços finais Starter/Business/Enterprise | Aprovar na Admin Ligbox (035-C) — não no FOSS |
| 2 | OpenPanel hub vs só Domain Admin | Backend only ✅ — UI só Console |
| 3 | Senha única Carbonio+Nextcloud Fase 1? | Sim (sync wizard) vs convite separado |
| 4 | EasyDMARC pool MSP | Confirmar plano EasyDMARC actual Ligbox |
| 5 | Gateway pagamento | ASAAS vs Iugu — boleto + PIX QR obrigatório Fase 4 |