Lewati ke konten utama
diskon 50% semua paket, waktu terbatas. Mulai dari $2.48/mo
14 min left
Aplikasi Web dan Bisnis

Nginx Proxy Manager di VPS: Ulasan dan Panduan Pengaturan

C Oleh Chike 14 menit baca
Nginx Proxy Manager on a VPS routing one public IP to Dashboard, Media Server, Database, and Blog containers over HTTPS

Anda memiliki VPS dengan lima atau enam service Docker di atasnya: Nextcloud, Uptime Kuma, blog Ghost, mungkin Vaultwarden. Satu IP publik. Dan Anda ingin masing-masing berada di subdomainnya sendiri dengan HTTPS, tanpa menyunting file konfigurasi Nginx secara manual setiap kali Anda menambahkan container. Itulah persis masalah yang ingin dipecahkan oleh Nginx Proxy Manager.

Ini adalah ulasan sekaligus pengaturan VPS Nginx Proxy Manager yang lengkap dalam satu panduan. Nginx Proxy Manager (NPM) adalah aplikasi Docker yang membungkus Nginx dalam UI web: Anda mengarahkan subdomain ke container backend dan meminta sertifikat Let's Encrypt melalui dasbor alih-alih menulis direktif secara manual. Panduan ini ditujukan untuk self-hoster dan sysadmin yang sudah menjalankan Docker dan kini membutuhkan reverse proxy yang tidak mengharuskan menyentuh nginx.conf.

Pada akhirnya Anda akan tahu apakah NPM cocok untuk kasus Anda, Anda akan menjalankannya dengan HTTPS di VPS Anda, dan Anda akan mengetahui kriteria untuk beralih ke Caddy atau Traefik ketika NPM tidak lagi menjadi alat yang tepat.

Versi Singkat

  • Apa itu NPM: aplikasi Docker yang menempatkan UI web di atas Nginx untuk mengelola proxy host dan HTTPS Let's Encrypt otomatis. Ini cocok untuk orang yang menginginkan GUI dan menjalankan stack service yang kecil dan cukup statis.
  • Kompromi-komprominya: konfigurasi tersimpan dalam basis data SQLite, sehingga tidak dapat dikendalikan versinya atau dibandingkan seperti file konfigurasi. Per 12 Juli 2026, rilis bertag terbaru terpengaruh oleh CVE-2026-40519, jadi deployment baru sebaiknya menunggu rilis bertag yang memuat perbaikannya. Panel admin di port 81 adalah hal utama yang harus Anda amankan.
  • Penentuan ukuran: NPM sendiri idle di sekitar 50 MB RAM. VPS 1 GB adalah baseline praktis; 2 GB nyaman begitu Anda menambahkan service di belakangnya.
  • Kapan harus beralih: tetap gunakan NPM untuk stack yang kecil dan sebagian besar statis di mana GUI penting. Gunakan Caddy ketika Anda menginginkan konfigurasi sebagai kode dan footprint yang lebih kecil. Gunakan Traefik ketika perubahan container yang sering membuat auto-discovery Docker lebih berharga daripada registrasi host manual.

Apa yang Tidak Dicakup Panduan Ini

Ini adalah panduan deployment VPS, bukan manual referensi. Agar tetap fokus, berikut yang berada di luar cakupan:

  • Kustomisasi direktif Nginx yang mendalam (blok location khusus di luar apa yang ditampilkan UI NPM).
  • Arsitektur load-balancing dalam skala besar.
  • Perbandingan ingress Kubernetes.
  • NPM di Windows.
  • Jalur Cloudflare Tunnel untuk pengaturan tanpa IP statis.

Apa yang Dilakukan Nginx Proxy Manager (dan Di Mana Ia Menyulitkan Anda)

Nginx Proxy Manager taking one public IP and routing subdomains such as app, status, cloud, and vault.example.com to separate backend containers, each with SSL enabled

Nginx Proxy Manager adalah aplikasi Docker yang menjalankan Nginx di bawahnya dan menambahkan dasbor web di atasnya. Anda membuat proxy host (subdomain ke container dan port backend) dan meminta sertifikat Let's Encrypt melalui formulir alih-alih file konfigurasi. Ini cocok untuk stack aplikasi self-hosted yang kecil dan cukup statis di satu VPS.

