ข้ามไปยังเนื้อหาหลัก
ลด 50% ทุกแพลน เวลาจำกัด เริ่มต้นที่ $2.48/mo
14 min left
เว็บและแอปธุรกิจ

Nginx Proxy Manager บน VPS รีวิวและคู่มือการติดตั้ง

C โดย Chike 14 นาทีในการอ่าน
Nginx Proxy Manager on a VPS routing one public IP to Dashboard, Media Server, Database, and Blog containers over HTTPS

คุณมี VPS ที่มีบริการ Docker ห้าหรือหกตัวอยู่ ได้แก่ Nextcloud, Uptime Kuma, บล็อก Ghost และอาจมี Vaultwarden มี public IP เดียว และคุณต้องการให้แต่ละบริการอยู่บนซับโดเมนของตัวเองพร้อม HTTPS โดยไม่ต้องแก้ไขไฟล์ตั้งค่า Nginx ด้วยมือทุกครั้งที่เพิ่มคอนเทนเนอร์ นั่นคือปัญหาที่ Nginx Proxy Manager ถูกสร้างมาเพื่อแก้ไขโดยเฉพาะ

นี่คือทั้งรีวิวและการติดตั้ง Nginx Proxy Manager บน VPS แบบครบถ้วนในคู่มือเดียว Nginx Proxy Manager (NPM) เป็นแอป Docker ที่ห่อ Nginx ไว้ใน UI บนเว็บ คุณสามารถชี้ซับโดเมนไปยังคอนเทนเนอร์ backend และขอใบรับรอง Let's Encrypt ผ่านแดชบอร์ดแทนการเขียน directive ด้วยมือ คู่มือนี้สำหรับผู้ที่โฮสต์เองและผู้ดูแลระบบที่ใช้ Docker อยู่แล้วและตอนนี้ต้องการ reverse proxy ที่ไม่ต้องแตะต้อง nginx.conf.

เมื่อจบบทนี้คุณจะรู้ว่า NPM เหมาะกับกรณีของคุณหรือไม่ คุณจะทำให้มันทำงานพร้อม HTTPS บน VPS ของคุณ และคุณจะรู้เกณฑ์การเปลี่ยนไปใช้ Caddy หรือ Traefik เมื่อ NPM ไม่ใช่เครื่องมือที่เหมาะสมอีกต่อไป

เวอร์ชันสั้น

  • NPM คืออะไร แอป Docker ที่วาง UI บนเว็บไว้เหนือ Nginx สำหรับจัดการ proxy host และ HTTPS ผ่าน Let's Encrypt แบบอัตโนมัติ เหมาะกับผู้ที่ต้องการ GUI และรัน stack ของบริการขนาดเล็กที่ค่อนข้างคงที่
  • ข้อแลกเปลี่ยน การตั้งค่าจัดเก็บอยู่ในฐานข้อมูล SQLite จึงไม่สามารถควบคุมเวอร์ชันหรือเปรียบเทียบความแตกต่างได้เหมือนไฟล์ตั้งค่า ณ วันที่ 12 กรกฎาคม 2026 รุ่นที่ติดแท็กล่าสุดได้รับผลกระทบจาก CVE-2026-40519 ดังนั้นการติดตั้งใหม่ควรรอรุ่นที่ติดแท็กซึ่งมีการแก้ไข แผงผู้ดูแลระบบบนพอร์ต 81 คือสิ่งหลักที่คุณต้องล็อกให้แน่นหนา
  • การกำหนดขนาด NPM เองใช้ RAM ประมาณ 50 MB ในสภาวะว่าง VPS ขนาด 1 GB เป็นเกณฑ์ขั้นต่ำที่ใช้งานได้จริง ส่วน 2 GB จะสบายเมื่อคุณเพิ่มบริการที่อยู่ด้านหลังเข้าไป
  • เมื่อใดควรเปลี่ยน อยู่กับ NPM ต่อไปสำหรับ stack ขนาดเล็กที่ส่วนใหญ่คงที่และการมี GUI มีความสำคัญ ใช้ Caddy เมื่อคุณต้องการการตั้งค่าแบบโค้ดและใช้ทรัพยากรน้อยลง ใช้ Traefik เมื่อการเปลี่ยนคอนเทนเนอร์บ่อยครั้งทำให้การค้นหาอัตโนมัติของ Docker มีค่ามากกว่าการลงทะเบียนโฮสต์ด้วยมือ

สิ่งที่คู่มือนี้ไม่ครอบคลุม

