Masdika Loading..
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portofolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.BIZ.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Cara Deploy WordPress di Kubernetes Lengkap dengan SSL Let’s Encrypt
  • Panduan Lengkap Install MetalLB di Kubernetes (VPS/Bare Metal) dengan IP Publik
  • Panduan Lengkap Deploy Ingress NGINX dan Cert-Manager Kubernetes dengan HTTPS Otomatis (Let’s Encrypt)
  • Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  • Monitoring Docker Container dengan CAdvisor, Node Exporter, Prometheus, dan Grafana

Recent Comments

  1. Masdika.BIZ.ID on Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  2. wwqqs on Cara Install Kubernetes dengan Ansible di 2 Server (Master dan Worker)
  3. Rio Ardiansyah on Panduan Lengkap Redis Docker untuk WordPress
  4. Masdika.BIZ.ID on Cara Monitoring Status Disk RAID di Server Dell Menggunakan Bash Script dan PercCLI
  5. fafiki on Cara Monitoring Status Disk RAID di Server Dell Menggunakan Bash Script dan PercCLI

Archives

  • July 2025
  • June 2025

Categories

  • Tutorial

Masddika.BIZ.ID

  • About
  • Terms & Conditions
  • Privacy Policy
Blog Post

Install Nginx Proxy Manager: Panduan Lengkap Setup Reverse Proxy Berbasis Docker

June 21, 2025 Tutorial by Masdika.BIZ.ID
Install Nginx Proxy Manager: Panduan Lengkap Setup Reverse Proxy Berbasis Docker

🔍 Apa itu Nginx Proxy Manager?

Nginx Proxy Manager (NPM) adalah alat berbasis web yang memungkinkan pengguna untuk mengelola Nginx sebagai reverse proxy dengan antarmuka grafis (GUI) yang intuitif. Tanpa perlu menulis konfigurasi Nginx manual, Anda bisa:

  • Mengarahkan domain ke layanan internal (proxy host)
  • Mengelola SSL Let’s Encrypt otomatis
  • Membuat redirection dan stream host
  • Mengatur akses login ke panel admin

Dengan dukungan multi-user, dashboard modern, dan notifikasi log lengkap, NPM menjadi solusi ideal untuk server self-hosted seperti Home Assistant, Nextcloud, atau WordPress.

⚙️ Fitur Utama Nginx Proxy Manager

  • ✅ Panel Admin Web (default: port 81)
  • ✅ Mendukung HTTP/HTTPS (port 80 dan 443)
  • ✅ Otomatisasi SSL Let’s Encrypt
  • ✅ Reverse Proxy mudah untuk layanan internal
  • ✅ Dukungan untuk SQLite, MariaDB, MySQL, dan Postgres
  • ✅ Wildcard SSL dan DNS challenge (Cloudflare)
  • ✅ Access control dan logging
  • ✅ Backup & Restore manual (data dan sertifikat)

🚀 Cara Install Nginx Proxy Manager Menggunakan Docker

1. Buat File docker-compose.yml

Contoh konfigurasi default dengan SQLite:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'     # HTTP
      - '443:443'   # HTTPS
      - '81:81'     # Admin Panel
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Jalankan dengan:

docker compose up -d

2. Akses Dashboard NPM

Buka browser dan akses:

http://<ip-server>:81

Login Default:

  • Email: admin@example.com
  • Password: changeme

Setelah login, Anda akan diminta mengubah password dan email.

🧱 Struktur Direktori Penting

  • ./data → Menyimpan data pengguna, pengaturan host, logs
  • ./letsencrypt → Sertifikat SSL
  • ./mysql atau ./postgres → Data database jika digunakan

🧩 Opsi: Menggunakan MySQL atau MariaDB

Jika Anda membutuhkan performa lebih baik dari SQLite, gunakan MySQL/MariaDB:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: 'jc21/mariadb-aria:latest'
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./mysql:/var/lib/mysql

🔔 Penting: Variabel DB_MYSQL_* akan menggantikan penggunaan SQLite secara otomatis.

🗃️ Opsi: Menggunakan PostgreSQL

Untuk pengguna PostgreSQL:

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
      - '81:81'
    environment:
      DB_POSTGRES_HOST: 'db'
      DB_POSTGRES_PORT: '5432'
      DB_POSTGRES_USER: 'npm'
      DB_POSTGRES_PASSWORD: 'npmpass'
      DB_POSTGRES_NAME: 'npm'
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    depends_on:
      - db

  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: 'npm'
      POSTGRES_PASSWORD: 'npmpass'
      POSTGRES_DB: 'npm'
    volumes:
      - ./postgres:/var/lib/postgresql/data