Di luar dasar-dasarnya, dasbor juga menangani access list dan forwarding stream TCP/UDP mentah. Untuk sekumpulan aplikasi di satu VPS, itu benar-benar memudahkan: Anda menambahkan container, membuka dasbor, mengarahkan subdomain ke sana, klik untuk menerbitkan sertifikat. Selesai.

Kompromi utamanya adalah konfigurasi sumber kebenaran NPM secara default tersimpan dalam basis data SQLite. NPM memang menghasilkan file Nginx yang dapat dibaca di bawah /data/nginx/proxy_host/, tetapi file-file tersebut adalah artefak yang dihasilkan, bukan konfigurasi deklaratif yang Anda sunting dan kendalikan versinya. Anda bisa memeriksanya, tetapi mereka bukan pengganti yang rapi untuk Caddyfile atau label Traefik, dan cara yang andal untuk mereproduksi deployment adalah dengan memulihkan volume data dan sertifikat NPM. Untuk stack statis yang kecil, itu mungkin dapat diterima. Untuk alur kerja infrastruktur yang digerakkan Git, itu adalah keterbatasan nyata.

Per 12 Juli 2026, rilis bertag terbaru adalah v2.15.1, dipublikasikan pada 3 Juni 2026. Proyek ini tetap aktif dan berlisensi MIT, tetapi posisi keamanannya saat ini memerlukan catatan penting: NVD mencantumkan versi 2.9.14 hingga 2.15.1 sebagai terpengaruh oleh CVE-2026-40519, kerentanan command-injection terautentikasi yang diperbaiki dalam commit a5db5ed tetapi belum disertakan dalam rilis bertag yang lebih baru. Sebelum melakukan deployment, periksa halaman rilis dan gunakan versi bertag pertama yang memuat perbaikan tersebut. NPM dipelihara, tetapi v2.15.1 saat ini tidak boleh digambarkan sebagai sepenuhnya ter-patch.

Soal footprint, NPM idle di sekitar 50 MB RAM menurut perbandingan reverse-proxy dari byte-guard. Itu cukup ringan sehingga NPM hampir tidak pernah menjadi hal yang membebani VPS Anda. Service di belakangnyalah yang membebani.

Pendapat saya: NPM adalah pilihan 2026 yang masuk akal jika Anda menginginkan GUI dan menjalankan stack Docker yang kecil. Jika Anda hidup dalam version control dan menginginkan konfigurasi proxy Anda di Git, lihat Caddy sebagai gantinya. Konfigurasi berbasis SQLite adalah faktor penentunya, bukan ada yang salah dengan proxying-nya sendiri.

NPM menukar portabilitas konfigurasi demi GUI. Pertukaran itu baik untuk stack statis yang kecil dan mengganggu untuk alur kerja yang digerakkan Git.

NPM vs Caddy vs Traefik: Reverse Proxy Mana yang Cocok untuk VPS Anda

NPM, Caddy, and Traefik compared: NPM is a GUI for small static stacks at about 50 MB idle, Caddy is config-as-code for simple deployments at about 30 MB, and Traefik uses Docker auto-discovery for changing containers at about 80 MB

Ketiga alat ini terbagi menurut empat sumbu yang menentukan pilihan: bagaimana Anda mengonfigurasinya, bagaimana mereka menangani HTTPS, bagaimana mereka menskalakan dengan jumlah service, dan berapa banyak RAM yang mereka gunakan saat idle. Berikut perbandingannya.

AtributPengelola Proxy NginxCaddyTraefik
Model konfigurasiGUI web, tersimpan di SQLiteCaddyfile (teks, dapat dikendalikan versinya)Label Docker / YAML
Auto-HTTPSYa, minta per host di UIYa, secara default, tanpa konfigurasiYa, memerlukan konfigurasi resolver ACME
Auto-discovery DockerNoNoYa, melalui label container
RAM idle~50 MB~30 MB~80 MB
Kasus paling cocokPengguna GUI, stack kecil/statisKonfigurasi-sebagai-kode, footprint terendahStack Docker dinamis dengan perubahan container yang sering