นี่คือคู่มือการติดตั้งบน VPS ไม่ใช่คู่มืออ้างอิง เพื่อให้เนื้อหากระชับ สิ่งต่อไปนี้อยู่นอกขอบเขต

  • การปรับแต่ง directive ของ Nginx เชิงลึก (custom location block ที่เกินกว่าที่ UI ของ NPM เปิดให้ใช้)
  • สถาปัตยกรรม load balancing ในระดับใหญ่
  • การเปรียบเทียบ ingress ของ Kubernetes
  • NPM บน Windows
  • เส้นทาง Cloudflare Tunnel สำหรับการตั้งค่าที่ไม่มี static IP

Nginx Proxy Manager ทำอะไร (และจุดที่อาจสร้างปัญหาให้คุณ)

Nginx Proxy Manager taking one public IP and routing subdomains such as app, status, cloud, and vault.example.com to separate backend containers, each with SSL enabled

Nginx Proxy Manager เป็นแอปพลิเคชัน Docker ที่รัน Nginx อยู่ข้างใต้และเพิ่มแดชบอร์ดบนเว็บไว้ด้านบน คุณสร้าง proxy host (ซับโดเมนไปยังคอนเทนเนอร์ backend และพอร์ต) และขอใบรับรอง Let's Encrypt ผ่านฟอร์มแทนไฟล์ตั้งค่า เหมาะกับ stack ขนาดเล็กที่ค่อนข้างคงที่ของแอปที่โฮสต์เองบน VPS เครื่องเดียว

นอกเหนือจากพื้นฐานแล้ว แดชบอร์ดยังจัดการรายการควบคุมการเข้าถึงและการส่งต่อสตรีม TCP/UDP แบบดิบด้วย สำหรับ stack ของแอปบน VPS เครื่องเดียว นั่นเป็นความสะดวกอย่างแท้จริง คุณเพิ่มคอนเทนเนอร์ เปิดแดชบอร์ด ชี้ซับโดเมนไปยังมัน คลิกเพื่อออกใบรับรอง เสร็จ

ข้อแลกเปลี่ยนหลักคือการตั้งค่าที่เป็นแหล่งอ้างอิงหลักของ NPM จัดเก็บอยู่ในฐานข้อมูล SQLite โดยค่าเริ่มต้น NPM สร้างไฟล์ Nginx ที่อ่านได้ไว้ภายใต้ /data/nginx/proxy_host/ แต่ไฟล์เหล่านั้นเป็นสิ่งที่ถูกสร้างขึ้นมา ไม่ใช่การตั้งค่าแบบประกาศที่คุณแก้ไขและควบคุมเวอร์ชันได้ คุณตรวจสอบได้ แต่ไม่ใช่ทางเลือกที่สะอาดแทน Caddyfile หรือ label ของ Traefik และวิธีที่เชื่อถือได้ในการสร้างการติดตั้งขึ้นมาใหม่คือการกู้คืน volume ข้อมูลและใบรับรองของ NPM สำหรับ stack ขนาดเล็กที่คงที่ นั่นอาจยอมรับได้ แต่สำหรับ workflow โครงสร้างพื้นฐานที่ขับเคลื่อนด้วย Git นี่เป็นข้อจำกัดที่แท้จริง

ณ วันที่ 12 กรกฎาคม 2026 รุ่นที่ติดแท็กล่าสุด คือ v2.15.1 เผยแพร่เมื่อวันที่ 3 มิถุนายน 2026 โปรเจกต์ยังคงมีการพัฒนาต่อเนื่องและ ใช้สัญญาอนุญาต MIT แต่สถานะความปลอดภัยในปัจจุบันมีข้อควรระวังสำคัญ NVD ระบุว่าเวอร์ชัน 2.9.14 ถึง 2.15.1 ได้รับผลกระทบจาก CVE-2026-40519, ช่องโหว่ command-injection ที่ต้องผ่านการยืนยันตัวตน ซึ่งแก้ไขแล้วใน commit a5db5ed แต่ยังไม่ได้รวมอยู่ในรุ่นที่ติดแท็กใหม่กว่า ก่อนติดตั้ง ให้ตรวจสอบหน้าการเผยแพร่รุ่นและใช้เวอร์ชันที่ติดแท็กแรกที่มีการแก้ไขนั้น NPM ยังได้รับการดูแลอยู่ แต่ในปัจจุบันไม่ควรอธิบายว่า v2.15.1 ได้รับการแพตช์ครบถ้วนแล้ว

ในแง่การใช้ทรัพยากร NPM ใช้ RAM ในสภาวะว่างประมาณ 50 MB ตาม การเปรียบเทียบ reverse-proxy ของ byte-guard. นั่นเบาพอที่ NPM แทบไม่เคยเป็นสิ่งที่สร้างภาระให้ VPS ของคุณ สิ่งที่สร้างภาระคือบริการที่อยู่ด้านหลังต่างหาก

