6.1 KiB
Server — Mailcow VM
Terakhir Diperbarui: 2026-07-03 (Dockge agent)
VM Mailcow
| Item | Nilai |
|---|---|
| IP LAN | 10.100.1.28 |
| Hostname | mailserver |
| FQDN mail (Mailcow nanti) | sync.geonet.co.id |
| Role | Mail server (Mailcow dockerized) |
| Hypervisor | Proxmox Opr 10.100.1.102 (asumsi — sesuaikan jika beda) |
| Stack path | /opt/stacks/mailcow (Dockge) |
| Dockge agent | http://10.100.1.28:5001 — dikelola dari dockge.gisportal.id (.24) |
| Web UI | https://sync.geonet.co.id (nginx .24 → Mailcow .28) |
Desktop GNOME (opsional)
| Boleh dipakai? | ✅ Ya — dengan 32 GB RAM tidak masalah |
| Paket | ubuntu-desktop-minimal + GDM |
| Akses | Proxmox noVNC / console |
| Mailcow | Tetap di Docker — desktop tidak mengganggu |
Yang tetap tidak perlu (boleh hapus): CUPS, Avahi, Snap, LibreOffice.
Prep script: KEEP_DESKTOP=1 ./prepare-mailserver.sh agar desktop tidak di-purge.
| Item | Nilai |
|---|---|
| Hostname | mailserver |
| OS | Ubuntu 22.04.5 LTS |
| Desktop GNOME | ✅ ubuntu-desktop-minimal — akses Proxmox console |
| Snap | ❌ Dihapus (tidak wajib untuk desktop) |
| CUPS / Avahi services | ❌ Dihapus (tidak perlu mail server) |
| Docker | ✅ 29.x + Compose v5 |
| Dockge agent | ✅ /opt/dockge — port 5001 (LAN only) |
| UFW firewall | ✅ Aktif |
vm.max_map_count |
262144 |
| Swap | 4 GiB |
/data/mailcow/vmail |
/dev/sdb1 503 GiB |
Script prep: Mailcow/scripts/prepare-mailserver.sh
Spesifikasi hardware
| Resource | Nilai |
|---|---|
| vCPU | 16 core |
| RAM | 32 GiB |
| Swap | 4 GiB (disarankan) |
| Disk 1 | 512 GiB SSD — OS + Docker + MariaDB + Redis |
| Disk 2 | 512 GiB SSD — vmail (email live, local) |
| Storage live | Local SSD — prioritas uptime (bukan NAS) |
| Backup | QNAP 10.100.1.10 harian |
Kapasitas 512 GiB vmail cukup untuk 30+ user aktif bertahun-tahun (asumsi ~10–15 GB/user).
Host terkait
| Role | IP | Keterangan |
|---|---|---|
| Mailcow VM | 10.100.1.28 |
Server ini |
| Dockge primary | 10.100.1.24 |
dockge.gisportal.id — UI manajemen Docker |
| Zammad | 10.100.1.24 |
IMAP/SMTP ke .28 |
| AD / LDAP | 10.100.1.40 |
Identity Provider Mailcow |
| QNAP NAS | 10.100.1.10 |
Backup harian |
| cPanel POP3 | mail.geonet.co.id |
fetchmail drain |
| Proxmox Opr | 10.100.1.102 |
Host VM (jika applicable) |
SSH
Login (passwordless)
ssh mailcow
# atau
ssh root@10.100.1.28
Key: ~/.ssh/id_ed25519_mailcow · Host alias mailcow di ~/.ssh/config
Setup key (sekali — sudah selesai 2026-07-03)
Jika perlu ulang di mesin lain: Mailcow/scripts/fix-ssh-key.ps1
Catatan: Hindari pipe script PowerShell ke bash -s (CRLF). Pakai SCP upload file .sh + .pub.
| File key | Lokasi |
|---|---|
| Private | ~/.ssh/id_ed25519_mailcow |
| Public | ~/.ssh/id_ed25519_mailcow.pub |
| SSH config | Host mailcow → 10.100.1.28 |
Dockge agent (monitoring dari .24)
Docker di VM ini dikelola lewat Dockge Agents — instance Dockge di .28 didaftarkan ke Dockge utama di 10.100.1.24 (dockge.gisportal.id).
| Item | Nilai |
|---|---|
| Agent URL | http://10.100.1.28:5001 |
| Compose | /opt/dockge/compose.yaml |
| Stacks dir | /opt/stacks/ |
| Bind port | 10.100.1.28:5001 (bukan 0.0.0.0 — tidak listen di localhost) |
| Primary | Dockge v1.5.0 di .24 |
Instalasi (sudah selesai 2026-07-03)
# Di mailserver — atau ulang dari repo:
bash Mailcow/scripts/install-dockge-agent.sh
bash Mailcow/scripts/setup-dockge-agent-user.sh # samakan user admin dengan primary
Daftarkan agent di UI primary (sekali)
- Buka https://dockge.gisportal.id
- Settings → Dockge Agents → Add Agent
- URL:
http://10.100.1.28:5001 - Username / password: sama dengan login Dockge primary (
admin) - Status agent harus online — stack Mailcow nanti bisa dipilih agent mailserver
Port
5001tidak di-expose ke internet; hanya10.100.1.24yang diizinkan UFW.
Firewall / port (VM .28)
UFW aktif — default deny incoming, allow outgoing.
| Port | Protokol | Layanan | Sumber |
|---|---|---|---|
| 22 | TCP | SSH | Anywhere |
| 25 | TCP | SMTP inbound | Anywhere |
| 80 | TCP | HTTP (ACME redirect) | Anywhere |
| 443 | TCP | HTTPS — Mailcow UI | Anywhere |
| 465 | TCP | SMTPS | Anywhere |
| 587 | TCP | Submission | Anywhere |
| 993 | TCP | IMAPS | Anywhere |
| 995 | TCP | POP3S (opsional) | Anywhere |
| 5001 | TCP | Dockge agent | Hanya 10.100.1.24 |
Akses internal yang diperlukan
| Dari | Ke | Port |
|---|---|---|
10.100.1.28 |
10.100.1.40 |
389 LDAP |
10.100.1.28 |
Internet | 995 POP3 (cPanel drain) |
10.100.1.24 |
10.100.1.28 |
5001 Dockge, 993, 587 |
| User LAN/VPN | 10.100.1.28 atau IP publik |
993, 587 |
DNS & NAT publik
IP publik: 117.102.73.102
| Record | Target |
|---|---|
A sync.geonet.co.id |
117.102.73.102 |
| PTR | sync.geonet.co.id (verifikasi di provider) |
Port forwarding (MikroTik / gateway)
| Port | NAT ke | Layanan |
|---|---|---|
| 25, 465, 587, 993 | 10.100.1.28 |
Mailcow — SMTP / IMAP langsung |
| 80, 443 | 10.100.1.24 |
Nginx reverse proxy |
HTTPS Mailcow UI tidak langsung ke
.28dari internet — Nginx di.24harus proxysync.geonet.co.id→https://10.100.1.28:443. Saat install Mailcow setSKIP_LETS_ENCRYPT=y; sertifikat publik diurus Nginx.24(certbot).
Akses internal (Zammad, LAN): langsung ke 10.100.1.28:587 / :993 tanpa lewat NAT publik.
Partition disk (rencana)
| Device | Mount | Isi |
|---|---|---|
| Disk 1 | / |
Debian/Ubuntu + Docker |
| Disk 1 | /var/lib/docker |
Container layers, MariaDB, Redis volumes |
| Disk 2 | /data/mailcow/vmail |
Bind mount → vmail-vol-1 Mailcow |
Referensi
docs/notes/deployment-sizing.mddocs/notes/storage-nas-qnap.mddocs/project-status.md