Angka RAM idle adalah pengamatan perkiraan dari salah satu perbandingan 2026, bukan persyaratan tetap. Penggunaan sebenarnya bervariasi menurut versi image, fitur yang diaktifkan, lalu lintas, dan logging.

Kriteria peralihan mengikuti langsung dari tabel tersebut. Jika Anda menginginkan dasbor dan menjalankan segelintir service yang tidak sering berubah, NPM adalah alat yang tepat. Jika Anda lebih menyukai konfigurasi sebagai kode, menginginkan footprint terkecil, atau menghargai penyediaan dan perpanjangan HTTPS otomatis dari Caddy tanpa pengaturan ACME, gunakan Caddy. Saya sendiri memilih Caddy pada deployment situs tunggal karena penanganan SSL-nya otomatis dan Caddyfile-nya pendek. Jika Anda sering menambah, menghapus, atau men-deploy ulang container, auto-discovery berbasis label dari Traefik berarti Anda berhenti mendaftarkan setiap host baru secara manual.

Ada juga Nginx polos dengan Certbot, yang lebih disukai sebagian administrator untuk kontrol yang presisi atau deployment non-Docker. Certbot dapat mengotomatiskan perpanjangan sertifikat, tetapi Anda tetap mengelola routing virtual-host dan konfigurasi Nginx sendiri. Jika alasan utama Anda mempertimbangkan NPM adalah menghindari konfigurasi proxy manual, Nginx polos kemungkinan bukan pilihan yang lebih cocok.

Satu catatan tentang pilihan ini: perbandingan byte-guard menempatkan Caddy sebagai opsi paling ringan dalam perbandingan tersebut, dan untuk pengaturan host tunggal 2026 yang baru itu adalah pilihan yang masuk akal. Caddy unggul dalam hal lebih ringan dari NPM, tetapi jika Anda secara khusus menginginkan GUI, itu bukan pilihan terbaik Anda.

Untuk perbandingan berdampingan yang lebih mendalam tentang mesin di baliknya, lihat perbandingan Caddy vs Nginx di VPS.

Prasyarat: apa yang Anda perlukan

Sebelum Anda melakukan deployment, siapkan hal-hal ini. Ini daftar pendek, tetapi lewati satu item saja dan langkah sertifikat akan gagal nanti.

  • Sebuah VPS dengan Docker dan Docker Compose terinstal (Ubuntu 22.04 LTS atau Debian 12 tidak masalah).
  • Sebuah nama domain, dengan record DNS A (dan AAAA jika Anda menggunakan IPv6) yang mengarah ke IP publik VPS Anda.
  • Akses SSH ke VPS.
  • Port 80 dan 443 terbuka ke internet pada firewall Anda.
  • Port 81 hanya dapat dijangkau oleh Anda, tidak terbuka untuk publik (dibahas di bagian keamanan).

Menyiapkan Nginx Proxy Manager di VPS Anda dengan Docker Compose

Deploying Nginx Proxy Manager with Docker Compose: ports 80 and 443 public, the admin UI on port 81 bound to 127.0.0.1, and backend containers joined to a shared proxy Docker network

Bagian ini men-deploy NPM menggunakan Docker Compose. Begitu record DNS Anda teresolusi ke VPS, pengaturan container itu sendiri cepat, meskipun propagasi DNS dan penerbitan sertifikat mungkin memakan waktu lebih lama.

Pengaturan ini menggunakan satu file Docker Compose dan satu perintah sekali jalan untuk membuat jaringan Docker bersama. Buat sebuah direktori, buat jaringan, tambahkan file docker-compose.yml di bawah ini, lalu jalankan container.

Pertama, buat jaringan Docker bersama:

docker network create proxy

Kemudian buat file docker-compose.yml berkas:

# docker-compose.yml
services:
  npm:
    image: 'jc21/nginx-proxy-manager:<PATCHED_VERSION>'
    restart: unless-stopped
    ports:
      - '80:80'                 # public HTTP
      - '443:443'               # public HTTPS
      - '127.0.0.1:81:81'       # admin UI, reachable only from the VPS itself
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - proxy
networks:
  proxy:
    external: true

Lampirkan setiap container backend yang harus dijangkau NPM berdasarkan nama service ke jaringan eksternal proxy yang sama. Ini memungkinkan NPM meresolusi container berdasarkan nama service-nya tanpa mempublikasikan port aplikasi backend di VPS.