ความเห็นของผม NPM เป็นตัวเลือกที่สมเหตุสมผลในปี 2026 หากคุณต้องการ GUI และรัน Docker stack ขนาดเล็ก หากคุณใช้ชีวิตอยู่กับการควบคุมเวอร์ชันและต้องการเก็บการตั้งค่าพร็อกซีไว้ใน Git ให้พิจารณา Caddy แทน การตั้งค่าที่รองรับด้วย SQLite คือปัจจัยชี้ขาด ไม่ใช่เพราะมีอะไรผิดปกติกับการทำพร็อกซีเอง

NPM แลกความสามารถในการเคลื่อนย้ายการตั้งค่ากับการมี GUI การแลกนั้นดีสำหรับ stack ขนาดเล็กที่คงที่ และน่ารำคาญสำหรับ workflow ที่ขับเคลื่อนด้วย Git

NPM เทียบกับ Caddy เทียบกับ Traefik reverse proxy ตัวไหนเหมาะกับ VPS ของคุณ

NPM, Caddy, and Traefik compared: NPM is a GUI for small static stacks at about 50 MB idle, Caddy is config-as-code for simple deployments at about 30 MB, and Traefik uses Docker auto-discovery for changing containers at about 80 MB

เครื่องมือทั้งสามแยกจากกันตามสี่แกนที่ตัดสินทางเลือก ได้แก่ วิธีที่คุณตั้งค่ามัน วิธีที่มันจัดการ HTTPS วิธีที่มันปรับขนาดตามจำนวนบริการ และปริมาณ RAM ที่ใช้ในสภาวะว่าง นี่คือการเปรียบเทียบ

คุณลักษณะผู้จัดการพร็อกซี่ NginxCaddyTraefik
รูปแบบการตั้งค่าGUI บนเว็บ จัดเก็บใน SQLiteCaddyfile (ข้อความ ควบคุมเวอร์ชันได้)Docker label / YAML
HTTPS อัตโนมัติได้ ขอต่อโฮสต์ใน UIได้ โดยค่าเริ่มต้น ไม่ต้องตั้งค่าได้ ต้องตั้งค่า ACME resolver
การค้นหาอัตโนมัติของ DockerNoNoได้ ผ่าน label ของคอนเทนเนอร์
RAM ในสภาวะว่าง~50 MB~30 MB~80 MB
กรณีที่เหมาะสมที่สุดผู้ใช้ GUI, stack ขนาดเล็ก/คงที่การตั้งค่าแบบโค้ด ใช้ทรัพยากรน้อยที่สุดDocker stack แบบไดนามิกที่มีการเปลี่ยนคอนเทนเนอร์บ่อย

ตัวเลข RAM ในสภาวะว่างเป็นการสังเกตโดยประมาณจาก การเปรียบเทียบหนึ่งในปี 2026 ไม่ใช่ข้อกำหนดตายตัว การใช้งานจริงแตกต่างกันไปตามเวอร์ชันของ image ฟีเจอร์ที่เปิดใช้ ทราฟฟิก และการบันทึกล็อก

เกณฑ์การเปลี่ยนเครื่องมือเป็นไปตามตารางนั้นโดยตรง หากคุณต้องการแดชบอร์ดและรันบริการไม่กี่ตัวที่ไม่ค่อยเปลี่ยน NPM คือเครื่องมือที่เหมาะสม หากคุณชอบการตั้งค่าแบบโค้ด ต้องการใช้ทรัพยากรน้อยที่สุด หรือชื่นชอบ การจัดหาและต่ออายุ HTTPS อัตโนมัติโดยไม่ต้องตั้งค่า ACME ของ Caddy, ให้ใช้ Caddy ผมเองเลือกใช้ Caddy สำหรับการติดตั้งเว็บไซต์เดียวเพราะการจัดการ SSL เป็นอัตโนมัติและ Caddyfile สั้น หากคุณเพิ่ม ลบ หรือติดตั้งคอนเทนเนอร์ใหม่บ่อยครั้ง การค้นหาอัตโนมัติแบบใช้ label ของ Traefik หมายความว่าคุณเลิกลงทะเบียนโฮสต์ใหม่ทุกตัวด้วยมือ

ยังมี Nginx ล้วนคู่กับ Certbot ซึ่งผู้ดูแลระบบบางคนชอบมากกว่าเพื่อการควบคุมที่แม่นยำหรือการติดตั้งที่ไม่ใช้ Docker Certbot สามารถต่ออายุใบรับรองอัตโนมัติได้ แต่คุณยังต้องจัดการการกำหนดเส้นทาง virtual-host และการตั้งค่า Nginx ด้วยตัวเอง หากเหตุผลหลักที่คุณพิจารณา NPM คือการหลีกเลี่ยงการตั้งค่าพร็อกซีด้วยมือ Nginx ล้วนก็ไม่น่าจะเหมาะกว่า

