Cara Instal Mailcow Bersama CloudPanel di VPS Ubuntu

Kalau kamu pakai CloudPanel di VPS Ubuntu, biasanya web server dan SSL sudah di-handle sama panel itu. Tapi kadang kita juga butuh mail server sendiri, misalnya buat email bisnis atau transactional email.

Salah satu solusi yang cukup populer adalah Mailcow. Mailcow ini lengkap banget, sudah include:

Mail server
Webmail
Anti spam
DKIM
SPF
Manajemen email

Masalahnya, kalau install Mailcow di server yang sama dengan CloudPanel, biasanya port 80 dan 443 sudah dipakai. Jadi kita harus sedikit menyesuaikan konfigurasi.

Di artikel ini gue bakal kasih cara install Mailcow bareng CloudPanel di VPS Ubuntu tanpa bentrok port.

Santai bro, kita jalanin step by step.

Sebelum mulai, pastikan:

  • VPS sudah install CloudPanel
  • Docker sudah terinstall
  • Domain sudah siap (misalnya mail.domainkamu.com)

Kalau sudah siap, kita mulai.

1. Clone Repository Mailcow

Pertama kita download dulu repository Mailcow dari Github.

Jalankan perintah berikut:

git clone https://github.com/mailcow/mailcow-dockerized /opt/mailcow-dockerized

Perintah ini akan membuat folder:

/opt/mailcow-dockerized

Semua file Mailcow nanti akan ada di situ.

2. Jalankan Script Instalasi Mailcow

Sekarang masuk ke folder Mailcow dan jalankan script konfigurasi.

cd /opt/mailcow-dockerized/ && ./generate_config.sh
Script ini akan menanyakan beberapa konfigurasi.

3. Isi Nama Host Mail Server

Saat diminta hostname, isi dengan domain mail server kamu.

Contoh:

mail.domainkamu.com

Pastikan domain ini sudah diarahkan ke IP VPS kamu.

4. Pilih Timezone Server

Untuk timezone, kamu bisa isi:

Asia/Jakarta

Ini supaya log dan waktu server sesuai dengan zona waktu Indonesia.

5. Pilih Mode Server

Mailcow akan menanyakan jenis instalasi server.

Untuk server produksi yang stabil, pilih: 1

6. Ubah Port HTTP dan HTTPS Mailcow

Nah ini bagian penting bro.

Karena CloudPanel sudah memakai port 80 dan 443, kita harus mengganti port Mailcow supaya tidak bentrok.

Buka file konfigurasi berikut:

nano /opt/mailcow-dockerized/mailcow.conf

Cari bagian konfigurasi port lalu ubah seperti ini:

HTTP_PORT=7080
HTTP_BIND=127.0.0.1

HTTPS_PORT=7443
HTTPS_BIND=127.0.0.1

Penjelasan singkat:

  • 7080 port HTTP Mailcow
  • 7443 port HTTPS Mailcow
  • 127.0.0.1 hanya bisa diakses dari server (lebih aman)

Setelah selesai, simpan file.

7. Jalankan Docker Mailcow

Sekarang kita jalankan semua container Mailcow.

Masuk lagi ke folder Mailcow lalu jalankan:

cd /opt/mailcow-dockerized/ && docker compose pull && docker compose up -d

Perintah ini akan:

  • download semua image Docker Mailcow
  • menjalankan container email server
  • menjalankan web interface Mailcow

Proses pertama biasanya agak lama karena banyak image yang harus didownload.

8. Akses Mailcow dari Browser

Setelah semua container berjalan, Mailcow sudah bisa diakses.

Karena kita tadi ganti port, aksesnya jadi seperti ini:

https://IP-VPS:7443

Atau kalau lewat localhost:

https://127.0.0.1:7443

Nanti kamu bisa setup reverse proxy dari CloudPanel supaya domain seperti:

mail.domainkamu.com

bisa diarahkan ke port Mailcow tersebut.

Kenapa Harus Ganti Port, Bukan Cuma Matiin CloudPanel Aja

