บอกลาการจำพอร์ตและ SSL หมดอายุ: คู่มือติดตั้ง Nginx Proxy Manager จัดการ Domain และ HTTPS บน Home Server ด้วย Docker

เปลี่ยนการเข้าถึงบริการบน Home Server จาก IP และพอร์ตยุ่งยาก ให้กลายเป็นชื่อโดเมนส่วนตัวพร้อมระบบ SSL (HTTPS) อัตโนมัติด้วย Nginx Proxy Manager บน Docker ทำง่ายผ่าน Web UI ไร้บรรทัดคำสั่งซับซ้อน

Share
บอกลาการจำพอร์ตและ SSL หมดอายุ: คู่มือติดตั้ง Nginx Proxy Manager จัดการ Domain และ HTTPS บน Home Server ด้วย Docker

เมื่อคุณเริ่มก้าวเข้าสู่โลกของ Self-Hosting และเริ่มเปลี่ยนคอมพิวเตอร์เก่าให้กลายเป็น Home Server ประจำบ้าน สิ่งแรกๆ ที่คุณจะต้องเผชิญคือจำนวนบริการ (Services) ที่เพิ่มขึ้นเรื่อยๆ ไม่ว่าจะเป็น Nextcloud, Vaultwarden, Immich, Paperless-ngx หรือ AdGuard Home

ปัญหาที่ตามมาทันทีคือ: "การจดจำ IP Address และ Port Number ที่แสนยุ่งยาก" เช่น การต้องพิมพ์ 192.168.1.100:8096 เพื่อดูหนังบน Jellyfin หรือ 192.168.1.100:2283 เพื่อเปิดดูรูปภาพบน Immich ยิ่งไปกว่านั้น เว็บเบราว์เซอร์ยังขึ้นเตือน "Not Secure" (ไม่ปลอดภัย) อยู่ตลอดเวลา เพราะบริการเหล่านี้รันบนโปรโตคอล HTTP แบบไม่มีการเข้ารหัส SSL

เพื่อแก้ปัญหานี้และยกระดับ Home Server ของคุณให้เหมือนกับระบบคลาวด์ระดับโปร คำตอบเบ็ดเสร็จที่คุณต้องการคือการติดตั้ง Reverse Proxy และตัวเลือกที่ใช้งานง่าย สวยงาม และทรงพลังที่สุดในตอนนี้คือ Nginx Proxy Manager (NPM) ครับ


Nginx Proxy Manager คืออะไร?

Nginx Proxy Manager คือเครื่องมือจัดการ Reverse Proxy ที่ครอบเว็บอินเทอร์เฟซ (Web UI) ที่สวยงามไว้บน Web Server ยอดนิยมอย่าง Nginx ทำให้คุณสามารถจัดการการรับส่งข้อมูล (Traffic Routing) สร้างชื่อโดเมนส่วนตัว และขอใบรับรองความปลอดภัย SSL (HTTPS) ได้ง่ายๆ เพียงแค่คลิกไม่กี่ครั้ง โดยไม่จำเป็นต้องเขียนไฟล์คอนฟิก Nginx ซับซ้อนด้วยตัวเอง

จุดเด่นหลักของ Nginx Proxy Manager: * ใช้งานง่ายผ่าน Web Dashboard: ไม่ต้องจำคำสั่ง Nginx Syntax ที่ซับซ้อน ตั้งค่า Proxy Host ทั้งหมดผ่านหน้าเว็บ UI * ขอและต่ออายุ SSL (HTTPS) อัตโนมัติ: บูรณาการร่วมกับ Let's Encrypt ขอใบรับรองความปลอดภัย SSL ได้ฟรี และทำการต่ออายุใบรับรองให้อัตโนมัติก่อนหมดอายุ * รองรับ WebSockets & HTTP/2: ทำให้แอปพลิเคชันยุคใหม่ที่ต้องการการเชื่อมต่อแบบ Real-time (เช่น Vaultwarden หรือ Home Assistant) ทำงานได้อย่างลื่นไหลไร้สะดุด * ระบบ Access Control List (ACL): เพิ่มชั้นการปกป้องด้วยการใส่รหัสผ่าน (HTTP Basic Auth) หรือจำกัด IP Address ที่อนุญาตให้เข้าถึงหน้า Dashboard บริการสำคัญๆ * ทรัพยากรต่ำ: ทำงานอยู่บน Docker ใช้แรมเพียง 40-80 MB เหมาะอย่างยิ่งกับ Home Server ทุกระดับ


สิ่งที่ต้องเตรียมก่อนเริ่มติดตั้ง

  1. Home Server ที่ติดตั้ง Docker และ Docker Compose เรียบร้อยแล้ว
  2. พอร์ต 80 และ 443 บน Home Server ต้องว่างอยู่ (ไม่ถูกบริการอื่นจองไว้)
  3. ชื่อโดเมน (Domain Name): อาจเป็นโดเมนจริงที่คุณซื้อไว้ (เช่น yourdomain.com) หรือ Local Domain ที่ตั้งขึ้นเองในบ้านผ่าน AdGuard Home / Pi-hole (เช่น vault.home.lab)