ข้อสังเกตหนึ่งเกี่ยวกับทางเลือก การเปรียบเทียบของ byte-guard สรุปว่า Caddy เป็นตัวเลือกที่เบาที่สุดในการเปรียบเทียบนั้น และสำหรับการตั้งค่าโฮสต์เดียวใหม่ในปี 2026 นั่นเป็นทางเลือกที่สมเหตุสมผล Caddy ชนะในเรื่องเบากว่า NPM แต่หากคุณต้องการ GUI โดยเฉพาะ มันก็ไม่ใช่ตัวเลือกที่ดีที่สุดสำหรับคุณ

สำหรับการเปรียบเทียบเชิงลึกแบบเคียงข้างกันของเอนจินพื้นฐาน ดู การเปรียบเทียบ Caddy กับ Nginx บน VPS.

ข้อกำหนดเบื้องต้น: สิ่งที่คุณจะต้องมี

ก่อนติดตั้ง ให้เตรียมสิ่งเหล่านี้ให้พร้อม นี่เป็นรายการสั้นๆ แต่หากข้ามข้อใดไป ขั้นตอนใบรับรองจะล้มเหลวในภายหลัง

  • VPS ที่มี ติดตั้ง Docker และ Docker Compose แล้ว (Ubuntu 22.04 LTS หรือ Debian 12 ก็ใช้ได้)
  • ชื่อโดเมน พร้อม เรกคอร์ด DNS A (และ AAAA หากคุณใช้ IPv6) ที่ชี้ไปยัง public IP ของ VPS ของคุณ
  • สิทธิ์เข้าถึง SSH ไปยัง VPS
  • พอร์ต 80 และ 443 เปิดสู่อินเทอร์เน็ตบนไฟร์วอลล์ของคุณ
  • พอร์ต 81 เข้าถึงได้เฉพาะคุณเท่านั้น ไม่เปิดสู่สาธารณะ (ครอบคลุมในส่วนความปลอดภัย)

การติดตั้ง Nginx Proxy Manager บน VPS ของคุณด้วย Docker Compose

Deploying Nginx Proxy Manager with Docker Compose: ports 80 and 443 public, the admin UI on port 81 bound to 127.0.0.1, and backend containers joined to a shared proxy Docker network

ส่วนนี้ติดตั้ง NPM โดยใช้ Docker Compose เมื่อเรกคอร์ด DNS ของคุณแปลงชื่อไปยัง VPS แล้ว การตั้งค่าคอนเทนเนอร์เองจะรวดเร็ว แม้ว่าการกระจาย DNS และการออกใบรับรองอาจใช้เวลานานกว่า

การตั้งค่านี้ใช้ไฟล์ Docker Compose หนึ่งไฟล์และคำสั่งครั้งเดียวเพื่อสร้างเครือข่าย Docker ที่ใช้ร่วมกัน สร้างไดเรกทอรี สร้างเครือข่าย เพิ่มไฟล์ docker-compose.yml ด้านล่าง แล้วเปิดคอนเทนเนอร์ขึ้นมา

ขั้นแรก สร้างเครือข่าย Docker ที่ใช้ร่วมกัน

docker network create proxy

จากนั้นสร้างไฟล์ docker-compose.yml ไฟล์:

# docker-compose.yml
services:
  npm:
    image: 'jc21/nginx-proxy-manager:<PATCHED_VERSION>'
    restart: unless-stopped
    ports:
      - '80:80'                 # public HTTP
      - '443:443'               # public HTTPS
      - '127.0.0.1:81:81'       # admin UI, reachable only from the VPS itself
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - proxy
networks:
  proxy:
    external: true

เชื่อมทุกคอนเทนเนอร์ backend ที่ NPM ต้องเข้าถึงด้วยชื่อบริการเข้ากับเครือข่ายภายนอก proxy เดียวกัน วิธีนี้ช่วยให้ NPM แปลงชื่อคอนเทนเนอร์ด้วยชื่อบริการได้โดยไม่ต้องเผยแพร่พอร์ตของแอปพลิเคชัน backend บน VPS

สำรองข้อมูลทั้ง ./data และ ./letsencrypt ก่อนอัปเกรด ไดเรกทอรีข้อมูลมีฐานข้อมูลและการตั้งค่าที่สร้างขึ้นของ NPM ในขณะที่ไดเรกทอรี Let's Encrypt มีข้อมูลใบรับรอง