Cadangkan kedua ./data dan ./letsencrypt sebelum melakukan upgrade. Direktori data berisi basis data NPM dan konfigurasi yang dihasilkan, sedangkan direktori Let's Encrypt berisi material sertifikatnya.

Beberapa hal tentang file ini. Image ini secara default menggunakan basis data SQLite yang tersimpan dalam volume ./data . Itu adalah backend default dan tepat untuk sebagian besar deployment VPS tunggal. Jika Anda membutuhkan basis data eksternal, NPM mendukung MariaDB/MySQL dan PostgreSQL, yang berarti menambahkan service basis data dan variabel environment yang sesuai. Untuk satu VPS, SQLite tetap menjadi default paling sederhana kecuali Anda memiliki alasan yang jelas untuk memindahkan basis data keluar dari volume data. Kebijakan restart: unless-stopped berarti NPM kembali menyala jika VPS reboot, yang memang Anda inginkan untuk service yang berada di depan segalanya.

Jalankan dan pastikan ia berjalan:

docker compose up -d
docker compose ps

Output yang diharapkan: container npm dengan status Up, port 80 dan 443 dipetakan secara publik, dan port 81 hanya terikat ke 127.0.0.1. Start pertama memakan waktu beberapa menit sementara NPM menghasilkan kunci JWT, menginisialisasi basis data, dan membuat pengguna admin default. Dokumentasi pengaturan resmi menjelaskan urutan first-run ini.

Buat tunnel SSH dari komputer lokal Anda sebelum membuka antarmuka admin:

ssh -L 8181:127.0.0.1:81 user@your-vps

Kemudian buka http://127.0.0.1:8181 di browser Anda. Pada instalasi baru, masuk dengan [email protected] dan changeme, lalu segera ganti email dan kata sandi default. Jangan buat dasbor dapat dijangkau publik selama kredensial default masih aktif.

Setelah Anda mengubah kredensial admin, tambahkan proxy host pertama Anda:

  1. Di dasbor, buka Hosts, lalu Proxy Hosts, lalu Add Proxy Host.
  2. Atur Domain Name ke subdomain Anda (misalnya cloud.example.com).
  3. Atur Forward Hostname / IP ke nama container backend atau IP, dan Forward Port ke port tempat ia mendengarkan.
  4. Simpan. Proxy host muncul dalam daftar, dan lalu lintas ke subdomain tersebut kini mencapai container Anda.

Jika Anda menjalankan UI manajemen Docker bersama ini, pola yang sama berlaku: arahkan subdomain ke alat manajemen container dengan cara yang sama, dan lakukan hal yang sama untuk stack pemantauan Prometheus dan Grafana yang ingin Anda tempatkan di belakang proxy.

Mengonfigurasi HTTPS Otomatis untuk Subdomain

Configuring automatic HTTPS in Nginx Proxy Manager: a DNS A record points the subdomain at the VPS, Let's Encrypt validates ownership over HTTP-01 on port 80 or DNS-01 for wildcards, and the certificate installs with Force SSL and HTTP/2 enabled

Bagian ini memberi Anda sertifikat Let's Encrypt yang valid dan diperpanjang otomatis untuk subdomain Anda. Prasyaratnya adalah yang sering menjebak orang: record DNS A untuk subdomain tersebut harus sudah mengarah ke VPS Anda, dan port 80 harus dapat dijangkau dari internet, karena Let's Encrypt memverifikasi domain dengan menghubunginya kembali.

Dengan proxy host telah dibuat, minta sertifikatnya:

  1. Sunting proxy host, buka tab SSL tab.
  2. Di bawah Sertifikat SSLpilih Request a new SSL Certificate.
  3. Aktifkan Force SSL dan HTTP/2 Support. Aktifkan HSTS hanya setelah memastikan HTTPS berfungsi dengan benar, karena browser dapat menyimpan kebijakan tersebut di cache dan mempersulit pemulihan dari kesalahan konfigurasi sertifikat atau proxy.
  4. Setujui ketentuan Let's Encrypt dan simpan.

