ligbox-ops-platform/specs/034-nextcloud-carbonio-vm112-integration/infrastructure.md
Ligbox Spec Hub f6cf9f8e1c Add Spec 034 Nextcloud integration with VM112 Carbonio mail.
Defines hybrid hot/warm storage to expand tenant mail capacity via Nextcloud Hub on proposed VM116.
2026-06-20 22:07:00 +00:00

4.5 KiB

Spec 034 — Infraestrutura Nextcloud + VM112

Actualizado: 2026-06-20


Topologia proposta

Internet (95.216.14.146)
    │
    ├── pfSense NAT
    │       ├── :2512 → VM112:22  (mail/wizard)
    │       ├── :2516 → VM116:22  (nextcloud) ← reservar
    │       └── :443  → CT114 Traefik
    │
    └── CT114 (10.10.10.114)
            ├── mail.{dominio}     → VM112:443
            ├── onboard.ligbox.com.br → VM112:8090
            ├── files.{dominio}    → VM116:443  ← novo router
            └── cloud.ligbox.com.br → VM116:443 ← hub Ligbox

VM116 — Nextcloud Hub (nova)

Parâmetro Valor proposto
VMID 116
Nome vm116-nextcloud-ligbox
IP LAN 10.10.10.116/24
Gateway 10.10.10.1 (pfSense)
SSH WAN 95.216.14.146:2516
vCPU 4
RAM 8192 MB
Disco 500 GB (local-lvm ou volume dedicado)
SO Ubuntu 24.04 LTS

Serviços

Serviço Porta Notas
Nextcloud (Apache/nginx) 443 Behind Traefik ou direct SNI
PostgreSQL 5432 localhost only
Redis 6379 localhost — locking/sessions
MinIO (fase 2) 9000 S3 API — localhost + VM112 ACL

Instalação recomendada

Opção A — Docker Compose (preferida para IaC no repo):

deploy/vm116-nextcloud/
├── docker-compose.yml
├── .env.example
├── traefik/dynamic-files.yml.snippet
└── scripts/
    ├── install.sh
    ├── occ-provision-user.sh
    └── backup-occ.sh

Opção B — Nextcloud snap — mais rápido para piloto manual.


VM112 — ligação existente (sem alterar mail)

Parâmetro Valor actual
IP 10.10.10.112
Carbonio LMTP :7025 (Desk transport)
Carbonio IMAP :993
Carbonio SMTP :25 / submission
Wizard API :8090

Conectividade VM116 → VM112

Origem Destino Porta Uso
VM116 (Mail app users) VM112 993 IMAP SSL
VM116 (Mail app users) VM112 587/465 SMTP submission
VM116 (provision script) VM112 8090 Opcional — estado domínio
VM112 (wizard worker) VM116 443 OCS Provisioning API

Firewall pfSense: permitir LAN 10.10.10.116 → 10.10.10.112:993,587,8090.


CT114 — Traefik / SNI

Novo router files.{domain}

Seguir padrão Spec 017 (mail.{domain}):

  1. Adicionar files.{dom} em sni_vm112.lstrenomear para sni_tenant_apps.lst (mail + files)
  2. Router Traefik files-*-Router → backend http://10.10.10.116:443
  3. Certbot SAN multi-dom ou cert por domínio (mesmo fluxo mail)

Router hub

# cloud.ligbox.com.br → VM116
http:
  routers:
    nextcloud-hub:
      rule: Host(`cloud.ligbox.com.br`)
      service: nextcloud-vm116
      tls:
        certResolver: letsencrypt

DNS Cloudflare (por tenant)

Registo Tipo Valor
files.{dominio} A IP público (via Traefik)
_carddav._tcp.{dominio} SRV opcional — CalDAV/CardDAV NC

Nota: MX continua mail.{dominio} → Carbonio. Nextcloud não recebe mail directo.


Storage — fase 2 (Carbonio S3 offload)

VM112 Carbonio
    └── volume secondary (Custom S3)
            └── MinIO VM116 :9000
                    bucket: carbonio-archive-{tenant}

Credenciais S3 em /opt/zextras/conf/ (VM112) — nunca no repo Git.


Backup & DR

Componente Método Frequência
VM116 snapshot Proxmox diário
Nextcloud data occ files:scan + rsync/borg diário
PostgreSQL NC pg_dump diário
MinIO (fase 2) replica ou snapshot volume diário

RPO alvo: 24 h · RTO alvo: 4 h (restaurar VM116 + re-ligar Traefik).


Monitorização

Métrica Alerta
Disco VM116 > 80% ops_lead email
Disco VM112 > 85% crítico — revisar quotas hot
Nextcloud status.php != 200 Infra stack health Desk
IMAP latency VM112 > 2s investigar carga Mail app

Decisão pendente (Roger)

Opção Prós Contras
VM116 dedicada (proposto) Disco isolado, escala independente Nova VM para gerir
Nextcloud na VM112 Menos VMs Piora problema de disco
Nextcloud na VM123 Já tem stack Docker Mistura finance/hosting com mail

Recomendação Spec 034: VM116 dedicada.