มีบางสิ่งเกี่ยวกับไฟล์นี้ image ใช้ฐานข้อมูล SQLite เป็นค่าเริ่มต้นซึ่งจัดเก็บใน ./data volume นั่นคือ backend เริ่มต้นและถูกต้องสำหรับการติดตั้งบน VPS เดี่ยวส่วนใหญ่ หากคุณต้องการฐานข้อมูลภายนอก NPM รองรับ MariaDB/MySQL และ PostgreSQL ซึ่งหมายถึงการเพิ่มบริการฐานข้อมูลและตัวแปรสภาพแวดล้อมที่ตรงกัน สำหรับ VPS เดี่ยว SQLite ยังคงเป็นค่าเริ่มต้นที่ง่ายที่สุด เว้นแต่คุณมีเหตุผลชัดเจนที่จะย้ายฐานข้อมูลออกจาก data volume นโยบาย restart: unless-stopped หมายความว่า NPM จะกลับมาทำงานหาก VPS รีบูต ซึ่งเป็นสิ่งที่คุณต้องการสำหรับบริการที่อยู่ด้านหน้าทุกอย่าง

เปิดขึ้นมาและยืนยันว่ากำลังทำงาน

docker compose up -d
docker compose ps

ผลลัพธ์ที่คาดหวัง คอนเทนเนอร์ npm ที่มีสถานะ Up พอร์ต 80 และ 443 ถูกแมปสู่สาธารณะ และพอร์ต 81 ผูกเฉพาะกับ 127.0.0.1 การเริ่มต้นครั้งแรกใช้เวลาสองสามนาทีในขณะที่ NPM สร้างคีย์ JWT เริ่มต้นฐานข้อมูล และสร้างผู้ใช้ admin เริ่มต้น เอกสารการติดตั้งอย่างเป็นทางการ อธิบายลำดับการทำงานครั้งแรกนี้

สร้างอุโมงค์ SSH จากคอมพิวเตอร์ของคุณก่อนเปิดอินเทอร์เฟซผู้ดูแลระบบ

ssh -L 8181:127.0.0.1:81 user@your-vps

จากนั้นเปิด http://127.0.0.1:8181 ในเบราว์เซอร์ของคุณ ในการติดตั้งใหม่ ให้เข้าสู่ระบบด้วย [email protected] และ changeme จากนั้นเปลี่ยนอีเมลและรหัสผ่านเริ่มต้นทันที อย่าทำให้แดชบอร์ดเข้าถึงได้จากสาธารณะในขณะที่ข้อมูลรับรองเริ่มต้นยังใช้งานอยู่

เมื่อคุณเปลี่ยนข้อมูลรับรอง admin แล้ว ให้เพิ่ม proxy host แรกของคุณ

  1. ในแดชบอร์ด ไปที่ Hosts จากนั้น Proxy Hosts จากนั้น Add Proxy Host.
  2. ตั้งค่า Domain Name เป็นซับโดเมนของคุณ (เช่น cloud.example.com).
  3. ตั้งค่า Forward Hostname / IP เป็นชื่อคอนเทนเนอร์ backend หรือ IP และ Forward Port เป็นพอร์ตที่มันรับฟัง
  4. บันทึก proxy host จะปรากฏในรายการ และทราฟฟิกไปยังซับโดเมนนั้นจะเข้าถึงคอนเทนเนอร์ของคุณแล้ว

หากคุณรัน UI จัดการ Docker ควบคู่ไปกับสิ่งนี้ รูปแบบเดียวกันก็ใช้ได้ ให้ชี้ซับโดเมนไปยังเครื่องมือจัดการคอนเทนเนอร์ด้วยวิธีเดียวกัน และทำแบบเดียวกันกับ stack การมอนิเตอร์ Prometheus และ Grafana ที่คุณต้องการให้อยู่หลังพร็อกซี

การตั้งค่า HTTPS อัตโนมัติสำหรับซับโดเมน

Configuring automatic HTTPS in Nginx Proxy Manager: a DNS A record points the subdomain at the VPS, Let's Encrypt validates ownership over HTTP-01 on port 80 or DNS-01 for wildcards, and the certificate installs with Force SSL and HTTP/2 enabled

ส่วนนี้ทำให้คุณได้ใบรับรอง Let's Encrypt ที่ถูกต้องและต่ออายุอัตโนมัติสำหรับซับโดเมนของคุณ สิ่งที่ต้องเตรียมซึ่งมักทำให้คนสะดุดคือ เรกคอร์ด DNS A ของซับโดเมนนั้นต้องชี้ไปยัง VPS ของคุณอยู่แล้ว และพอร์ต 80 ต้องเข้าถึงได้จากอินเทอร์เน็ต เพราะ Let's Encrypt ตรวจสอบโดเมนด้วยการเชื่อมต่อกลับมายังมัน

