Cara Mengatasi VPS : SSL Fail (500) di Webmail (Roundcube)

Konteks Masalah: Domain sub-webmail (webmail.domain.com) yang sebelumnya lancar tiba-tiba mengalami 500 Internal Server Error, Blank Screen, atau Not Secure (SSL Failure) setelah adanya proses rebuild, renewal SSL, atau pembaruan konfigurasi dari panel.

🛑 Kenapa Bisa Begini?

Pada HestiaCP, service Roundcube memiliki arsitektur tersendiri yang terpisah dari user web standar:

  1. SSL / Nginx Bypass: SSL Let’s Encrypt kadang gagal atau hilang jika webmail.domain.com dibuat sebagai Web Domain biasa tanpa symlink yang presisi ke aplikasi Roundcube.
  2. Strict open_basedir Isolation: Ketika HestiaCP me-rebuild domain, file pool PHP-FPM di-reset ke template default. Akibatnya, open_basedir mengunci PHP hanya di folder /home/user/, sehingga PHP diblokir (Permission Denied) saat mencoba mengakses direktori inti Roundcube (/var/lib/roundcube, /etc/roundcube, dan /usr/share/roundcube).
  3. Ownership Mismatch: Layanan webmail memerlukan user/group hestiamail:www-data untuk fungsi direktori temp dan logs.

🛠️ Step-by-Step Resolution Guide

Jalankan seluruh langkah di bawah ini menggunakan akses root melalui terminal SSH.

Langkah 1: Fix SSL & Rebuild Domain via Hestia CLI

Langkah pertama adalah memastikan virtual host Nginx dan sertifikat SSL terpasang dengan benar untuk domain webmail.Bash

# Rebuild konfigurasi domain via CLI HestiaCP
v-rebuild-web-domain hestiauser webmail.domainmu.com

# Re-issue / Force Renewal SSL Let's Encrypt
v-add-web-domain-ssl-force hestiauser webmail.domainmu.com

Penjelasan: Perintah ini memaksa HestiaCP memperbarui file vhost Nginx/Apache dan menerbitkan sertifikat Let’s Encrypt tanpa harus lewat GUI dashboard.

Langkah 2: Hubungkan public_html ke Core Roundcube (Symlink)

Ganti folder public_html kosong milik user dengan symbolic link yang mengarah langsung ke sistem instalasi Roundcube.Bash

# 1. Hapus folder public_html bawaan jika masih berupa direktori biasa
rm -rf /home/hestiauser/web/webmail.domainmu.com/public_html

# 2. Buat Symlink ke sistem Roundcube
ln -s /var/lib/roundcube /home/hestiauser/web/webmail.domainmu.com/public_html

Penjelasan: Mengarahkan document root Nginx/Apache langsung ke direktori aplikasi Roundcube yang valid.

Langkah 3: Amankan Permission & Ownership Folder Temp / Logs

Roundcube membutuhkan akses tulis (write access) ke direktori penyimpanan sementara dan log agar tidak crash (Error 500/Blank Screen).Bash

# 1. Pastikan kepemilikan diatur ke hestiamail:www-data
chown -R hestiamail:www-data /var/lib/roundcube/temp
chown -R hestiamail:www-data /var/lib/roundcube/logs

# 2. Berikan hak akses Read, Write, Execute untuk Owner & Group (775)
chmod -R 775 /var/lib/roundcube/temp
chmod -R 775 /var/lib/roundcube/logs

Penjelasan: hestiamail adalah pemilik sistem webmail, sedangkan www-data adalah group yang digunakan oleh web server / PHP-FPM untuk membaca dan menulis file.

Langkah 4: Inject Path Roundcube ke open_basedir PHP-FPM

Edit file konfigurasi pool PHP-FPM domain untuk mengizinkan skrip PHP mengakses folder-folder di luar /home/user/.

  1. Buka file konfigurasi pool PHP-FPM domain:
    • Bashnano /etc/php/8.3/fpm/pool.d/webmail.domainmu.com.conf (Sesuaikan 8.3 dengan versi PHP yang aktif digunakan oleh domain).
  2. Cari baris php_admin_value[open_basedir]:
    • Ubah baris tersebut dari:Ini, TOMLphp_admin_value[open_basedir] = /home/hestiauser/.composer:/home/hestiauser/web/webmail.domainmu.com/public_html: ...
    • Menjadi (tambahkan path sistem Roundcube di bagian depan/tengah, dipisahkan titik dua :):Ini, TOMLphp_admin_value[open_basedir] = /var/lib/roundcube:/etc/roundcube:/usr/share/roundcube:/home/hestiauser/.composer:/home/hestiauser/web/webmail.domainmu.com/public_html:/tmp
  3. Simpan file (Ctrl + O, lalu Enter, lalu Ctrl + X).

Langkah 5: Restart Service PHP-FPM & Test

Terapkan perubahan konfigurasi PHP dengan melakukan restart pada service PHP-FPM.Bash

# Restart PHP-FPM
systemctl restart php8.3-fpm

# Tes tulisan sementara (opsional) untuk memastikan permission berjalan
sudo -u www-data touch /var/lib/roundcube/temp/test.tmp && rm /var/lib/roundcube/temp/test.tmp

🔍 Checklist Verifikasi Akhir

NoItem PengujianEkspektasi Hasil
1Akses URL [https://webmail.domain.com]Gembok SSL Active / Valid (Hijau/Secure).
2Tampilan WebmailHalaman login Roundcube muncul sempurna (Tanpa HTTP 500 / Blank).
3Login & AttachmentPengguna dapat masuk dan melampirkan file tanpa pesan error permission.

Catatan Penting untuk Admin:

Jika di kemudian hari HestiaCP melakukan rebuild domain otomatis (misal saat perpanjangan sertifikat SSL berkala), Langkah 4 dapat ter-reset ke bawaan template. Jika terjadi error 500 kembali, cukup ulangi Langkah 4 & 5.

Ok, sudah cukup clear kan? Problem’s solved!