Nginx Proxy Manager (NPM) คือ Reverse Proxy ที่นิยมที่สุดสำหรับ Docker เพราะมี Web UI สวยงาม ตั้งค่าได้โดยไม่ต้องเขียน Config ไฟล์ รองรับ Let’s Encrypt SSL อัตโนมัติ และ Proxy แบบ Click-and-Go บทความนี้จะนำคุณติดตั้งและตั้งค่าเริ่มต้นจนพร้อมใช้งาน
ความต้องการเบื้องต้น
- VPS หรือ Linux Server ที่ติดตั้ง Docker แล้ว
- Domain Name ที่ชี้ A Record ไปยัง IP ของเซิร์ฟเวอร์แล้ว
- Port 80 และ 443 เปิดอยู่ใน Firewall
- ไม่มีเซอร์วิชอื่นใช้ Port 80/443 อยู่
สร้างไฟล์ docker-compose.yml
mkdir npm-stack && cd npm-stack
สร้างไฟล์ docker-compose.yml:
version: '3.8'
services:
npm:
image: jc21/nginx-proxy-manager:latest
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
- "81:81" # NPM Admin UI
volumes:
- npm_data:/data
- npm_letsencrypt:/etc/letsencrypt
networks:
- proxy_network
volumes:
npm_data:
npm_letsencrypt:
networks:
proxy_network:
external: false
รัน Nginx Proxy Manager
docker compose up -d
docker compose ps
หลังรันแล้ว เปิด Browser ไปที่ http://your-server-ip:81 เพื่อเข้าสู่ Admin UI
เข้าสู่ Admin UI ครั้งแรก
รหัส Login เริ่มต้นที่ตั้งค่ามาพร้อม:
| ข้อมูล | ค่า |
|---|---|
| [email protected] | |
| Password | changeme |
ระบบจะขอเปลี่ยนชื่อ, อีเมล และรหัสทันทีเมื่อ Login ครั้งแรก ต้องเปลี่ยนทันที
โครงสร้างไฟล์สำหรับ Production
สำหรับ Production แนะนำให้สร้าง .env และใช้ External Network เพื่อเชื่อมต่อกับ Stack อื่น:
# สร้าง External Network ที่ Stack อื่นจะสามารถเชื่อมต่อได้
docker network create proxy_network
แล้วแก้ไข docker-compose.yml ของ NPM:
networks:
proxy_network:
external: true # ← เปลี่ยนเป็น external: true
สั่งให้ Container อื่น (WordPress, Node.js หรือ API) เชื่อมต่อ Network เดียวกัน:
services:
wordpress:
image: wordpress:latest
networks:
- proxy_network # เชื่อมต่อ Network เดียวกันกับ NPM
networks:
proxy_network:
external: true
หน้าต่างหลักใน Admin UI
| เมนู | หน้าที่ |
|---|---|
| Proxy Hosts | ตั้งค่า Domain เพื่อส่งต่อไปยัง Container |
| Redirections | ตั้งค่า Redirect URL |
| SSL Certificates | จัดการ SSL Certificate |
| Access Lists | กำหนดสิทธิ์การเข้าถึง (IP Whitelist) |
| Users | จัดการ Admin Users |
สรุป
| สิ่งที่ติดตั้ง | รายละเอียด |
|---|---|
| NPM Container | image: jc21/nginx-proxy-manager |
| Admin UI Port | 81 — ผูกกับ Host |
| HTTP/HTTPS Ports | 80 และ 443 — สำหรับ Traffic จริง |
| Volumes | npm_data, npm_letsencrypt — เก็บ Config และ SSL |
| Network | proxy_network — เชื่อมต่อ Container อื่น |
บทความถัดไป เราจะเรียนรู้วิธีการตั้งค่า Proxy Host ใน NPM เพื่อเพิ่ม Domain และ HTTPS ให้กับ Container ของคุณด้วย Let’s Encrypt SSL เพียงไม่กี่คลิก

