VPS Guide · Self-Hosting
Nginx Proxy Manager คืออะไร? คู่มือติดตั้งและใช้งานบน VPS ฉบับสมบูรณ์ 2026
ถ้าคุณมี VPS และรัน service หลายตัว (เช่น WordPress, Nextcloud, Gitea, Vaultwarden) บน port ต่างๆ — คงเคยเจอปัญหาว่าจะ expose เป็น domain ยังไงโดยไม่ต้องจำ port พิจารณา Nginx Proxy Manager (NPM) เครื่องมือ Docker ที่ช่วยจัดการ reverse proxy ผ่าน Web UI สวยงาม พร้อม SSL ฟรีจาก Let's Encrypt ที่ต่ออายุอัตโนมัติ
สารบัญ
- Nginx Proxy Manager คืออะไร?
- ฟีเจอร์หลักและข้อดี
- ความต้องการระบบ
- ขั้นตอน 1 — ติดตั้ง Docker
- ขั้นตอน 2 — ติดตั้ง NPM ด้วย Docker Compose
- ขั้นตอน 3 — เข้าสู่ระบบครั้งแรก
- ขั้นตอน 4 — สร้าง Proxy Host แรก
- ขั้นตอน 5 — ตั้งค่า SSL Certificate
- ตั้งค่า Redirect
- Access List และ HTTP Auth
- จัดการหลายผู้ใช้
- ปัญหาที่พบบ่อย
- คำถามที่พบบ่อย
Nginx Proxy Manager คืออะไร?
Nginx Proxy Manager คือ Docker image open source ที่สร้างโดย Jamie Curnow (ชื่อใน GitHub: jc21) เพื่อให้ใครก็ตามสามารถตั้งค่า Nginx reverse proxy ได้โดยไม่ต้องเขียน config file ด้วยมือ เพียงแค่คลิกผ่าน Web UI
ปกติการตั้งค่า Nginx ต้องเขียน server block, จัดการ certbot, reload service เอง — ซึ่งใช้เวลาและเกิด error ได้ง่าย NPM ห่อหุ้มทุกอย่างไว้ในแดชบอร์ดเดียว
ฟีเจอร์หลักและข้อดีของ Nginx Proxy Manager
- Web UI สวยงาม — ใช้ Tabler เป็น frontend, ใช้งานง่ายไม่ต้องเขียน config
- SSL ฟรีจาก Let's Encrypt — ขอและต่ออายุ certificate อัตโนมัติ
- Proxy Hosts — forward domain ไปยัง service ภายใน (IP:Port)
- Redirections — redirect domain หนึ่งไปอีก domain
- Streams — TCP/UDP port forwarding สำหรับ non-HTTP traffic
- 404 Hosts — คืน 404 สำหรับ domain ที่ไม่ต้องการให้ access
- Access Lists — จำกัดการเข้าถึงด้วย IP whitelist หรือ HTTP Basic Auth
- หลายผู้ใช้ — User management พร้อม permission
- Audit Log — บันทึกกิจกรรมทั้งหมด
- Custom SSL — รองรับ certificate จากภายนอก (ไม่ต้องใช้ Let's Encrypt)
| ฟีเจอร์ | NPM | Traefik | Caddy |
|---|---|---|---|
| Web UI | สวยงาม | มี (พื้นฐาน) | ไม่มี (CLI/config) |
| SSL อัตโนมัติ | ใช่ | ใช่ | ใช่ |
| Docker-native | ใช่ | ใช่ | รองรับ |
| เหมาะกับ | Self-hosters | K8s/Microservices | Config-as-code |
| ความยาก | ง่ายมาก | กลาง-ยาก | กลาง |
ข้อมูล ณ ตุลาคม 2026 — ตรวจสอบล่าสุดที่เว็บผู้ให้บริการ
ความต้องการระบบ
ก่อนติดตั้ง NPM คุณต้องมี:
- VPS ที่รัน Linux (Ubuntu 20.04+, Debian 11+, หรือ Rocky Linux 8+)
- RAM อย่างน้อย 512 MB (แนะนำ 1 GB ขึ้นไปถ้ารัน service หลายตัว)
- Disk อย่างน้อย 10 GB
- Port 80, 81, 443 ต้องเปิดใน firewall
- Domain ที่ชี้ A Record มาที่ IP ของ VPS แล้ว
- Docker และ Docker Compose (ติดตั้งในขั้นตอนต่อไป)
ขั้นตอน 1 — ติดตั้ง Docker บน Ubuntu
SSH เข้า VPS แล้วรันคำสั่งต่อไปนี้ (Ubuntu 22.04/24.04):
# อัพเดท package list
sudo apt update && sudo apt upgrade -y
# ติดตั้ง dependencies
sudo apt install -y ca-certificates curl gnupg
# เพิ่ม Docker GPG key
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# เพิ่ม Docker repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# ติดตั้ง Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# เพิ่ม user เข้า docker group (ไม่ต้อง sudo ทุกครั้ง)
sudo usermod -aG docker $USER
newgrp docker
ทดสอบว่า Docker ทำงานได้:
docker --version
docker compose version
ขั้นตอน 2 — ติดตั้ง Nginx Proxy Manager ด้วย Docker Compose
สร้าง directory สำหรับ NPM:
mkdir ~/nginx-proxy-manager && cd ~/nginx-proxy-manager
สร้างไฟล์ docker-compose.yml:
nano docker-compose.yml
วางเนื้อหาต่อไปนี้:
services:
app:
image: 'docker.io/jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # HTTP traffic
- '81:81' # Admin UI
- '443:443' # HTTPS traffic
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
บันทึกไฟล์ (Ctrl+O, Enter, Ctrl+X) แล้วรัน:
docker compose up -d
ตรวจสอบว่า container กำลังรัน:
docker compose ps
ควรเห็น container state เป็น Up และ port 80, 81, 443 ถูก bind แล้ว
sudo ufw allow 80,81,443/tcp && sudo ufw reload
ขั้นตอน 3 — เข้าสู่ระบบครั้งแรก
เปิดเบราเซอร์ไปที่ http://<IP-ของ-VPS>:81 (เช่น http://123.45.67.89:81)
ครั้งแรก ระบบจะขอ login ด้วย default credentials:
- Email:
[email protected] - Password:
changeme
หลัง login ครั้งแรก ระบบจะขอให้เปลี่ยน email และ password ใหม่ทันที — ทำเดี๋ยวนี้เลย อย่าใช้ default password ใน production
แดชบอร์ดหลัก
หลัง login จะเห็น dashboard ที่แสดง:
- Proxy Hosts — จำนวน proxy ที่ตั้งค่าไว้
- Redirection Hosts — จำนวน redirect
- Streams — TCP/UDP forwarding
- Dead Hosts (404) — domain ที่คืน 404
ขั้นตอน 4 — สร้าง Proxy Host แรก
สมมติว่าคุณมี service รันอยู่ที่ localhost:3000 (เช่น Gitea, Nextcloud, หรือ app ของตัวเอง) และต้องการ expose ผ่าน domain app.example.com
ขั้นตอน:
- ไปที่ Hosts → Proxy Hosts
- คลิก "Add Proxy Host"
- กรอกข้อมูล:
- Domain Names:
app.example.com - Scheme:
http - Forward Hostname/IP:
localhostหรือ IP ของ container - Forward Port:
3000 - เปิด "Block Common Exploits"
- เปิด "Websockets Support" (ถ้า app ใช้ WebSocket)
- Domain Names:
- คลิก "Save"
การใช้ Docker Network
สร้าง shared network ชื่อ proxy_net:
docker network create proxy_net
แก้ไข docker-compose.yml ของ NPM:
services:
app:
image: 'docker.io/jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- proxy_net
networks:
proxy_net:
external: true
แล้วให้ service อื่นๆ join network เดียวกัน และใช้ container name เป็น Forward Hostname ใน NPM
ขั้นตอน 5 — ตั้งค่า SSL Certificate จาก Let's Encrypt
หลังสร้าง Proxy Host แล้ว ให้ตั้งค่า SSL:
- แก้ไข Proxy Host ที่ต้องการ → แท็บ "SSL"
- SSL Certificate: เลือก "Request a new SSL Certificate"
- เปิด "Force SSL" (redirect HTTP → HTTPS อัตโนมัติ)
- เปิด "HTTP/2 Support"
- กรอก Email address สำหรับ Let's Encrypt notifications
- ยอมรับ Terms of Service
- คลิก "Save"
NPM จะขอ certificate จาก Let's Encrypt โดยอัตโนมัติและจะ renew ให้ก่อนหมดอายุ (ใบ Let's Encrypt อายุ 90 วัน)
ตั้งค่า Redirect Host
Redirect ใช้สำหรับส่งผู้ใช้จาก domain หนึ่งไปอีก domain เช่น redirect www.example.com → example.com
- ไปที่ Hosts → Redirection Hosts
- คลิก "Add Redirection Host"
- กรอก Domain Names:
www.example.com - Forward Domain Name:
example.com - เลือก HTTP Code: 301 (permanent) หรือ 302 (temporary)
- เปิด SSL ถ้าต้องการ
- คลิก "Save"
Access List และ HTTP Basic Authentication
Access List ใช้จำกัดการเข้าถึง Proxy Host โดยกำหนดได้ว่า IP ไหนเข้าได้ หรือต้องใส่ username/password
สร้าง Access List
- ไปที่ Access Lists → Add Access List
- ตั้งชื่อ (เช่น "Admin Only")
- แท็บ Authorization: เพิ่ม username/password สำหรับ HTTP Auth
- แท็บ Access: กำหนด IP ที่อนุญาต (allow/deny)
- Save แล้วนำ Access List ไป assign กับ Proxy Host ที่ต้องการ
เหมาะกับใคร?
Nginx Proxy Manager เหมาะสำหรับ self-hosters และ DevOps ที่รัน service หลายตัวบน VPS เดียว ต้องการ UI ที่ใช้งานง่ายและ SSL อัตโนมัติโดยไม่ต้องเขียน Nginx config ด้วยมือ
การจัดการหลายผู้ใช้
NPM รองรับ multi-user ซึ่งเหมาะสำหรับทีมหรือการ delegate การจัดการ:
- Administrator: เข้าถึงทุกอย่างได้เต็มที่
- User: จัดการเฉพาะ host ที่ตัวเองสร้าง
เพิ่มผู้ใช้ใหม่: ไปที่ Users → Add User กรอก email/password และเลือก role ที่เหมาะสม
ปัญหาที่พบบ่อยและวิธีแก้
SSL Request ล้มเหลว
- ตรวจสอบว่า A Record ชี้ถูกต้องและ propagate แล้ว:
dig +short app.example.com - ตรวจสอบว่า port 80 เปิดอยู่:
sudo ufw statusหรือ iptables - ดู log:
docker compose logs app | grep -i error
502 Bad Gateway
- Service ปลายทางไม่ได้รัน หรือ port ผิด
- ถ้าใช้ Docker network ตรวจสอบว่า container อยู่ใน network เดียวกัน
- ทดสอบจาก VPS:
curl http://localhost:3000
Admin UI เข้าไม่ได้
- ตรวจสอบ container รันอยู่:
docker compose ps - ตรวจสอบ port 81 ไม่ถูก block:
sudo ufw allow 81/tcp - ดู log:
docker compose logs app
Upgrade NPM เป็น version ใหม่
docker compose pull
docker compose up -d
บทความที่เกี่ยวข้อง
ต้องการ VPS ที่เหมาะกับการรัน NPM?
แนะนำ VPS ที่มีเซิร์ฟเวอร์ในไทยและเอเชีย เพื่อ latency ต่ำและ support ภาษาไทย
ดู AsiaGB VPS ดู Bangmod Cloudคำถามที่พบบ่อย (FAQ)
Nginx Proxy Manager ฟรีไหม?
ใช่ NPM เป็น open source (MIT License) ใช้ได้ฟรีทั้งส่วนตัวและเชิงพาณิชย์ Docker image ดาวน์โหลดได้จาก Docker Hub
NPM รองรับ Wildcard SSL ได้ไหม?
ได้ แต่ต้องใช้ DNS Challenge แทน HTTP Challenge กำหนดได้ใน SSL tab โดยเลือก DNS challenge provider (Cloudflare, Route53 ฯลฯ) พร้อมกรอก API key
NPM ใช้ฐานข้อมูลอะไร?
ค่าเริ่มต้น NPM ใช้ SQLite ในตัว สำหรับ production scale ขนาดใหญ่รองรับ MySQL/MariaDB แต่สำหรับ self-hosting ทั่วไป SQLite เพียงพอแล้ว
NPM ต้องการ armv7 ได้ไหม?
NPM เวอร์ชัน 2.14+ ไม่รองรับ armv7 แล้ว (เนื่องจาก Node.js drop support) ถ้าใช้ Raspberry Pi รุ่นเก่าต้องใช้ image tag 2.13.7
ควร expose port 81 (Admin UI) ต่อ internet หรือไม่?
ไม่ควร แนะนำปิด port 81 จากภายนอก (sudo ufw delete allow 81/tcp) แล้วใช้ SSH tunnel หรือ VPN เพื่อ access Admin UI ด้วยความปลอดภัยสูงสุด
สรุป
Nginx Proxy Manager (เวอร์ชัน 2.16.0 ณ ตุลาคม 2026) เป็นเครื่องมือที่ดีที่สุดสำหรับ self-hosters ที่ต้องการ reverse proxy + SSL อัตโนมัติโดยไม่ต้องผ่านความยุ่งยากของ Nginx config
จุดแข็งคือ Web UI ใช้ง่าย ฟรี 100% และ community ขนาดใหญ่บน Reddit และ GitHub Discussions จุดอ่อนคือไม่เหมาะสำหรับ environment ที่ต้องการ config-as-code หรือ integration กับ Kubernetes ซึ่งในกรณีนั้น Traefik หรือ Ingress Controller ตรงกว่า
แต่ถ้าคุณมี VPS และอยากรัน 5-20 service พร้อม SSL ฟรีและ UI สวยงาม — NPM ตอบโจทย์ได้ดีมาก