Secara default, NPM menggunakan challenge HTTP-01 untuk nama non-wildcard, memvalidasi setiap hostname yang diminta melalui port 80. Sebuah sertifikat dapat memuat beberapa nama non-wildcard, tetapi HTTP-01 tidak dapat menerbitkan sertifikat wildcard. Nama wildcard seperti *.example.com memerlukan challenge DNS-01 dengan penyedia DNS yang didukung. Untuk pengaturan normal satu subdomain per service, HTTP-01 adalah semua yang Anda butuhkan, dan perpanjangan berlangsung otomatis.

Jika permintaan sertifikat gagal, periksa port 80 terlebih dahulu. Penyebab umum meliputi port 80 yang tidak dapat dijangkau, aturan cloud firewall atau security-group yang salah, dan DNS yang belum selesai berpropagasi. Let's Encrypt tidak dapat memvalidasi domain yang tidak dapat dijangkaunya.

Mengamankan Panel Admin NPM di VPS

Securing the Nginx Proxy Manager admin panel: public access to port 81 is blocked while admin access is allowed only through an SSH tunnel or private VPN to 127.0.0.1:81, with two-factor authentication and a patched version

Antarmuka admin di port 81 adalah paparan utama pada deployment NPM, dan bagian ini menguncinya. Ini adalah pengerasan operasional, bukan audit keamanan: tiga hal, dilakukan sekali, dan profil risiko turun tajam.

Pertama, dan paling penting, jaga agar port 81 terikat ke 127.0.0.1 seperti ditunjukkan dalam file Docker Compose. Jangkau dasbor melalui tunnel SSH yang dijelaskan sebelumnya. Jika Anda membutuhkan akses jarak jauh yang persisten, buat antarmuka admin hanya dapat dijangkau melalui VPN privat. Jangan publikasikan port 81 di IP publik VPS.

Kedua, aktifkan autentikasi dua faktor TOTP pada akun admin Anda. NPM menambahkan 2FA berbasis TOTP di versi 2.13.6, jadi setiap instalasi terkini memilikinya. Aktifkan.

Ketiga, jaga NPM tetap ter-patch dan verifikasi rilis yang tepat alih-alih mengasumsikan tag latest aman. CVE-2026-40519 memengaruhi versi 2.9.14 hingga 2.15.1 dan dapat memungkinkan eksekusi kode jarak jauh terautentikasi melalui kredensial penyedia DNS yang berbahaya. CVE-2026-50892 memengaruhi v2.14.0 dan dapat memungkinkan penyerang terautentikasi memperoleh material private-key Let's Encrypt. Isu sebelumnya, CVE-2025-50579, memengaruhi v2.12.3 melalui cacat CORS yang dapat mengekspos token JWT. Aturan praktisnya sederhana: jaga port 81 tetap privat, aktifkan autentikasi dua faktor, tetapkan versi yang diketahui sudah ter-patch, dan verifikasi advisory keamanan sebelum melakukan upgrade.

Port 81 tetap privat dan NPM tetap ter-patch. Lakukan kedua hal itu dan risiko utama yang diketahui menjadi jauh lebih mudah dikelola untuk pengaturan VPS tunggal yang normal.

Menentukan Ukuran VPS Anda untuk Nginx Proxy Manager

NPM sendiri ringan; pertanyaan penentuan ukuran sebenarnya tentang NPM ditambah service yang berada di belakangnya. Footprint idle proxy jarang menjadi kendala. Sebuah instance Nextcloud atau blog Ghost akan menggunakan lebih banyak sumber daya daripada proxy itu sendiri.

Berikut cara tier-tier tersebut bekerja dalam praktik:

  • Baseline praktis minimum: 1 GB RAM, 1 vCPU, dan 10 GB penyimpanan. Satu panduan penentuan ukuran pihak ketiga menggunakan baseline yang sama, tetapi perlakukan sebagai panduan perencanaan, bukan persyaratan resmi NPM. Ini cukup untuk NPM, sistem operasi, dan beberapa service ringan, tetapi menyisakan ruang gerak yang terbatas.
  • Nyaman: 2 GB RAM, 1 vCPU, 20 GB penyimpanan. NPM ditambah tiga hingga lima service dengan ruang untuk bernapas. Ini adalah titik ideal bagi sebagian besar self-hoster.
  • Naik tingkat: 4 GB RAM, 2 vCPU. Untuk delapan hingga dua belas service, atau pengaturan dengan lalu lintas yang signifikan di mana Anda menginginkan ruang gerak CPU untuk terminasi TLS.

