obsidian-vault/ligbox-ops-platform/specs/013-email-server-migration/infrastructure.md
2026-06-19 17:26:42 +00:00

129 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:** 13 mailboxes, PST < 10 GB, testes internos.
| Recurso | Valor | Notas |
|---------|-------|-------|
| RAM | 8 GB (actual) | Máx. **12 jobs em paralelo** |
| vCPU | 24 | 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 25012510 | 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) | 200500 MB | Logs 1050 MB | Alta (GB/dia) |
| PST 10 GB | 12 GB | **2030 GB** (mbox) | Média |
| PST 50 GB | 24 GB | **100150 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 AB) |
| **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 25012510)
- [ ] 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)*