หลายท่านที่ใช้งาน Synology NAS อยู่ อาจจะทราบดีว่า ใน DSM เวอร์ชัน 7 นั้นรองรับการจัดการ DDNS หลากหลายเจ้าหลากหลายผู้ให้บริการ แต่เป็นที่น่าเสียดายว่าไม่รองรับ Cloudflare DDNS วันนี้เลยมาเสนอ วิธีที่ทำให้ NAS ของเรารองรับการอัพเดท DDNS ของเราไปยัง Cloudflare กันครับ
1 ใช้ Container Manager จัดการ Docker Image
วิธีนี้จะใช้ Docker Image ที่มีชื่อว่า “favonia/cloudflare-ddns” เป็นตัวอัพเดท Public IP ของเราขึ้นไปยัง Cloudflare อิมเมจตัวนี้กินทรัพยากรของเครื่องน้อยมากๆ และทำการเช็ค Public IP ทุกๆ 5 นาที หาก IP เปลี่ยนไปจะทำการแก้ไขไปยัง Cloudflare ทันที ซึ่งการรัน Docker ใน NAS จำเป็นต้องโหลดแพ็คเก็จ “Container Manager” จาก Package Manager ใน DSM มาติดตั้งก่อน โดยเมื่อเปิดโปรแกรมขึ้นมาจะได้หน้าตาของโปรแกรมตามรูปที่ 1
- ทำการสร้าง docker-compose โดยไปที่ Project > Create
- Project name: ใส่ชื่อโปรเจ็คที่เราต้องการใช้ ในที่นี้ใช้ “cloudflare-ddns”
- Path: ที่เก็บไฟล์ docker-compose.yml ในที่นี้ทำการสร้างโฟล์เดอร์ใน “/docker/cloudflare-ddns”
- Source: docker-compose ให้ก๊อปปี้โค้ดด้านล่างนี้ใส่ลงไป
version: "3" services: cloudflare-ddns: image: favonia/cloudflare-ddns:latest network_mode: host restart: always cap_add: - SETUID - SETGID cap_drop: - all read_only: true security_opt: - no-new-privileges:true environment: - PUID=1000 - PGID=1000 - PROXIED=true - CF_API_TOKEN=YOUR-CLOUDFLARE-API-TOKEN #เปลี่ยน API Token ตรงนี้ - DOMAINS=homelab.in.th # เปลี่ยน Domain ที่ต้องการอัพเดท IP ตรงนี้
- แก้ไขในส่วนของ “CF_API_TOKEN=” ค่าที่จะนำมาใส่ตรงนี้คือ Cloudflare API Token ของเราโดยเริ่มจากเข้าไปยัง Link นี้ https://dash.cloudflare.com/profile/api-tokens
- กด Create Token
- ตรง “Edit zone DNS” กด “Use template”
- ในส่วน “Zone Resources” เลือก include > Specific zone > “โดเมนที่เราจะทำการเปลี่ยน” ในที่นี้คือ “homelab.in.th”
- กด “Continue to summary”
- เลือก Create Token
- ก๊อปปี้ API Token นั้นมาวางยังโค้ดของเรา (API Token ที่ได้จะมีหน้าตาประมาณนี้ “-4kpGSwsEi4sl3BjA-PqBhmXf865x85i18UKKLBG“)
- ในส่วนของ “DOMAINS=” พิมพ์โดเมนที่เราต้องการอัพเดท IP ในที่นี้คือ “homelab.in.th”
- กด Next ไปเรื่อยๆ จนจบขั้นตอน จะได้ docker ที่รันสำเร็จ เป็นอันเสร็จสิ้น
สามารถทำการตรวจสอบว่า docker image ที่เรารันนั้นทำงานเป็นปกติหรือไม่โดยเข้าไปดู Log การทำงานได้ที่
- “Container” > เลือก “cloudflare-ddns” > Log
- เมื่อโปรแกรมทำงานได้สมบูรณ์ ตัว Log จะขึ้นว่า “The A records of “your.domain.name” are already up to date”
เมื่อเข้าไปเช็ค A record ใน Cloudflare ก็จะได้ Public IP ตรงกัน