- Self-hosting กำลังได้รับความนิยมในช่วงหลังในฐานะทางเลือกของบริการแบบรวมศูนย์ที่เน้นการเก็บข้อมูล
- หลังจากทดลองใช้เครื่องมือและแอปหลากหลายแบบ ผู้เขียนได้ใช้งานจริงอย่าง เสถียรมานานกว่า 1 ปี และขอแนะนำเครื่องมือที่เห็นว่ามีประโยชน์
- รวมบทความแนะนำคอนเทนเนอร์รันไทม์ เครื่องมือจัดการผ่านเว็บ reverse proxy และ VPN รวมถึงเครื่องมือ self-hosting อื่น ๆ
- บทความนี้ไม่ได้เขียนขึ้นเพื่อชี้ขาดว่าโซลูชันใดดีกว่าใคร แต่เน้นว่า ปัญหาที่ต่างกันย่อมมีวิธีแก้ที่ต่างกัน
คอนเทนเนอร์รันไทม์
- ทุกวันนี้คอนเทนเนอร์กลายเป็นพื้นฐานของการโฮสต์ไปแล้ว และวิธีแบบดั้งเดิมก็ค่อย ๆ พบเห็นได้น้อยลง
- นี่เป็นแนวโน้มที่ดีมากสำหรับ ผู้ใช้โฮมเซิร์ฟเวอร์ (homelabber) เพราะคอนเทนเนอร์ช่วยให้การกระจายซอฟต์แวร์ง่ายขึ้น และให้ประสิทธิภาพที่คุ้มค่ากว่า virtual machine
- แม้คนส่วนใหญ่จะใช้ Docker แต่บทความนี้จะแนะนำ รันไทม์ทางเลือกหลายแบบที่ใช้ได้ในสภาพแวดล้อมภายในบ้าน
-
Docker
- คอนเทนเนอร์รันไทม์ต้นตำรับที่ถูกใช้งานแพร่หลายที่สุด
- ด้วย เอกสารที่ครบถ้วน และชุมชนขนาดใหญ่ แม้จะไม่เชี่ยวชาญ IT มากก็ยังสามารถคัดลอก
docker-compose.yml จาก GitHub มาลองรันได้
- อย่างไรก็ตาม การตั้งค่าด้านความปลอดภัยควรพิจารณาเพิ่มเติมแยกต่างหาก
-
Podman
- คอนเทนเนอร์รันไทม์ยุคใหม่ที่ได้รับความสนใจจาก โครงสร้างแบบ rootless และความเข้ากันได้กับ Docker CLI
- ทำงานได้โดยไม่ต้องมี daemon จึงเหมาะกับผู้ที่ให้ความสำคัญกับความปลอดภัยหรืออยากเรียนรู้เทคโนโลยีที่เกี่ยวข้อง
- ใช้คำสั่ง Docker ส่วนใหญ่ได้โดยตรง และยังมี alias ที่เข้ากันได้กับคำสั่ง
docker ทำให้ย้ายมาใช้งานได้ง่าย
- แม้ว่า ช่วงแรกจะมีอุปสรรคในการเริ่มต้นอยู่บ้าง แต่เมื่อเอกสารและชุมชนพัฒนาขึ้น การเข้าถึงก็ง่ายขึ้นเรื่อย ๆ
- นอกจากนี้ยังสามารถใช้ Podman Quadlets เพื่อจัดการคอนเทนเนอร์แบบประกาศค่าโดยอิง systemd แทน docker compose ได้ด้วย
-
Kubernetes
- สำหรับผู้ใช้โฮมเซิร์ฟเวอร์สายช่างลองช่างสงสัย นี่คือ เครื่องมือขั้นสูงที่ชวนให้อยากท้าทายตัวเอง
- เป็น เครื่องมือ orchestration ที่จัดการอินสแตนซ์จำนวนมากได้อย่างสวยงาม และมอบประสบการณ์การดูแลระบบระดับองค์กร
- แต่เนื่องจาก มีฟีเจอร์จำนวนมากและซับซ้อนมาก จึงเกินความจำเป็นสำหรับผู้ใช้ส่วนใหญ่
- ในสภาพแวดล้อมภายในบ้าน จุดประสงค์หลักมักเป็นการเรียนรู้ และเน้นความเข้าใจเทคโนโลยีมากกว่าการใช้งานจริง
เครื่องมือจัดการคอนเทนเนอร์ผ่านเว็บ
- ผู้ใช้บางคนชอบเก็บไฟล์ compose ไว้รวมกันบนดิสก์ภายในเครื่องและจัดการด้วยตนเอง แต่ก็มีความยุ่งยากที่ต้อง เชื่อมต่อ SSH เข้าเซิร์ฟเวอร์ทุกครั้งเพื่อตรวจสอบ log
- หากใช้ เครื่องมือจัดการคอนเทนเนอร์ผ่านเว็บ แทน ก็จะทำงานได้สะดวกกว่ามาก
-
Portainer
- เครื่องมือจัดการผ่านเว็บ UI ที่เสถียรที่สุด และรองรับทั้ง Docker, Kubernetes และ Podman
- ถูกใช้อย่างแพร่หลายตั้งแต่โฮมเซิร์ฟเวอร์ไปจนถึงสภาพแวดล้อมองค์กร และมีประโยชน์มากสำหรับการเรียนรู้จากการใช้งานจริง
- มีทั้งเวอร์ชันโอเพนซอร์สคอมมูนิตี้และเวอร์ชัน enterprise ที่มีฟีเจอร์เพิ่ม (ให้สิทธิ์ใช้งานฟรี 3 ไลเซนส์)
- ด้วย อินเทอร์เฟซที่เข้าใจง่ายและฟีเจอร์หลากหลาย จึงเหมาะมากสำหรับการจัดการคอนเทนเนอร์
-
Dockge
- เครื่องมือจัดการ Docker Compose ผ่านเว็บรุ่นใหม่จากผู้พัฒนา Uptime Kuma
- แม้ยังไม่สุกงอมเท่า Portainer แต่จุดเด่นคือ UI ที่เรียบง่ายและใช้งานได้ตรงไปตรงมา
- ผู้พัฒนาตอบสนองต่อ GitHub issues ได้รวดเร็ว และมี การอัปเดตอย่างสม่ำเสมอ
- เหมาะกับผู้ใช้ที่ชอบเครื่องมือเบา ๆ และมินิมอล
Reverse proxy และ VPN
- หากต้องการเข้าถึงแอปพลิเคชันที่ self-host ไว้จากภายนอก มี 2 วิธีหลัก:
- เปิดเผยบริการออกสู่อินเทอร์เน็ตโดยตรง
- เข้าถึงเครือข่ายภายในผ่าน VPN
- VPN ปลอดภัยกว่าในมุมของความมั่นคงปลอดภัย แต่การเปิดออกสู่อินเทอร์เน็ตก็ใช้งานได้ดีเพียงพอหากตั้งค่าอย่างถูกต้อง
-
Pangolin
- โซลูชันนวัตกรรมที่รวม VPN และ reverse proxy เข้าไว้ด้วยกัน
- ทำหน้าที่คล้าย Cloudflare สำหรับงาน self-hosting
- เพียงติดตั้ง ingress server บน VPS หรือที่ใกล้เคียง ก็เชื่อมต่อด้วย VPN client จากสภาพแวดล้อมต่าง ๆ ได้อย่างสะดวก
- มีทั้ง การเชื่อมต่อกับ CrowdSec และฟังก์ชัน SSO พื้นฐาน ในตัว
- เป็นเครื่องมือที่น่าประทับใจมากจนกลายเป็นแรงบันดาลใจให้ผู้เขียนเขียนบทความนี้ และเมื่อเวลาผ่านไปก็มี โอกาสกลายเป็นทางเลือกมาตรฐานแทนโซลูชันเดิม
-
Nginx Proxy Manager (NPM)
- ฟรอนต์เอนด์ของ Nginx ที่ให้ตั้งค่า TCP/UDP/HTTP(S) proxy ได้ง่ายผ่านเว็บ UI
- แม้จะมีผู้ใช้งานจำนวนมาก แต่ผู้เขียนมองว่าฟีเจอร์บางอย่าง (เช่น password protection) ยังไม่เสถียร
- แม้จะไม่ใช่เครื่องมือแรกที่สร้างความประทับใจที่ดีนัก แต่เมื่อทำงานได้ก็ทำหน้าที่ของมันได้อย่างครบถ้วน
-
Caddy
- ใช้ ไฟล์ตั้งค่าที่เรียบง่าย (Caddyfile) เพื่อจัดการตั้งแต่การตั้งค่า proxy ไปจนถึงการออกใบรับรอง HTTPS แบบอัตโนมัติ
- เนื่องจากไม่มีเว็บ UI จึงไม่ค่อยแนะนำสำหรับมือใหม่ แต่เป็นตัวเลือกยอดเยี่ยมสำหรับ ผู้ใช้ที่ชอบปรัชญาแบบ UNIX
- รองรับ Let’s Encrypt โดยปริยาย และมีข้อดีตรงที่ไม่ต้องมีการตั้งค่าซับซ้อน
-
NetBird
- เป็นโซลูชัน VPN ที่ถ้าคุ้นกับ Tailscale ก็จะปรับตัวได้ทันที
- ตั้งค่าเครือข่ายบนพื้นฐาน WireGuard โดยอัตโนมัติ ช่วยลดความซับซ้อนของการตั้งค่า
- ใช้ได้ทั้งบน cloud free tier หรือ self-host เอง จึงมีความยืดหยุ่น
เครื่องมือติดตามสถานะและแจ้งเตือน
-
Uptime Kuma
- ติดตามสถานะบริการได้ง่ายโดยไม่ต้องใช้สแตกหนัก ๆ อย่าง Zabbix หรือ Grafana
- ตั้งค่าการแจ้งเตือนผ่านหลายช่องทางได้ด้วยการ deploy เพียงครั้งเดียว
- เหมาะอย่างยิ่งสำหรับตรวจสอบความพร้อมใช้งานของระบบ self-hosting
-
Gotify
- เซิร์ฟเวอร์แจ้งเตือนที่ส่ง push notification ได้ด้วย HTTP request แบบง่าย ๆ
- เมื่อติดตั้งแอปบนมือถือแล้วก็รับการแจ้งเตือนได้ และยัง ผสานการทำงานกับ Uptime Kuma เป็นต้น ได้ด้วย
- ใช้งานร่วมกับเครื่องมือ self-hosting หลากหลายตัวได้ จึงมีความเป็นประโยชน์ในทางปฏิบัติ
แหล่งข้อมูลเพิ่มเติมสำหรับค้นหาแอป self-hosting
- นี่คือชุดแหล่งข้อมูลที่มีประโยชน์สำหรับค้นหาแอปพลิเคชัน self-hosting หลากหลายแบบ
-
- รายชื่อซอฟต์แวร์ขนาดใหญ่บน GitHub
- การจัดระเบียบอาจยังไม่ดีนัก และมีบางโปรเจกต์ที่หยุดพัฒนาไปแล้วรวมอยู่ด้วย
-
- เป็นแหล่งข้อมูลที่ผู้เขียนชอบมากที่สุด
- มีทั้งจดหมายข่าวแนะนำแอปเฉพาะทาง และ ไดเรกทอรีแอปขนาดใหญ่ที่มีฟังก์ชันจัดเรียง
- เป็นเว็บไซต์ที่มีประโยชน์มาก
-
- รวมไฟล์ Docker Compose ที่พร้อมใช้งานได้ทันที
- แม้บางแอปอาจมีปัญหาความเข้ากันได้จากการอัปเดต แต่โดยรวมแล้วเป็นแหล่งอ้างอิงที่ดี
4 ความคิดเห็น
ผมซื้อ n100 มาหนึ่งตัวตอนช่วงลดราคาของ Ali ที่ผ่านมา ติดตั้ง Proxmox แล้วก็สำรองข้อมูลทั้งหมดจากเซิร์ฟเวอร์ Oracle ARM ที่ใช้อยู่เดิมเอาไว้ก่อนแล้วครับ นอกจากนี้ยังติดตั้ง Xpenology กับ pfSense ไว้ด้วย ตอนนี้ยังไม่ได้เอามาใช้งานจริงจัง แต่กะว่าจะย้ายมาใช้เป็นเครื่องหลักในเร็ว ๆ นี้
ปลายปีที่แล้วผมสมัครสมาชิกบริการ VPN ตอนที่มีโปรลดราคาไว้ เพราะเริ่มเห็นเค้าลางว่าบริการรายใหญ่หลายเจ้าจะมีการเปลี่ยนแปลงหลายอย่าง เลยตั้งใจว่าจะค่อย ๆ ย้ายมาโฮสต์เอง ตอนนี้ก็คงต้องค่อย ๆ ทดสอบไปก่อนด้วยการย้ายรหัสผ่านกับบุ๊กมาร์กของเบราว์เซอร์มาทีละนิด
Docker + Portainer + Cloudflare + Uptime Kuma
ตอนนี้ผมก็ใช้อยู่แบบนี้ครับ
ความเห็นจาก Hacker News
ชอบแนวคิดการโฮสต์เอง กำลังดูแลเว็บไซต์ขนาดเล็กและโปรเจ็กต์หลายตัวอยู่ จึงไม่ได้มีปัญหาเรื่องทรัพยากรมากนัก
กำลังตั้งค่า VPS ตัวใหม่
reboot = when-changedเพื่อให้อัปเดตอัตโนมัติกังวลกับการเพิ่มขึ้นของการโฮสต์เอง
วางแผนจะใช้ dokku ต่อไปสำหรับโฮสต์เว็บแอป
กำลังจัดการ Hashicorp Nomad, Consul และ Traefik ด้วย OpenTofu
เคยลองใช้ Portainer แต่พบว่า
docker composeง่ายกว่าdocker compose pullอัตโนมัติผ่าน crontab ได้หากจะโฮสต์เอง แนะนำว่าอย่าใช้คอนเทนเนอร์และให้ใช้ static site generator แทน
กำลังโฮสต์เองด้วย FreeBSD jails และเชลล์สคริปต์
บทความนี้เป็นแรงกระตุ้นให้ปรับวิธีโฮสต์ของตัวเองให้ดีขึ้น