Masdika Loading..
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portfolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Dari Laptop Bekas Jadi Server Pribadi: Cara Membangun Home Server Murah Menggunakan ISP MyRepublic dengan Public IP
  • Pembuatan Subnet dan Alokasi IP Address pada Amazon Web Service VPC
  • Instalasi dan Konfigurasi AWS CLI pada EC2 (Lab Guide)
  • Membangun Arsitektur Web + Database Highly Available di AWS (RDS Multi-AZ)
  • Cara Reset Password OpenBSD di Proxmox via VNC

Recent Comments

  1. Alif on Jangan Gunakan latest Tag pada Docker Images! Ini Alasannya
  2. Sahrull on Panduan Lengkap Anti-DDoS: Installasi Iptables, Hardening, dan Cloudflare Proxy
  3. VSTRA on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  4. Rikiy on Cara Mudah Deploy Website Node.js Menggunakan Docker
  5. Masdika.BIZ.ID on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy

Categories

  • Tutorial

Masdika.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.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
Related Posts
Cara Reset Password OpenBSD di Proxmox via VNC

Kalau kamu lupa password OpenBSD di VM Proxmox, kamu tidak perlu reinstall. Cukup masuk lewat VNC console dan reset dari…

Panduan Download ISO dan Aktivasi Red Hat No-Cost

Panduan ini menjelaskan cara mendapatkan Red Hat Enterprise Linux (RHEL) secara gratis (resmi) menggunakan Developer Subscription, mulai dari download ISO…

Post navigation

Prev
Next
Write a comment Cancel Reply


© 2025 www.masdika.id — Semua hak cipta dilindungi