เมื่อสร้าง proxy host แล้ว ให้ขอใบรับรอง

  1. แก้ไข proxy host เปิดแท็บ SSL แท็บ
  2. ภายใต้ ใบรับรอง SSLเลือก Request a new SSL Certificate.
  3. เปิดใช้งาน Force SSL และ HTTP/2 Support เปิด HSTS หลังจากยืนยันว่า HTTPS ทำงานถูกต้องแล้วเท่านั้น เพราะเบราว์เซอร์สามารถแคชนโยบายไว้และทำให้การกู้คืนจากความผิดพลาดของใบรับรองหรือการตั้งค่าพร็อกซียากขึ้น
  4. ยอมรับข้อกำหนดของ Let's Encrypt และบันทึก

โดยค่าเริ่มต้น NPM ใช้การท้าทาย HTTP-01 สำหรับชื่อที่ไม่ใช่ wildcard โดยตรวจสอบแต่ละ hostname ที่ขอผ่านพอร์ต 80 ใบรับรองสามารถมีชื่อที่ไม่ใช่ wildcard หลายชื่อ แต่ HTTP-01 ไม่สามารถออกใบรับรอง wildcard ได้ ชื่อ wildcard เช่น *.example.com ต้องใช้การท้าทาย DNS-01 กับผู้ให้บริการ DNS ที่รองรับ สำหรับการตั้งค่าปกติแบบหนึ่งซับโดเมนต่อหนึ่งบริการ HTTP-01 คือทั้งหมดที่คุณต้องการ และการต่ออายุเป็นอัตโนมัติ

หากการขอใบรับรองล้มเหลว ให้ตรวจสอบพอร์ต 80 ก่อน สาเหตุที่พบบ่อยได้แก่ พอร์ต 80 ที่เข้าถึงไม่ได้ กฎไฟร์วอลล์คลาวด์หรือ security-group ที่ไม่ถูกต้อง และ DNS ที่ยังกระจายไม่เสร็จ Let's Encrypt ไม่สามารถตรวจสอบโดเมนที่เข้าถึงไม่ได้

การรักษาความปลอดภัยแผงผู้ดูแลระบบ NPM บน VPS

Securing the Nginx Proxy Manager admin panel: public access to port 81 is blocked while admin access is allowed only through an SSH tunnel or private VPN to 127.0.0.1:81, with two-factor authentication and a patched version

อินเทอร์เฟซผู้ดูแลระบบบนพอร์ต 81 คือจุดเสี่ยงหลักในการติดตั้ง NPM และส่วนนี้จะล็อกให้แน่นหนา นี่คือการเสริมความแข็งแกร่งด้านการปฏิบัติงาน ไม่ใช่การตรวจสอบความปลอดภัย ทำสามสิ่ง ทำครั้งเดียว แล้วระดับความเสี่ยงจะลดลงอย่างมาก

อย่างแรกและสำคัญที่สุด เก็บพอร์ต 81 ผูกไว้กับ 127.0.0.1 ตามที่แสดงในไฟล์ Docker Compose เข้าถึงแดชบอร์ดผ่านอุโมงค์ SSH ที่อธิบายไว้ก่อนหน้า หากคุณต้องการการเข้าถึงระยะไกลแบบถาวร ให้ทำให้อินเทอร์เฟซผู้ดูแลระบบเข้าถึงได้ผ่าน VPN ส่วนตัวเท่านั้น อย่าเผยแพร่พอร์ต 81 บน public IP ของ VPS

อย่างที่สอง เปิดใช้การยืนยันตัวตนสองปัจจัยแบบ TOTP บนบัญชี admin ของคุณ NPM เพิ่ม 2FA แบบ TOTP ใน เวอร์ชัน 2.13.6 ดังนั้นการติดตั้งปัจจุบันทุกรายการมีอยู่แล้ว เปิดใช้มัน

อย่างที่สาม เก็บ NPM ให้ได้รับการแพตช์และตรวจสอบรุ่นที่แน่นอน แทนที่จะสันนิษฐานว่าแท็ก latest ปลอดภัย CVE-2026-40519 ส่งผลต่อเวอร์ชัน 2.9.14 ถึง 2.15.1 และสามารถทำให้เกิดการรันโค้ดจากระยะไกลที่ผ่านการยืนยันตัวตนผ่านข้อมูลรับรองผู้ให้บริการ DNS ที่เป็นอันตราย CVE-2026-50892 ส่งผลต่อ v2.14.0 และสามารถทำให้ผู้โจมตีที่ผ่านการยืนยันตัวตนได้รับข้อมูลคีย์ส่วนตัวของ Let's Encrypt ปัญหาก่อนหน้านี้ CVE-2025-50579 ส่งผลต่อ v2.12.3 ผ่านช่องโหว่ CORS ที่อาจเปิดเผย JWT token กฎที่ใช้งานได้จริงนั้นง่าย เก็บพอร์ต 81 ไว้เป็นการภายใน เปิดใช้การยืนยันตัวตนสองปัจจัย ตรึงเวอร์ชันที่รู้ว่าได้รับการแพตช์แล้ว และตรวจสอบคำแนะนำด้านความปลอดภัยก่อนอัปเกรด

