ปกติแล้ว synology nas มันจะมี service ที่ให้เชื่อมต่อจากภายนอกผ่านตัว quick connect อยู่แล้ว แต่ข้อเสียของมันช้ามาก เวลา download ไฟลฺ์ ทางแก้จะมีหลายแบบตั้งแต่
- การทำ Forword Port ใช้กับ thddns
- cloudflare tunnel จากที่ลอง research เหมือนจะมีข้อจำกัดเรื่องการการ upload นะ แต่ผมไม่ได้ซีเรียสอะไรอยู่แล้ว เอามา download + stream มากกว่า
สิ่งที่ต้องเตรียม
- domain name อันนี้ผมสมัครของ cloudflare
- synology nas ที่ setup อะไรเรียบร้อยแล้ว ที่สำคัญ
- ติดตั้ง package Container Manager (docker) ให้เรียบร้อยครับ
- Fixed IP NAS
หลังจากมีของพร้อมแล้ว มาตั้งค่ากันครับ
สมัครใช้งาน Cloudflare ZeroTrust
ถ้าดูจาก doc ของ Cloudflare การจะเปิด Cloudflare Tunnel ต้องเปิดตัว Cloudflare ZeroTrust ก่อน สำหรับใครที่มีแล้วข้ามไปเลยนะ ถ้าใครไม่มีตามขั้นตอนเลยครับ
จริงมีจุดที่สนใจน่าจะเรื่องของการจ่ายเงินครับ อย่าลืมเลือก Free Plan

Create Cloudflare Tunnel
ในส่วนของ Cloudflare ZeroTrust ให้เข้ามาในส่วน Cloudflare Zero Trust > Tunnel > Add a Tunnel

ที่นี้มันมีทางเลือก 2 แบบ Cloudflared กับ WARP Connector (ของใหม่ เหมือนจะ By Pass Limit 100 MB ได้ แต่ผมยังไม่ได้ลอง)

ตั้งชื่อ tunnel

มันมีการเชื่อมต่อหลายแบบเลย เลือก docker มันจะ default คำสั่งมาให้

รูปแบบคำสั่งจะประมาณนี้ ปกติเราเอาคำสั่งไปรันเลย แต่ไหนใช้ของ Synology แล้วก็ไปทำในขั้นตอนถัดไปเลย
docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token [-CLOUDFLARE_GENERATE_TOKEN-]
Link NAS ของเรากับตัว Cloudflare Tunnel
ติดตั้ง Container ของ Cloudflare Tunnel โดยเข้าที่ Container Manager > Registry หา Container จาก cloudflare/cloudflared
ตามขั้นตอนเลย

จากนั้นเข้าไป Image > เลือก Container cloudflare/cloudflared
จากนั้นกด Run เลย

ตอนนี้ระบบพามา Wizard การกำหนดค่าของ Container ส่วนแรก
- ตั้งชื่อ Container
- กำหนด Resource Limit ๆไว้ที่ 256 mb ตามรูปเลย แต่แอบคิดว่าให้มากไปเหมือนกัน 55
- กำหนด Auto Restart
- จากนั้นกด Next

เลือกลงมาด้านล่างสุด มีส่วนสำคัญที่ต้องกำหนด ให้เลื่อนลงมาเกือบล่างสุด

- Network - ให้เลือกเป็น Host
- Execution Command ใส่ตามนี้เลยครับ
-- OLD docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token [-CLOUDFLARE_GENERATE_TOKEN-] -- PASTE IN CONTAINER MANAGER tunnel --no-autoupdate run --token [-CLOUDFLARE_GENERATE_TOKEN-]
หน้าสรุปประมาณนี้ครับ อย่าลืมเลือก Check Box Run This Container แล้วกด Done

รอ Container Start ที่นี่กลับไปในส่วนของ Tunnel แล้ว พบว่ามัน Connect แล้วครับ

Map FQDN (Domain) with Cloudflare Tunnel
ปกติแล้วเวลาเข้า NAS มันจะ Error แบบนี้

เราจะมา Map Domain ของเรา โดยเข้าไปที่ Cloudfare Tunnel ที่เราเพิ่งสร้าง Edit Configuration > Public Hostname > Add Public Hostname จากนั้นตั้งค่า
- Subdomain / Domain ผมกำหนดเป็น nas.mydomain.com
- Service ผมกำหนดเป็น Type https และ url เป็น ip ที่เราเข้า nas
** อย่าลืมเลือก No TLS Verity ด้วยนะ แต่ถ้าเรามี Cert อยู่แล้ว เอามาใช้ได้นะ จะได้ไม่ต้องติ๊กออก

จริงตอนแรกผมลองแบบ http แต่เจอ error 400 bad request ได้ เลยย้ายไปใช้ของ https + แก้ port

จากนั้นลองทดสอบเข้า nas ผ่าน nas.mydomain.com พบว่าใช้ได้ แล้วถ้าไปดูใน dashboard จะพบว่ามันมี Traffic ไหลเข้ามาแล้ว

Tips
สำหรับใครที่ใช้ DS File ของ Synology ให้เติม :443
ต่อท้าย url ด้วย เช่น nas.mydomain.com:443
เข้าไปใช้งาน
Reference
- https://www.reddit.com/r/synology/comments/1gjxsim/guide_how_to_setup_cloudflare_tunnel_and_zero/
- iOS DS File won't work with custom domain
- Mobile Apps Not Working w/ Cloudflare Tunnels
- Synology access using Cloudflare
- Access Synology NAS portal via Cloudflared
- The plain HTTP request was sent to HTTPS port
- Dealing with nginx 400 "The plain HTTP request was sent to HTTPS port" error
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.