# 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 (RustDesk — não Nextcloud) │ ├── :2524 → VM124:22 (nextcloud) ← reservar │ └── :443 → CT114 Traefik │ └── CT114 (10.10.10.114) ├── mail.{dominio} → VM112:443 ├── onboard.ligbox.com.br → VM112:8090 ├── files.{dominio} → VM124:8080 ← novo router └── cloud.ligbox.com.br → VM124:8080 ← hub Ligbox ``` --- ## VM124 — Nextcloud Hub (nova) | Parâmetro | Valor | |-----------|-------| | **VMID** | 124 | | **Nome** | `vm124-nextcloud-ligbox` | | **IP LAN** | `10.10.10.124/24` | | **Gateway** | `10.10.10.1` (pfSense) | | **SSH WAN** | `95.216.14.146:2524` | | **vCPU** | **2** | | **RAM** | **4096 MB** | | **Disco** | **500 GB** (`local-lvm` se houver espaço) | | **SO** | Ubuntu 24.04 LTS | > **VM116** (`10.10.10.116`) = RustDesk LXC — **não** usar para Nextcloud. ### 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 VM124 → VM112 | Origem | Destino | Porta | Uso | |--------|---------|-------|-----| | VM124 (Mail app users) | VM112 | 993 | IMAP SSL | | VM124 (Mail app users) | VM112 | 587/465 | SMTP submission | | VM124 (provision script) | VM112 | 8090 | Opcional — estado domínio | | VM112 (wizard worker) | VM124 | 443/8080 | OCS Provisioning API | **Firewall pfSense:** permitir LAN `10.10.10.124 → 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.lst` → **renomear** para `sni_tenant_apps.lst` (mail + files) 2. Router Traefik `files-*-Router` → backend `http://10.10.10.124:8080` 3. Certbot SAN multi-dom ou cert por domínio (mesmo fluxo mail) ### Router hub ```yaml # cloud.ligbox.com.br → VM124 http: routers: nextcloud-hub: rule: Host(`cloud.ligbox.com.br`) service: nextcloud-vm124 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 VM124 :9000 bucket: carbonio-archive-{tenant} ``` Credenciais S3 em `/opt/zextras/conf/` (VM112) — **nunca** no repo Git. --- ## Backup & DR | Componente | Método | Frequência | |------------|--------|------------| | VM124 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 VM124 + re-ligar Traefik). --- ## Monitorização | Métrica | Alerta | |---------|--------| | Disco VM124 > 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 | |-------|------|---------| | **VM124 dedicada** (Roger 2026-06-21) | Disco isolado · 2 vCPU 4 GB | Nova VM após VM123 | | Nextcloud na VM112 | Menos VMs | Piora problema de disco | | Nextcloud na VM123 | Já tem stack Docker | Mistura finance/hosting com mail | **Decisão Spec 034:** VM124 dedicada (`10.10.10.124`).