พอร์ต 81 ยังคงเป็นการภายในและ NPM ยังคงได้รับการแพตช์ ทำสองสิ่งนี้แล้วความเสี่ยงหลักที่รู้จักจะจัดการได้ง่ายขึ้นมากสำหรับการตั้งค่า VPS เดี่ยวปกติ

การกำหนดขนาด VPS สำหรับ Nginx Proxy Manager

NPM เองนั้นเบา คำถามเรื่องการกำหนดขนาดจริงๆ แล้วเกี่ยวกับ NPM บวกกับบริการที่อยู่ด้านหลัง การใช้ทรัพยากรในสภาวะว่างของพร็อกซีแทบไม่เคยเป็นข้อจำกัด Nextcloud หรือบล็อก Ghost จะใช้ทรัพยากรมากกว่าตัวพร็อกซีเอง

นี่คือวิธีที่ระดับต่างๆ ทำงานได้ในทางปฏิบัติ

  • เกณฑ์ขั้นต่ำที่ใช้งานได้จริง 1 GB RAM, 1 vCPU และพื้นที่จัดเก็บ 10 GB หนึ่ง คู่มือการกำหนดขนาดจากบุคคลที่สาม ใช้เกณฑ์เดียวกัน แต่ให้ถือว่าเป็นแนวทางการวางแผนมากกว่าข้อกำหนดอย่างเป็นทางการของ NPM มันเพียงพอสำหรับ NPM ระบบปฏิบัติการ และบริการเบาๆ ไม่กี่ตัว แต่เหลือพื้นที่รองรับจำกัด
  • สบาย 2 GB RAM, 1 vCPU, พื้นที่จัดเก็บ 20 GB NPM บวกบริการสามถึงห้าตัวโดยมีพื้นที่หายใจ นี่คือจุดที่ลงตัวที่สุดสำหรับผู้ที่โฮสต์เองส่วนใหญ่
  • ขยับขึ้น 4 GB RAM, 2 vCPU สำหรับบริการแปดถึงสิบสองตัว หรือการตั้งค่าที่มีทราฟฟิกมากซึ่งคุณต้องการพื้นที่ CPU รองรับสำหรับการยุติ TLS

ตัวเลขที่คุณใช้กำหนดขนาดคือผลรวมของแอปที่ผ่านพร็อกซี ไม่ใช่ NPM ให้รวมการใช้ RAM ของบริการที่คุณตั้งใจจะรัน บวกภาระในสภาวะว่างเล็กน้อยของพร็อกซีเข้าไปด้านบน แล้วเลือกระดับที่สูงกว่านั้นโดยมีระยะเผื่อ

การกำหนดขนาดเครื่องเป็นส่วนที่ง่าย การทำให้ NPM ทำงานยังหมายถึงการจัดหา VPS ติดตั้ง Docker ดึง image และทำตามการตั้งค่าครั้งแรกนั้น หากคุณอยากข้ามขั้นตอนการจัดหา มาร์เก็ตเพลสของ Cloudzy มีการติดตั้ง Nginx Proxy Manager แบบคลิกเดียว บน VPS ที่ใช้ NVMe มันตั้งคอนเทนเนอร์ขึ้นมาบนเซิร์ฟเวอร์ใหม่ ดังนั้นคุณจึงไปที่แดชบอร์ดและ proxy host แรกได้ทันที ไม่ว่าทางใด ระดับการกำหนดขนาดข้างต้นคือสิ่งที่คุณใช้จัดหาทรัพยากร

คำถามที่พบบ่อย

อะไรคือความแตกต่างระหว่าง Nginx กับ Nginx Proxy Manager

Nginx คือเว็บเซิร์ฟเวอร์และเอนจิน reverse proxy เอง ซึ่งคุณตั้งค่าด้วยการแก้ไขไฟล์ข้อความ Nginx Proxy Manager เป็นแอปพลิเคชัน Docker ที่รัน Nginx อยู่ข้างใต้และเพิ่ม UI บนเว็บไว้ด้านบน ดังนั้นคุณจึงจัดการ proxy host และใบรับรอง Let's Encrypt ผ่านแดชบอร์ดแทนการเขียนไฟล์ตั้งค่า NPM คือชั้น GUI ส่วน Nginx คือเอนจินที่ทำงานจริง

