การมีสถานีตรวจอากาศ (Personal Weather Station) ไว้ที่บ้านมันสนุกตรงที่เราได้ดูข้อมูลเรียลไทม์จากหลังบ้านตัวเองนี่แหละครับ แต่พอถึงจุดนึง เราก็อยากจะ "แชร์" หน้าแดชบอร์ดสวยๆ นี้ให้ครอบครัว เพื่อนบ้าน หรือคนในชุมชนได้ดูบ้าง...
แต่เดี๋ยวก่อน! การเปิดอินเทอร์เน็ตบ้านให้คนนอกเข้ามาดู (Port Forwarding) มันอันตรายมาก เพราะมันเสี่ยงต่อการโดนแฮกเข้ามาถึงระบบ Admin หรือเน็ตเวิร์กส่วนตัวในบ้านคุณได้เลย แถมถ้าเน็ตบ้านใครใช้แบบ CGNAT (ไอพีชนกัน) ก็จะทำ Port Forwarding ไม่ได้อีก!
บทความนี้เราจะมาสอนวิธีแก้เกมด้วย Tailscale (VPN ทะลุเน็ต) คู่กับ Caddy (รปภ. ส่วนตัว) ที่จะช่วยให้คุณแชร์เฉพาะหน้าเว็บที่อยากโชว์ออกไป โดยที่หลังบ้านยังปลอดภัย 100% แถมไม่ต้องจดโดเมนเนมให้วุ่นวายด้วยครับ!

