Membuat Template Konfigurasi Nginx di HestiaCP untuk Forward Port

Pendahuluan

HestiaCP (https://hestiacp.com/) adalah salah satu control panel gratis dan open source yang sering digunakan untuk mengelola web server berbasis Nginx dan Apache. Namun, secara default, HestiaCP tidak menyediakan opsi untuk mengubah konfigurasi port dengan fleksibel melalui user interface-nya.

☐ Buat template untuk HTTP
☐ Buat template untuk HTTPS


Port Forwarding pakai Nginx

Pada template default, Nginx menerima request dari port 80 dan 443, namun hanya sebagai proxy yang:

Sayangnya, kita tidak bisa mengatur port forwarding dengan mudah karena opsi tersebut belum tersedia di user interface HestiaCP. Padahal ini sangat sering dilakukan menggunakan Nginx.

Solusinya, kita perlu membuat template konfigurasi baru, spesifik untuk settingan port forwarding yang kita perlukan.

Dalam catatan ini, kita akan coba melakukan port forwarding berikut:


Langkah-Langkah Membuat Template Konfigurasi Nginx di HestiaCP

1️. Masuk ke Server dan Buat Template Baru

Pertama, kita perlu masuk ke server melalui dan membuat template baru di dalam direktori konfigurasi HestiaCP.

cd /usr/local/hestia/data/templates/web/nginx/

Biasanya, di dalamnya sudah ada beberapa file template bawaan, termasuk default.tpl dan default.stpl.
File dengan ekstensi *.tpl digunakan untuk konfigurasi website dengan http.
File dengan ekstensi *.stpl digunakan untuk konfigurasi website dengan https.

2️. Buat File Template untuk HTTP (Port 80)

Buat file template untuk port 80:

cp default.tpl custom.tpl
nano custom.tpl

Ubah isinya dengan:

server {
	listen      %ip%:%proxy_port%;
	server_name %domain_idn% %alias_idn%;
	error_log   /var/log/%web_system%/domains/%domain%.error.log error;

    # Blokir akses ke file tersembunyi (yang nama file diawali dengan .) 
    location ~ /\.(?!well-known\/|file) {
        deny all;
        return 404;
    }

	location / {
        proxy_pass http://%ip%:18000;  # Pastikan port sudah sesuai
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /error/ {
        alias %home%/%user%/web/%domain%/document_errors/;
    }

    include %home%/%user%/conf/web/%domain%/nginx.conf_*;
}

Lalu, simpan (CTRL+X, Y, Enter).

Catatan:

3️. Buat File Template untuk HTTPS (Port 443)

Buat file template untuk port 443:

cp default.stpl custom.stpl
nano custom.stpl

Isi dengan:

server {
    listen      %ip%:%proxy_ssl_port% ssl;
    server_name %domain_idn% %alias_idn%;
    error_log   /var/log/%web_system%/domains/%domain%.error.log error;

    ssl_certificate %ssl_pem%;
    ssl_certificate_key %ssl_key%;
    ssl_stapling on;
    ssl_stapling_verify on;
    
	# TLS 1.3 0-RTT anti-replay
	if ($anti_replay = 307) { return 307 https://$host$request_uri; }
	if ($anti_replay = 425) { return 425; }

    # Blokir akses ke file tersembunyi sebelum aturan umum
    location ~ /\.(?!well-known\/|file) {
        deny all;
        return 404;
    }

    location / {
        proxy_pass http://%ip%:18000;  # Pastikan port sudah sesuai
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

    location /error/ {
        alias %home%/%user%/web/%domain%/document_errors/;
    }

    include %home%/%user%/conf/web/%domain%/nginx.ssl.conf_*;
}

Lalu, simpan (CTRL+X, Y, Enter).

Catatan:

4️. Terapkan Template ke Domain

Template baru sudah berhasil dibuat, namun belum dideteksi oleh HestiaCP. Jalankan perintah ini untuk rebuild system user yang juga akan membaca template baru.

v-rebuild-user admin yes

Perintah ini perlu dijalankan ketika ada update template, agar website menggunakan template terbaru yang telah di-update.

Selanjutnya, buka HestiaCP dan lakukan langkah-langkah berikut:

  1. Masuk ke Web > Pilih Domain example.com (contoh).
  2. Klik Edit
  3. Ubah Template Web menjadi custom
  4. Simpan perubahan (yang otomatis juga melakukan restart nginx)

Apabila hendak menggunakan https, Kamu bisa mengaktifkan opsi untuk request pembuatan sertifikat SSL menggunakan Let's Encrypt.

Setelah ini, apabila ada pesan error (misalnya menyatakan bahwa gagal restart Nginx), maka ada kemungkinan kesalahan pada template.

Konfigurasi selesai diterapkan.

Sekarang, kita perlu memastikan konfigurasi sudah diterapkan dengan benar, example.com sudah diarahkan ke port 18000.

Untuk memastikan konfigurasi berjalan dengan baik, kita bisa melakukan tes menggunakan curl:

curl -I http://example.com

Jika output menunjukkan status 200 OK, berarti konfigurasi berjalan dengan benar.


Penutup

Menggunakan template kustom di HestiaCP memberikan kontrol lebih dalam mengatur redirect port. Teknik ini berguna untuk berbagai kebutuhan, seperti menjalankan aplikasi di port non-standar atau menghubungkan layanan internal dengan lebih aman dan fleksibel.

Semoga bermanfaat!