Beberapa orang mungkin mikir, kenapa gak matiin aja CloudPanel sementara terus pakai port 80/443 buat Mailcow. Jawabannya simpel: karena CloudPanel itu yang ngatur web hosting dan SSL certificate buat situs-situs lain di VPS yang sama. Kalau dimatiin, semua situs yang dikelola CloudPanel bakal ikutan down. Makanya solusi paling aman ya ganti port Mailcow, biar dua-duanya bisa jalan bareng tanpa saling ganggu. Nanti pas udah stabil, baru kita arahkan domain mail server ke port Mailcow itu lewat reverse proxy dari CloudPanel, jadi dari sisi pengguna tetap keliatan akses normal lewat HTTPS standar (port 443), padahal di belakang layar udah diteruskan ke port custom Mailcow.

Tips Penting Setelah Install

Beberapa hal yang sebaiknya langsung kamu setup setelah Mailcow aktif:

DNS record (MX, SPF, DKIM, DMARC)
Reverse DNS / PTR record
SSL certificate
Anti spam settings

Ini penting supaya email kamu tidak masuk spam.

Khusus soal anti-spam, Mailcow sebenarnya udah include Rspamd bawaan yang cukup pintar buat filter email masuk. Tapi buat email keluar, reputasi domain dan IP VPS kamu juga ngaruh besar. Kalau IP VPS kamu kebetulan bekas dipake spammer sebelumnya (VPS provider sering reuse IP), email kamu bisa otomatis kecap sebagai spam meski konfigurasi DNS-nya udah benar semua. Solusinya, cek dulu reputasi IP VPS kamu di situs kayak mxtoolbox.com sebelum mulai kirim email dalam jumlah banyak, dan kalau ternyata IP-nya udah masuk blacklist, mending minta ganti IP ke provider VPS kamu.

Kendala yang Sering Muncul

  • Port 7080/7443 bentrok juga
    Kalau masih ada service lain yang pakai port itu, ganti ke port lain yang belum terpakai, cek dulu pakai netstat -tulpn.
  • docker compose pull gagal/timeout
    Biasanya karena koneksi VPS lambat ke Docker Hub, coba ulangi beberapa kali atau cek DNS resolver VPS.
  • Mailcow gak bisa diakses meski container sudah jalan
    Cek firewall/security group, pastikan port yang dipakai (7080/7443) sudah dibuka untuk akses lokal minimal.
  • Reverse proxy dari CloudPanel gagal connect ke Mailcow
    Pastikan target proxy-nya mengarah ke 127.0.0.1:7443, bukan ke domain luar.

Penutup

Nah bro, sekarang kamu sudah tahu cara install Mailcow bersama CloudPanel di VPS Ubuntu tanpa bentrok port.

Intinya cuma dua hal penting:

Install Mailcow seperti biasa
Ganti port HTTP dan HTTPS supaya tidak tabrakan dengan CloudPanel

Dengan setup ini kamu bisa punya web hosting dari CloudPanel sekaligus mail server sendiri dari Mailcow dalam satu VPS.

Semoga tutorial santai ini bisa bantu kamu yang lagi setup email server di VPS. Setelah Mailcow jalan, jangan lupa setup DNS record (MX, SPF, DKIM, DMARC) biar email kamu gak masuk folder spam ya bro.

Jundi Husni Mubaraq

Jundi Husni Mubaraq

Saya seorang software engineer yang sejak awal 2026 megang penuh (sendirian) tanggung jawab infrastruktur server di tempat saya kerja: deploy dan maintain server Linux Ubuntu on-premises, bangun keamanan berlapis pakai CrowdSec dan Cloudflare, kelola job scheduling dan monitoring pakai Cronicle, deploy aplikasi containerized pakai Docker, sampai ngurusin mail server korporat dari nol. Sebelumnya saya 3+ tahun jadi Software Engineer/Fullstack Developer di beberapa perusahaan, termasuk proyek skala internasional (EUDR compliance system buat Lindt & Sprungli) dan sistem rumah sakit (SIMRS, rekam medis elektronik, integrasi BPJS Kesehatan) di RS PKU Muhammadiyah Surakarta. jundi.hm ini tempat saya dokumentasiin apa yang beneran saya kerjain dan pelajarin di lapangan, bukan sekadar riset teori, S.Kom dari Universitas Duta Bangsa Surakarta jadi bekal awal, tapi yang nulis di sini adalah pengalaman langsung ngelola server production sehari-hari. Selengkapnya: https://iam.jundi.hm

Lihat Juga Nih

Selanjutnya Nih

Kasih Komentar

Email kamu gak bakal ditampilin ke publik. Kalau ada tanda ini artinya wajib diisi ya *

Rekomendasi.

Lagi Viral.