ขั้นตอนที่ 1: เตรียมโครงสร้างโฟลเดอร์และไฟล์ Docker Compose

ทำการเชื่อมต่อ SSH เข้าไปยัง Home Server ของคุณ แล้วสร้างโฟลเดอร์สำหรับเก็บไฟล์ตั้งค่าของ Nginx Proxy Manager:

mkdir -p ~/home-server/nginx-proxy-manager
cd ~/home-server/nginx-proxy-manager

จากนั้นสร้างไฟล์ docker-compose.yml ด้วยคำสั่ง:

nano docker-compose.yml

ใส่เนื้อหาไฟล์ตั้งค่าดังต่อไปนี้:

version: '3.8'

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    container_name: nginx-proxy-manager
    restart: unless-stopped
    ports:
      - '80:80'      # HTTP Traffic
      - '81:81'      # Admin Web UI
      - '443:443'    # HTTPS Traffic
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

networks:
  default:
    name: home-network
    external: true
[!NOTE] ในตัวอย่างนี้ใช้ฐานข้อมูล SQLite ในตัวซึ่งเพียงพอสำหรับ Home Server ทั่วไป หากคุณมี Docker Network กลาง (เช่น home-network) แนะนำให้เชื่อมต่อ NPM เข้ากับเครือข่ายนี้เพื่อให้อ้างอิงชื่อ Container บริการอื่นได้โดยตรง

ขั้นตอนที่ 2: เริ่มการทำงานและล็อกอินครั้งแรก

สั่งรัน Docker Container ด้วยคำสั่ง:

docker compose up -d

เมื่อระบบเริ่มทำงานเรียบร้อยแล้ว ให้เปิดเว็บเบราว์เซอร์แล้วเข้าไปที่หน้า Admin Dashboard:

http://<IP-ของ-Home-Server>:81

คุณจะพบกับหน้าล็อกอินของ Nginx Proxy Manager ให้ใช้ข้อมูลเข้าสู่ระบบเริ่มต้นดังนี้: * Email: [email protected] * Password: changeme

[!IMPORTANT] ในการล็อกอินครั้งแรก ระบบจะบังคับให้คุณเปลี่ยน ชื่อ, อีเมล และ รหัสผ่านใหม่ ทันที เพื่อความปลอดภัยของระบบ กรุณาตั้งรหัสผ่านที่คาดเดายากและบันทึกไว้ใน Vaultwarden ของคุณ

ขั้นตอนที่ 3: ตั้งค่า Proxy Host เชื่อมบริการเข้ากับโดเมนและ SSL

สมมติว่าคุณต้องการเปลี่ยนการเข้าถึง Vaultwarden จาก 192.168.1.100:8080 ให้กลายเป็น vault.yourdomain.com พร้อมใช้งาน HTTPS:

  1. คลิกที่เมนู "Hosts" -> เลือก "Proxy Hosts" จากนั้นคลิกปุ่ม "Add Proxy Host"
  2. แถบ Details (ข้อมูลทั่วไป):
  3. Domain Names: พิมพ์ vault.yourdomain.com แล้วกด Enter
  4. Scheme: เลือก http
  5. Forward Hostname / IP: ใส่ IP ของ Home Server หรือชื่อ Docker Container (เช่น vaultwarden)
  6. Forward Port: ใส่พอร์ตของบริการเดิม (เช่น 8080)
  7. ติ๊กเปิดใช้งาน Block Common Exploits และ Websockets Support
  8. แถบ SSL (ความปลอดภัย):
  9. SSL Certificate: เลือก "Request a new SSL Certificate" (กรณีใช้โดเมนจริงที่ชี้ IP มายังเซิร์ฟเวอร์)
  10. ติ๊กเปิดใช้งาน Force SSL (บังคับให้เปลี่ยน HTTP เป็น HTTPS อัตโนมัติ) และ HTTP/2 Support
  11. ติ๊กยอมรับเงื่อนไข I Agree to the Let's Encrypt Terms of Service
  12. ใส่ Email สำหรับการแจ้งเตือนจาก Let's Encrypt
  13. กดปุ่ม "Save"

ระบบจะทำการติดต่อกับ Let's Encrypt เพื่อสร้างใบรับรอง SSL และเปิดใช้งาน HTTPS ให้คุณโดยอัตโนมัติภายในเวลาไม่กี่วินาที!


เทคนิคยกระดับความปลอดภัยและความสะดวก (Advanced Tips)

1. ใช้งานร่วมกับ AdGuard Home ทำ Local DNS Rewrite

