Cara Instal Nginx Proxy Manager
Nginx selain berfungsi sebagai webserver juga menawarkan fitur reverse proxy
. Reverse proxy
merupakan sebuah server yang berdiri di depan web-server dan bertugas untuk meneruskan request dari client ke web-server yang ada di belakang reverse proxy
tersebut. Untuk melakukan konfigurasi reverse proxy
pada Nginx mungkin akan sedikit membingungkan dan rawan kesalahan.
Untuk solusi tersebut, kita bisa menggunakan Nginx Proxy Manager (NPM). Nginx Proxy Manager merupakan reverse proxy
yang berbasis Nginx-server
dan juga Docker-based
. Karena merupakan Docker-based, jadi tidak masalah ingin dijalankan di distro linux apa saja. Pada artikel ini, penulis akan menginstal NPM di Debian 11.
Langkah 1 : Instal Docker
Jalankan perintah berikut untuk menginstal docker.
$ sudo apt install ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
Jalankan perintah berikut untuk menambahkan user
saat ini ke dalam group docker
.
$ sudo usermod -aG docker $USER
Langkah 2 : Instal docker-compose
Jalankan perintah berikut untuk mendownload file binary docker-compose
.
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Jalankan perintah berikut untuk membuat file binary docker compose menjadi file executable
.
$ sudo chmod +x /usr/local/bin/docker-compose
Langkah 3 : Membuat File docker-compose
Buat direkori untuk menyimpan konfigurasi nginx proxy manager, dengan nama nginx-proxy
$ mkdir nginx-proxy && cd nginx-proxy
Buat sebuah file dengan nama docker-compose.yml
$ vim docker-compose.yml
Buat 2 direkori yang masing-masing untuk menyimpan user data and sertifikat SSL.
$ mkdir {data,letsencrypt}
Salin baris kode berikut ke dalam file docker-compose.yml
version: "3"
services:
npm-app:
image: 'jc21/nginx-proxy-manager:latest'
container_name: npm-app
restart: unless-stopped
ports:
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
# Add any other Stream port you want to expose
# - '21:21' # FTP
environment:
DB_MYSQL_HOST: "npm-db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
# Uncomment the line below if IPv6 is not enabled on your host
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- npm-db
networks:
- npm-nw
- npm-internal
npm-db:
image: 'mariadb:latest'
container_name: npm-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./data/mysql:/var/lib/mysql
networks:
- npm-internal
networks:
npm-internal:
npm-nw:
external: true
Langkah 4 : Membuat docker-network untuk Nginx Proxy Manager
Jalankan perintah berikut untuk membuat internal network nginx proxy manager.
$ docker network create npm-nw
Langkah 5 : Menjalankan Nginx Proxy Manager
Masih di dalam direktori nginx-proxy
jalankan perintah berikut.
$ docker-compose up -d
Setelah selesai ter-build, cek containernya dengan perintah berikut.
$ docker ps
Pada bagian status, cek dan pastikan container nya dalam state Up
.
Kemudian kita bisa akses control panel Nginx Proxy Manager via web browser menggunakan Ip address server dan port 81.
http://IP_Address:81
Jika berhasil akan muncul tampilan login seperti gambar berikut.
Silahkan login dengan kredensial default :
Email address: admin@example.com
Password: changeme
Selanjutnya akan diminta untuk mengatur nama dan email.
Kemudian akan diminta untuk mengisi password login. Untuk current password
diisi dengan password default seperti saat pertama kali login.
Selain itu jika membuka URL http://IP_Address/
, akan muncul halaman default yang disediakan oleh nginx proxy manager.
Langkah 6 : Setting Domain dan SSL untuk Control Panel Nginx Proxy Manager
Ketimbang mengakses control panel NPMnya dengan IP address kita bisa menggunakan domain agar lebih mudah untuk mengaksesnya dengan memanfaat fitur proxy host. Dengan catatan domain tersebut dipointing ke IP Address server yang digunakan untuk menginstall nginx proxy manager.
Dari menu Host pilih Proxy Host kemudian klik Add Proxy Host. Pada bagian Domain Names
silahkan tambahkan domain yang sesuai dengan FQDN kemudian enter. Isi bagian Forward Hostname
dengan IP Address server nginx proxy manager. Tambahkan Forward Port
dengan nilai 81, dan enable Block Common Exploits
.
Kemudian pindah ke tab SSL. Pada bagian SSL Certificate
pilih Request a new SSL Certificate
. Aktifkan pilihan Force SSL
dan HTTP/2 Support
.Isi email dengan email Anda dan centang Term of Service.
Jika sudah selesai, domain yang sudah ditambahkan sudah bisa digunakan untuk mengakses control panel nginx proxy manager dan tentunya sudah memiliki sertifikat SSL.
Studi Kasus : Membuat Reverse Proxy untuk Web Server
Untuk real-casenya, kita akan coba mendemokan bagaimana Nginx Proxy digunakan untuk memforward request dari client/user menuju web server.
Pastikan sudah menyediakan satu subdomain yang dipointing ke VPS nginx proxy manager.
Caranya mirip dengan Langkah 6. Perbedaanya hanya pada IP tujuan web servernya dan juga port yang digunakan, begitu juga untuk retrieve sertifikat sslnya juga sama dengan langkah sebelumnya.
Silahkan save kemudian tunggu hingga proses pembuatan proxy-nya selesai.
Jika sudah selesai silahkan tes akses ke subdomain tersebut, dan cek url-nya apakah sudah memiliki ssl.
Demikian penjelasan singkat mengenai reverse proxy dan juga cara instal nginx proxy manager. Semoga bermanfaat.