Angka yang Anda jadikan patokan ukuran adalah jumlah dari aplikasi yang di-proxy, bukan NPM. Jumlahkan footprint RAM dari service yang ingin Anda jalankan, tambahkan overhead idle kecil dari proxy di atasnya, lalu pilih tier di atas angka itu dengan margin.

Menentukan ukuran server adalah bagian yang mudah. Menjalankan NPM tetap berarti menyediakan VPS, menginstal Docker, menarik image, dan menjalani pengaturan first-run itu. Jika Anda lebih suka melewati langkah-langkah penyediaan, marketplace Cloudzy memiliki deployment Nginx Proxy Manager sekali klik di VPS NVMe. Ini menyalakan container di server yang baru, sehingga Anda langsung menuju dasbor dan proxy host pertama Anda. Bagaimanapun, tier ukuran di atas adalah patokan yang Anda sediakan.

Pertanyaan yang Sering Diajukan

Apa Perbedaan Antara Nginx dan Nginx Proxy Manager?

Nginx adalah web server dan mesin reverse proxy itu sendiri, yang Anda konfigurasikan dengan menyunting file teks. Nginx Proxy Manager adalah aplikasi Docker yang menjalankan Nginx di bawahnya dan menambahkan UI web di atasnya, sehingga Anda mengelola proxy host dan sertifikat Let's Encrypt melalui dasbor alih-alih menulis file konfigurasi. NPM adalah lapisan GUI; Nginx adalah mesin yang mengerjakan pekerjaannya.

Apakah Nginx Proxy Manager Masih Layak Digunakan pada 2026?

Ya, untuk pengguna yang lebih menyukai GUI dan menjalankan stack Docker yang kecil, tetapi hanya setelah Anda memverifikasi bahwa image yang Anda deploy menyertakan perbaikan keamanan terbaru. Per 12 Juli 2026, v2.15.1 adalah rilis bertag terbaru, dan NVD mencantumkannya sebagai terpengaruh oleh CVE-2026-40519. Jika Anda lebih menyukai konfigurasi sebagai kode, Caddy tetap menjadi pilihan yang lebih cocok; konfigurasi NPM berbasis SQLite adalah keterbatasan operasional utamanya.

Berapa RAM Minimum untuk Nginx Proxy Manager?

NPM sendiri idle di sekitar 50 MB RAM. VPS 1 GB adalah baseline praktis, cukup untuk NPM ditambah beberapa service ringan. 2 GB nyaman begitu Anda menambahkan lebih banyak aplikasi yang di-proxy. Kebutuhan RAM yang sebenarnya digerakkan oleh service di belakang NPM, bukan oleh NPM itu sendiri.

Haruskah Saya Mengekspos Port 81 ke Internet?

Tidak. Jaga agar port 81 terikat ke localhost dan akses melalui tunnel SSH, atau buat hanya dapat dijangkau melalui VPN privat. Jangan publikasikan antarmuka admin di IP publik VPS.

Bisakah Saya Menjalankan Nginx Proxy Manager Tanpa Docker?

Tidak. NPM didistribusikan dan dirancang sebagai container Docker, dan tidak ada instalasi non-Docker yang didukung. Jika Anda tidak bisa atau tidak mau menjalankan Docker, gunakan Nginx polos dengan Certbot, atau Caddy sebagai binary tunggal, sebagai gantinya.

Apakah Nginx Proxy Manager Mendukung Sertifikat Wildcard?

Ya, melalui challenge DNS-01 dengan penyedia DNS yang didukung dikonfigurasikan. Sertifikat hostname tunggal standar menggunakan challenge HTTP-01 melalui port 80; sertifikat wildcard (*.example.com) memerlukan DNS-01 karena certificate authority memvalidasi kendali dengan menulis record DNS alih-alih menjangkau satu host.

Bagikan

Lebih banyak dari blog

Lanjutkan membaca.

Siap deploy? Mulai $2,48/bln.

Cloud independen, sejak 2008. AMD EPYC, NVMe, 40 Gbps. Garansi uang kembali 14 hari.