129 lines
4.3 KiB
Markdown
129 lines
4.3 KiB
Markdown
# 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)*
|