Dalam dunia DevOps dan pengelolaan aplikasi modern, kemampuan untuk mengarahkan lalu lintas web melalui satu pintu masuk—terutama bila Anda bekerja dengan aplikasi berbasis Docker atau mikroservis—merupakan sebuah kebutuhan krusial.
Inilah peran reverse proxy, dan dalam konteks ini, Nginx Proxy Manager (NPM) menjadi alat favorit banyak pengembang karena kemudahannya dalam konfigurasi dan manajemen via antarmuka grafis.
Artikel ini mengulas secara komprehensif bagaimana cara menginstal NPM di Ubuntu menggunakan Docker, menyajikan aplikasi di belakang reverse proxy secara visual, memasang sertifikat SSL dari Let’s Encrypt, serta menyertakan tips optimasi dan troubleshooting agar setup Anda handal dan aman.
Apa Itu Nginx Proxy Manager dan Kenapa Penting?
Nginx Proxy Manager adalah antarmuka grafis (GUI) berbasis web yang memudahkan pengelolaan Nginx sebagai reverse proxy. Daripada mengedit file konfigurasi .conf secara manual, Anda dapat menambah host, mengaktifkan SSL, dan mengatur forwarding melalui dashboard.
Ini sangat mempermudah pengguna dalam mengarahkan permintaan HTTP/HTTPS ke layanan yang dibutuhkan, misalnya aplikasi di kontainer, server internal, atau VM, tanpa menyentuh sintaks Nginx.
Beberapa fitur utama yang membuat NPM populer antara lain:
- Pengelolaan host lewat GUI: cukup memasukkan domain dan target backend, klik save, dan NPM otomatis menghasilkan konfigurasi Nginx.
- Manajemen SSL otomatis: menggunakan Let’s Encrypt untuk mengeluarkan, memperbarui, dan menerapkan sertifikat HTTPS, lengkap dengan opsi redirect HTTP.
- User-friendly dan ideal bagi admin yang kurang nyaman dengan editing konfigurasi lewat terminal.
Tahap 1: Siapkan Docker di Ubuntu
Sebelum melangkah lebih jauh, pastikan Docker sudah terpasang dan aktif:
- Tambahkan GPG key Docker dengan perintah:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg - Daftarkan repository Docker ke sistem melalui:
echo “deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list - Jalankan update dan install Docker Engine lengkap dengan CLI:
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io -y
Tahap 2: Deploy Website Sederhana (Contoh Backend)
Untuk mendemonstrasikan fungsi reverse proxy, kita siapkan aplikasi sederhana (HTML statis) dalam kontainer Docker:
- Buat direktori proyek: mkdir app-domainxyz && cd app-domainxyz
- Tambahkan subfolder untuk website: mkdir www
- Buat file www/index.html dengan konten sederhana seperti judul dan paragraf sambutan.
- Siapkan file docker-compose.yml yang menjalankan Nginx, memetakannya ke 127.0.0.1:8080, dan menyertakan volume agar konten dapat disajikan oleh web server.
- Jalankan: sudo docker network create proxy_network (untuk network eksternal) lalu sudo docker compose up -d, dan pastikan website dapat diakses melalui http://127.0.0.1:8080.
Tahap 3: Instal Nginx Proxy Manager
Langkah inti agar reverse proxy dapat dikelola via GUI:
- Buat direktori baru untuk NPM:
mkdir nginx-proxy-manager && cd nginx-proxy-manager - Siapkan subdirektori:
mkdir data letsencrypt mysql - Buat file docker-compose.yml berisi definisi dua layanan—NPM dan MariaDB. NPM disajikan sebagai image jc21/nginx-proxy-manager:latest, sedangkan MariaDB sebagai jc21/mariadb-aria:latest. Jangan lupa expose port 80, 443, dan 81.
- Jalankan semua dengan sudo docker compose up -d, lalu akses dashboard GUI melalui browser di http://[IP-Server]:81.
- Login menggunakan kredensial default ([email protected] / changeme), kemudian segera ubah email dan password admin.
Tahap 4: Konfigurasi Proxy Hosts via Dashboard
Dengan NPM terpasang, tahap selanjutnya adalah mengarahkan domain/subdomain ke backend:
- Akses menu Proxy Hosts → tombol Add Proxy Host
- Isi field seperti Domain Names (subdomain atau domain), pilih scheme HTTP, target IP/container backend (misalnya app-domainxyz), dan port (biasanya 80)
- Simpan konfigurasi dan cek melalui browser apakah domain mengarah ke website HTML sebelumnya
Tahap 5: Menambahkan SSL Otomatis dari Let’s Encrypt
Keunggulan NPM adalah mampu mengeluarkan sertifikat dan menerapkannya tanpa repot:
- Edit proxy host yang sudah dibuat
- Di tab SSL, pilih opsi Request a new SSL Certificate, centang Force SSL dan HTTP/2 Support, masukkan email dan setujui syarat Let’s Encrypt
- Simpan dan NPM otomatis mengurus konfigurasi HTTPS dan redirect. Tes akses melalui https://[domain]
Tips Praktis dan Optimasi Setup Proxy
- Gunakan network Docker konsisten, seperti proxy_network, agar layanan backend dapat resolusi nama container secara otomatis.
- Amankan akses NPM dashboard, misalnya dengan VPN atau firewall, agar tidak bisa diakses sembarang orang.
- Backup data penting, terutama folder data dan letsencrypt, agar config proxy dan sertifikat bisa dipulihkan jika terjadi masalah.
- Perbarui NPM secara berkala dengan docker compose pull diikuti docker compose up -d.
Troubleshooting Umum
Kendala yang sering muncul dan solusinya:
- Port 80/443 sudah terpakai: hentikan aplikasi lain seperti Apache/Nginx default sebelum menjalankan NPM
- SSL fails karena DNS belum resolve: pastikan domain/subdomain telah benar diarahkan via DNS sebelum request sertifikat
- Login GUI tidak berhasil: reset password bila perlu, atau periksa log container NPM (docker logs nginx-proxy-manager) untuk menemukan error
Apa Selanjutnya Setelah Setup?
Dengan NPM berhasil dikonfigurasi, Anda bisa melangkah lebih jauh:
- Tambahkan lebih banyak proxy host untuk aplikasi lain, seperti API backend, admin panel, atau layanan internal lainnya
- Manfaatkan fitur Access Lists di NPM untuk membatasi akses berdasarkan IP
- Tambahkan load balancing sederhana jika Anda memiliki beberapa backend, manfaatkan pengaturan Advanced di GUI
Kesimpulan
Nginx Proxy Manager memberikan solusi sederhana dan elegan untuk pengelolaan reverse proxy Nginx—tanpa menyentuh command line atau file konfigurasi manual.
Hanya dengan beberapa klik, Anda bisa menambah host, mengaktifkan SSL, dan mengelola lalu lintas web dengan aman dan efisien.