ภาพรวมการทำงาน (Architecture Overview)
เพื่อให้เห็นภาพชัดเจน ลองดูสเต็ปการไหลของข้อมูลในระบบนี้กันครับ:
-
เก็บข้อมูล: สถานีตรวจอากาศ (เช่น TP3000WC) ส่งข้อมูลสภาพอากาศไปที่บอร์ด Raspberry Pi
-
กระจายข้อมูล: โปรแกรม FOSHKplugin บน Pi จะทำหน้าที่เป็นฮับ ส่งข้อมูลกระจายไปให้ซอฟต์แวร์วิเคราะห์อากาศต่างๆ เช่น WeeWX และ CumulusMX (รันบน Windows)
-
สร้างทางออก: เราจะใช้ฟีเจอร์ Funnel ของ Tailscale ในการสร้างอุโมงค์นำหน้าเว็บออกสู่โลกภายนอก (ไม่ต้องตั้งค่า Router เลย)
-
คัดกรองคนเข้า: Caddy จะยืนดักอยู่หน้าประตู คอยเช็กว่าใครจะเปิดดูหน้าเว็บทั่วไป (ยอมให้ผ่าน) หรือใครจะแอบเข้าหน้า Admin (บล็อกทิ้งทันทีด้วยโค้ด 403 Forbidden)
สิ่งที่คุณไม่ต้องเตรียม! (What You Do NOT Need)
ปกติทำแบบนี้ต้องวุ่นวายเรื่องเซิร์ฟเวอร์ แต่งานนี้บอกเลยว่าชิลมาก เพราะคุณ ไม่ต้องมี:
- โดเมนเนม (Domain name) ไม่ต้องจด!
- ไอพีสาธารณะแบบคงที่ (Static Public IP) ไม่ต้องใช้!
- Dynamic DNS (DDNS) ไม่ต้องมี!
- การตั้งค่าเปิดพอร์ตบน Router (Port Forwarding) ไม่ต้องทำเลย!
ตั้งค่า Tailscale และ Caddy (กุญแจสำคัญของความปลอดภัย)
1. Tailscale: โหลดมาติดตั้งบนเครื่อง Windows และ Raspberry Pi สมัครใช้งานและล็อกอินให้เรียบร้อย จากนั้นเข้าไปที่หน้า Admin Console (บนเว็บ) เปิดใช้งาน MagicDNS และตั้งค่าอนุญาตฟีเจอร์ Funnel ให้เครื่องของคุณ จากนั้นเปิด Command Prompt แล้วพิมพ์:
tailscale funnel --bg 443 เพื่อเปิดอุโมงค์ให้โลกภายนอกเข้าถึงได้
2. Caddy: โหลดไฟล์ Caddy มาไว้ที่โฟลเดอร์ C:\Caddy\ แล้วสร้างไฟล์ชื่อ Caddyfile ขึ้นมา (ไม่ต้องมีนามสกุล) โดยไฟล์นี้จะเป็นตัวกำหนดกฎว่าลิงก์ไหนเปิดได้ ลิงก์ไหนต้องโดนบล็อกครับ
คลิกเพื่อดูและคัดลอกโค้ดไฟล์ Caddyfile และ การตั้งค่า (View More)
# --- ตัวอย่างการตั้งค่าไฟล์ Caddyfile ---
# กำหนด URL ของ Tailscale ของคุณ
oscar-ii.tailb986d2.ts.net {
# บล็อกการเข้าถึงหน้า Admin และ API ส่วนตัว (403 Forbidden)
@blocked {
path /api/settings*
path /api/station*
path /login*
path /api/edit*
}
respond @blocked "403 Forbidden" 403
# อนุญาตให้เข้าถึงหน้าอื่นๆ แล้วส่งไปที่ CumulusMX (พอร์ต 8998)
reverse_proxy localhost:8998
}
# --- คำสั่งสำหรับรัน Caddy บน Windows (เปิด CMD แบบ Admin) ---
# cd C:\caddy
# caddy validate (เช็กว่าโค้ดพิมพ์ถูกไหม)
# caddy service install (ติดตั้งเป็น Windows Service)
# caddy service start (เริ่มการทำงาน)
ตั้งค่า CumulusMX และ ทดสอบการใช้งาน (Testing)
ก่อนจะแชร์ให้คนอื่นดู เราต้องไปตั้งค่าใน CumulusMX ให้มันสร้างไฟล์เว็บไซต์แบบ Local (เข้าเมนู Settings > Internet Settings > ติ๊กถูกที่ Enable local file copy) เพื่อให้ Caddy ดึงไฟล์ไปโชว์ได้
วิธีทดสอบที่ดีที่สุด: ให้ปิด Wi-Fi มือถือ แล้วใช้เน็ตมือถือ (Cellular) ล้วนๆ (เพื่อจำลองเป็นคนนอก) ลองเข้าลิงก์ Tailscale ของคุณดูครับ (เช่น https://oscar-ii.tailXXXX.ts.net/gauges.htm)
- ถ้าเข้าหน้าแดชบอร์ดดูสภาพอากาศได้ปกติ = ผ่าน!
- ถ้าลองเติมคำว่า
/login แล้วเว็บโชว์ 403 Forbidden = ผ่าน! (ระบบป้องกันทำงานได้เยี่ยมมาก)
คลิกเพื่อดูรูปภาพการตั้งค่าเพิ่มเติม (View More)
สรุปความสำเร็จ:
ยินดีด้วยครับ! ตอนนี้คุณมีระบบแชร์หน้าแดชบอร์ดสภาพอากาศที่ปลอดภัยสุดๆ โดยที่ คนนอกสามารถดูหน้าเว็บได้ แต่ หลังบ้านของคุณยังคงเป็นความลับ ระบบนี้ทำงานอัตโนมัติตั้งแต่เปิดเครื่อง ไม่ต้องกลัวไฟดับแล้วระบบล่ม ทีนี้ก็เอาลิงก์ไปแชร์อวดเพื่อนๆ ในคอมมูนิตี้อากาศอย่าง Weather Underground หรือ Wxforum ได้อย่างสบายใจเลยครับ!
สนใจอุปกรณ์บอร์ดพัฒนาและคอมพิวเตอร์ขนาดเล็ก (Raspberry Pi) สำหรับโปรเจกต์เครือข่ายไหม?
คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา