# Infraestrutura — VM e Recursos (013) **Status:** 📋 **Decisão futura — NÃO implementar hoje** **Registado:** 2026-06-10 (Roger) **Rever quando:** iniciar Fase B/C da migração em produção ou primeiro PST > 10 GB --- ## Resumo | Pergunta | Resposta | |----------|----------| | **Outra VM obrigatória hoje?** | **Não** — MVP pode usar worker na VM122 existente | | **Outra VM recomendada em produção?** | **Sim** — VM dedicada de migração (ex. VM123) | | **Pode correr na VM112 Carbonio?** | **Nunca** — servidor de mail de produção | --- ## O que fica onde | VM / host | Função | Estado hoje | |-----------|--------|-------------| | **VM122** `ligbox-ops` (8 GB) | API, Desk, SQLite, fila, gate DNS | ✅ Existe | | **VM112** Carbonio | Destino IMAP / zmmailbox | ✅ Existe | | **VM123** `ligbox-migration` (proposto) | imapsync, readpst, imap-upload | 📋 **Futuro** | Orquestração permanece na **VM122**. Execução pesada das ferramentas pode ser na VM122 (piloto) ou VM123 (produção). --- ## Opção A — Worker na VM122 (piloto / MVP) **Quando usar:** 1–3 mailboxes, PST < 10 GB, testes internos. | Recurso | Valor | Notas | |---------|-------|-------| | RAM | 8 GB (actual) | Máx. **1–2 jobs em paralelo** | | vCPU | 2–4 | imapsync é mais rede que CPU | | Disco extra | **+100 GB** volume | PST + mbox temp + logs | | Rede | LAN → VM112 + Internet → origem IMAP | Obrigatório | **Risco:** carga de migração compete com API, Desk e Redis na mesma VM. **Decisão futura:** adicionar volume Docker `/data/migrations` na VM122 só quando implementar Fase C (PST). --- ## Opção B — VM dedicada migração (produção — recomendado) **Quando usar:** várias migrações em paralelo, PST grandes, clientes reais. | Recurso | Standard | Carga alta | |---------|----------|------------| | **Nome** | `ligbox-migration` / **VM123** | — | | **RAM** | **8 GB** | **16 GB** | | **vCPU** | **4** | **8** | | **Disco** | **200 GB** SSD | **500 GB** SSD | | **OS** | Debian 12 | igual VM122 | | **IP LAN** | `10.10.10.x` (a definir) | — | | **SSH WAN** | Porta range 2501–2510 | como outras VMs | | **IP público** | Não necessário | só LAN + NAT | **Não precisa:** MX, DNS próprio, Traefik, Carbonio. --- ## Consumo estimado por tipo de job | Tipo | RAM (por job) | Disco temporário | Rede | |------|---------------|------------------|------| | imapsync (IMAP) | 200–500 MB | Logs 10–50 MB | Alta (GB/dia) | | PST 10 GB | 1–2 GB | **20–30 GB** (mbox) | Média | | PST 50 GB | 2–4 GB | **100–150 GB** (mbox) | Alta, horas/dias | | TGZ Zimbra | Baixa | Tamanho do .tgz | SSH → VM112 | **Regra PST:** reservar **2×–3×** o tamanho do ficheiro `.pst` em disco livre. --- ## Rede obrigatória (worker) 1. **Saída Internet** → servidor origem (cPanel, O365, Gmail, etc.) 2. **LAN `10.10.10.0/24`** → Carbonio VM112 (`mail.dominio:993`) 3. **SSH VM112** (opcional) → import TGZ via `zmmailbox` 4. **Callback HTTP** → API VM122 (`10.10.10.122`) — progresso e gate --- ## Software na VM worker ```bash # scripts/install-migration-tools.sh apt install imapsync pst-utils python3 git git clone https://github.com/rgladwell/imap-upload.git /opt/migration-tools/imap-upload ``` --- ## Roadmap infra (futuro) | Fase | Infra | Quando | |------|-------|--------| | **Piloto** | Worker na VM122 + volume 100 GB | 1ª implementação código (Fase A–B) | | **Produção** | Provisionar **VM123** 4 vCPU / 8 GB / 200 GB | Primeira migração cliente real com PST | | **Escala** | VM123 8 vCPU / 16 GB / 500 GB | Múltiplos jobs paralelos | --- ## Proxmox — checklist futuro (VM123) - [ ] Clone template Debian 12 ou criar VM nova - [ ] RAM 8 GB, 4 vCPU, disco 200 GB em SSD - [ ] Bridge `vmbr1` / LAN `10.10.10.x` - [ ] Regra DNAT SSH WAN (porta livre no range 2501–2510) - [ ] Regra FORWARD no Proxmox (dentro `iface vmbr0`) - [ ] **Não** alterar MX/DNS — worker não é servidor de mail - [ ] Instalar `install-migration-tools.sh` - [ ] Testar: `imapsync --justlogin` origem + destino VM112 --- ## Decisão Roger (2026-06-10) > Guardar sizing de VM e recursos na spec para **ver no futuro, não hoje**. > Implementação de código (API/worker) pode começar na VM122; VM dedicada fica para quando houver carga real. --- *Relacionado: [plan.md](./plan.md) · [spec.md](./spec.md) · [tasks.md](./tasks.md)*