🔔 Skema custom di PostgreSQL tidak didukung, hanya skema default public.

🍓 Menjalankan di Raspberry Pi / Arsitektur ARM

Image Docker jc21/nginx-proxy-manager:latest sudah mendukung berbagai arsitektur, termasuk:

  • amd64
  • arm64 (seperti Raspberry Pi 4 64-bit)
  • armv7 (seperti Raspberry Pi 3)

Tidak diperlukan konfigurasi tambahan untuk menjalankannya di perangkat ARM.

Namun, jika Anda mengalami masalah dengan image database bawaan jc21/mariadb-aria:latest, disarankan menggunakan alternatif berikut yang lebih kompatibel di ARM:

yobasystems/alpine-mariadb:latest

🧱 Struktur Direktori Penting

  • ./data → Menyimpan pengaturan, data user, config host
  • ./letsencrypt → Menyimpan sertifikat SSL
  • ./mysql, ./postgres → Menyimpan data database jika menggunakan MySQL/Postgres

🔐 Tips Keamanan dan Personalisasi

  • Ubah email dan password default segera setelah login
  • Gunakan environment:
environment:
  INITIAL_ADMIN_EMAIL: admin@domain.com
  INITIAL_ADMIN_PASSWORD: passku123
  • Pastikan port 80 dan 443 tidak digunakan oleh aplikasi lain
  • Gunakan DNS yang sudah mengarah ke IP server untuk sukses validasi SSL

📦 Backup & Restore

Backup:

  • ./data dan ./letsencrypt → Copy atau rsync ke storage lain
  • Database volume ./mysql atau ./postgres

Restore:

  • Deploy ulang menggunakan docker-compose up -d
  • Pastikan struktur folder sama dan volume sudah restore

📊 Contoh Penggunaan Umum

  1. Reverse Proxy Home Assistant
    • Domain: ha.domain.com
    • Forward ke http://192.168.1.5:8123 atau bisa juga menggunakan nama container seperti http://home-assistant:8123
    • Enable SSL + Force HTTPS
  2. Subdomain Multisite
    • blog1.domain.com, blog2.domain.com
    • Redirect ke kontainer berbeda dengan format http://nama-container:port
  3. Stream Host for FTP/SSH
    • Anda bisa meneruskan koneksi TCP ke port tertentu seperti FTP (21) atau SSH (22) ke container atau IP tertentu di jaringan internal.
    • Contoh:
      • Domain: ssh.domain.com
      • Port: 22
      • Forward Hostname/nama container/IP: 192.168.1.10
      • Forward Port: 22
      • Protokol: TCP
    • Pastikan Anda mengatur Stream Host di menu NPM (bukan Proxy Host) untuk jenis koneksi TCP selain HTTP/HTTPS.

📌 Catatan: Saat mengisi kolom “Forward Hostname / IP” di NPM, Anda bisa menggunakan:

  • IP lokal dari container (misalnya: 192.168.1.x)
  • Nama container yang sama seperti yang didefinisikan di docker-compose.yml

Selama container berada dalam jaringan Docker yang sama (bridge atau custom network), penamaan antar container dapat digunakan.

🌐 Kapan Harus Gunakan NPM?

Gunakan Nginx Proxy Manager jika Anda:

  • Mengelola banyak aplikasi dengan subdomain berbeda
  • Ingin SSL otomatis tanpa sertifikat manual
  • Membutuhkan dashboard user-friendly
  • Tidak ingin ribet konfigurasi Nginx CLI

🌟 Kesimpulan

Dengan Nginx Proxy Manager, mengelola reverse proxy dan SSL menjadi mudah, cepat, dan aman. Baik untuk server rumah, bisnis kecil, atau proyek self-hosted, NPM menyediakan antarmuka yang powerful dengan setup berbasis Docker. Anda dapat menyesuaikan database, skema jaringan, serta keamanannya sesuai kebutuhan.

Share:
Tags: linuxnginx proxy managerreverse proxy

Post navigation

Prev
Next
Write a comment Cancel Reply

© 2025 www.masdika.biz.id — Semua Hak Dilindungi