Bài viết này là bản nâng cấp của hướng dẫn cập nhật IP động cho tên miền qua Cloudflare mình đã chia sẻ trước đây. Thay vì sử dụng bash script và thiết lập cron thì giờ mình chuyển qua cài đặt bằng Docker cho nhanh gọn.
https://thuanbui.me/cap-nhat-ip-dong-cho-ten-mien-qua-cloudflare-de-truy-cap-homelab-tai-nha
Mình sử dụng Docker image của tác giá timothymiller chia sẻ ở đây: https://github.com/timothymiller/cloudflare-ddns
1. Yêu cầu
-
Đã có sẵn tên miền và đã có tài khoản Cloudflare.
-
Tên miền đã được chuyển về CloudFlare quản lý.
-
Máy chủ / máy ảo chạy Linux (Ubuntu / Arch / CentOS / …) đã được cài sẵn Docker và Docker Compose
2. Chuẩn bị thông số từ Cloudflare
Bạn cần chuẩn bị các thông số sau từ Cloudflare
-
API Token
-
Zone ID
-
Subdomain (A record)
Xem lại hướng dẫn trong bài viết này:
https://thuanbui.me/cloudflare-zone-id-api-token/
3. Cài đặt cloudflare-ddns
Tạo thư mục mới trên máy chủ
mkdir ~/cloudflare-ddnscd ~/cloudflare-ddnsTạo file config.json
nano config.jsonVà nhập vào nội dung như bên dưới. Lưu ý cần thay đổi các thông số:
-
api_token (dòng 5): API Token của Cloudflare.
-
zone_id (dòng 11): Zone ID của tên miền.
-
name (dòng 14): submain bạn dùng để cập nhật IP. Ví dụ: subdomain là homeserver.thuanbui.me thì chỉ cần nhập homeserver
{ "cloudflare": [ { "authentication": { "api_token": "So5eFPERxxxxxxxxxxxxxxxx4U4YRwu80Op", "api_key": { "api_key": "", "account_email": "" } }, "zone_id": "aeb40exxxxxxxxxxxxxxxxxaf51a0b", "subdomains": [ { "name": "homeserver", "proxied": false } ] } ], "a": true, "aaaa": true, "purgeUnknownRecords": false, "ttl": 300}Nếu muốn cập nhật nhiều subdomain của cùng 1 tên miền, bạn bổ sung thêm thông số trong phần subdomains
{ "cloudflare": [ { "authentication": { "api_token": "So5eFPERxxxxxxxxxxxxxxxx4U4YRwu80Op", "api_key": { "api_key": "", "account_email": "" } }, "zone_id": "aeb40exxxxxxxxxxxxxxxxxaf51a0b", "subdomains": [ { "name": "homeserver1", // homeserver1.thuanbui.me "proxied": false }, { "name": "homeserver1", //homeserver2.thuanbui.me "proxied": false } ] } ], "a": true, "aaaa": true, "purgeUnknownRecords": false, "ttl": 300}Nếu muốn cập nhật cùng lúc nhiều tên miền, mỗi tên miền cần khai báo thông số riêng, như ví dụ bên dưới
{ "cloudflare": [ { "authentication": { "api_token": "So5eFPERxxxxxxxxxxxxxxxx4U4YRwu80Op", "api_key": { "api_key": "", "account_email": "" } }, "zone_id": "aeb40exxxxxxxxxxxxxxxxxaf51a0b", "subdomains": [ { "name": "homeserver", // homeserver1.domain1.me "proxied": false } ] }, { "authentication": { "api_token": "xxxxxxxxxxxxxxxxxxx", "api_key": { "api_key": "", "account_email": "" } }, "zone_id": "xxxxxxxxxxxxxxxxxxxxxxx", "subdomains": [ { "name": "homeserver", / /homeserver.domain2.me "proxied": false } ] } ], "a": true, "aaaa": true, "purgeUnknownRecords": false, "ttl": 300}Tạo file compose.yml, nhập vào nội dung bên dưới và lưu lại
services: cloudflare-ddns: image: timothyjmiller/cloudflare-ddns:latest container_name: cloudflare-ddns security_opt: - no-new-privileges:true network_mode: "host" environment: - PUID=1000 - PGID=1000 volumes: - ./config.json:/config.json restart: unless-stoppedKích hoạt bằng lệnh docker compose up -d.
Ứng dụng này sẽ tự động kiểm tra Public IP sau mỗi 15’ và cập nhật IP mới lên Cloudflare nếu phát hiện có sự thay đổi.
Vậy là xong.