หากคุณไม่อยากเปิดพอร์ตออกสู่อินเทอร์เน็ตภายนอก แต่อยากใช้โดเมนสวยๆ ในบ้าน คุณสามารถไปที่ AdGuard Home -> Filters -> DNS rewrites แล้วเพิ่มกฎให้โดเมน *.home.lab ชี้มายัง IP ของ Nginx Proxy Manager จากนั้นใน NPM ก็ตั้งค่า Proxy Host ตามปกติ คุณจะได้ใช้โดเมนส่วนตัวพร้อม SSL ในวง LAN โดยไม่ต้องเสี่ยงเปิดพอร์ตออกนอกบ้านเลยครับ

2. ปกป้องหน้า Admin ด้วย Access Lists

สำหรับบริการที่ไม่มีระบบล็อกอินในตัว หรือต้องการเพิ่มการป้องกันอีกชั้น ให้ไปที่เมนู "Access Lists" ใน NPM เพื่อสร้างรายการรหัสผ่าน (Basic Auth) หรือกำหนดเฉพาะวง IP ที่อนุญาต จากนั้นนำ Access List นี้ไปผูกกับ Proxy Host ที่ต้องการได้ทันที


สรุป

Nginx Proxy Manager คือชิ้นส่วนเติมเต็มที่สำคัญอย่างยิ่งในการสร้าง Private Brain OS บน Home Server ของคุณ มันเปลี่ยนระบบที่กระจัดกระจายและจำยาก ให้กลายเป็นศูนย์รวมบริการที่เข้าถึงได้ด้วยโดเมนเนมที่สวยงาม ปลอดภัยด้วย HTTPS และจัดการง่ายเพียงปลายนิ้วสัมผัส

หากคุณติดตั้ง Docker บน Home Server เรียบร้อยแล้ว อย่าลืมลง Nginx Proxy Manager เป็นบริการถัดไป เพื่อเริ่มต้นประสบการณ์ Self-Hosting ที่ราบรื่นและเป็นมืออาชีพครับ!

Read more

สร้าง AI Agent สำหรับการทำ Decision Log อัตโนมัติ: เปลี่ยนทุกการตัดสินใจสำคัญให้เป็นบทเรียนเพื่อการเติบโต

สร้าง AI Agent สำหรับการทำ Decision Log อัตโนมัติ: เปลี่ยนทุกการตัดสินใจสำคัญให้เป็นบทเรียนเพื่อการเติบโต

เรียนรู้วิธีใช้ AI Agent ช่วยบันทึกและวิเคราะห์การตัดสินใจสำคัญในชีวิตประจำวัน เพื่อเปลี่ยนทุกทางเลือกให้กลายเป็นฐานข้อมูลบทเรียนที่มีค่าสำหรับอนาคต

By Linn
คู่มือใช้งาน Obsidian Graph View: เปลี่ยนใยแมงมุมความรู้ให้เป็นเครื่องมือนำทางความคิดใน Second Brain

คู่มือใช้งาน Obsidian Graph View: เปลี่ยนใยแมงมุมความรู้ให้เป็นเครื่องมือนำทางความคิดใน Second Brain

Graph View ใน Obsidian ไม่ใช่แค่ภาพกราฟสวยๆ ไว้ดูเล่น มาเรียนรู้วิธีปรับแต่ง Local Graph, Color Groups และฟิลเตอร์ เพื่อเปลี่ยนเครือข่ายความรู้ให้กลายเป็นเครื่องมือนำทางความคิดจริง

By Linn
สร้าง Smart Clipboard Agent: ดักจับและคัดแยกข้อความที่คัดลอกระหว่างวัน บันทึกเข้า Obsidian อัตโนมัติด้วย Python + Ollama

สร้าง Smart Clipboard Agent: ดักจับและคัดแยกข้อความที่คัดลอกระหว่างวัน บันทึกเข้า Obsidian อัตโนมัติด้วย Python + Ollama

เปลี่ยนข้อความ โค้ด ลิงก์ และไอเดียที่คุณคัดลอกระหว่างวันให้กลายเป็นบันทึกความรู้ที่มีบริบทใน Second Brain โดยอัตโนมัติ ด้วยสคริปต์ Python คอยมอนิเตอร์คลิปบอร์ดคู่กับ Local LLM บน Ollama แบบออฟไลน์ 100%

By Linn
บอกลาคำสั่ง Docker CLI ที่ซับซ้อน: คู่มือติดตั้ง Dockge จัดการ Docker Compose บน Home Server อย่างมือโปร

บอกลาคำสั่ง Docker CLI ที่ซับซ้อน: คู่มือติดตั้ง Dockge จัดการ Docker Compose บน Home Server อย่างมือโปร

ยกระดับการจัดการคอนเทนเนอร์บน Home Server ให้ง่ายและเป็นระเบียบ ด้วย Dockge ตัวจัดการ Docker Compose สไตล์มินิมอลที่เน้นความโปร่งใส ควบคุมไฟล์ .yml ได้โดยตรง 100%

By Linn