Nginx Proxy Manager ยังคุ้มค่าที่จะใช้ในปี 2026 หรือไม่

ใช่ สำหรับผู้ใช้ที่ชอบ GUI และรัน Docker stack ขนาดเล็ก แต่หลังจากที่คุณยืนยันแล้วว่า image ที่คุณติดตั้งมีการแก้ไขด้านความปลอดภัยล่าสุดเท่านั้น ณ วันที่ 12 กรกฎาคม 2026 v2.15.1 เป็นรุ่นที่ติดแท็กล่าสุด และ NVD ระบุว่าได้รับผลกระทบจาก CVE-2026-40519 หากคุณชอบการตั้งค่าแบบโค้ด Caddy ยังคงเหมาะกว่า การตั้งค่าที่รองรับด้วย SQLite ของ NPM คือข้อจำกัดด้านการปฏิบัติงานหลัก

RAM ขั้นต่ำสำหรับ Nginx Proxy Manager คือเท่าไร

NPM เองใช้ RAM ในสภาวะว่างประมาณ 50 MB VPS ขนาด 1 GB เป็นเกณฑ์ที่ใช้งานได้จริง เพียงพอสำหรับ NPM บวกบริการเบาๆ สองสามตัว 2 GB จะสบายเมื่อคุณเพิ่มแอปที่ผ่านพร็อกซีมากขึ้น ความต้องการ RAM ที่แท้จริงถูกขับเคลื่อนโดยบริการที่อยู่หลัง NPM ไม่ใช่ NPM เอง

ฉันควรเปิดพอร์ต 81 สู่อินเทอร์เน็ตหรือไม่

ไม่ ให้เก็บพอร์ต 81 ผูกไว้กับ localhost และเข้าถึงผ่านอุโมงค์ SSH หรือทำให้เข้าถึงได้ผ่าน VPN ส่วนตัวเท่านั้น อย่าเผยแพร่อินเทอร์เฟซผู้ดูแลระบบบน public IP ของ VPS

ฉันสามารถรัน Nginx Proxy Manager โดยไม่ใช้ Docker ได้หรือไม่

ไม่ได้ NPM ถูกเผยแพร่และออกแบบมาเป็นคอนเทนเนอร์ Docker และไม่มีการติดตั้งแบบไม่ใช้ Docker ที่รองรับ หากคุณไม่สามารถหรือไม่ต้องการรัน Docker ให้ใช้ Nginx ล้วนคู่กับ Certbot หรือ Caddy แบบไบนารีเดี่ยวแทน

Nginx Proxy Manager รองรับใบรับรอง Wildcard หรือไม่

รองรับ ผ่านการท้าทาย DNS-01 กับผู้ให้บริการ DNS ที่รองรับซึ่งตั้งค่าไว้ ใบรับรอง hostname เดียวมาตรฐานใช้การท้าทาย HTTP-01 ผ่านพอร์ต 80 ส่วนใบรับรอง wildcard (*.example.com) ต้องใช้ DNS-01 เพราะผู้ออกใบรับรองตรวจสอบการควบคุมด้วยการเขียนเรกคอร์ด DNS แทนการเข้าถึงโฮสต์เดียว

แชร์

บทความเพิ่มเติมจากบล็อก

อ่านต่อ

Side-by-side terminal view of a Caddyfile and an nginx.conf for the same reverse proxy on a VPS
เว็บและแอปธุรกิจ

Caddy เทียบกับ Nginx บน VPS: การเปรียบเทียบไฟล์ config

Caddy เทียบกับ Nginx บน VPS: เปรียบเทียบ config, HTTPS อัตโนมัติ, การใช้หน่วยความจำที่มีการรายงาน, wildcard certificate และ use case ที่ดีที่สุดสำหรับแต่ละตัว

Ariana 12 นาทีในการอ่าน
Immich self-hosted photo library shown in a browser and on a phone, reviewed as a Google Photos alternative
เว็บและแอปธุรกิจ

รีวิว Immich: พร้อมแทนที่ Google Photos จริงหรือยัง?

รีวิว Immich v3 หลังใช้งานราว 10 วัน: การสำรองข้อมูลจากมือถือ การค้นหา การจดจำใบหน้า ความต้องการฮาร์ดแวร์ ความเสี่ยงการอัปเกรด และจังหวะที่ควรย้ายจาก Google Photos

Bill 18 นาทีในการอ่าน

พร้อมติดตั้งหรือยัง? เริ่มต้น $2.48/เดือน

คลาวด์อิสระ ตั้งแต่ปี 2008 AMD EPYC, NVMe, 40 Gbps คืนเงินภายใน 14 วัน