Script tự động cập nhật IP hiện tại của server cho những record A, AAAA của các domain được quản lý bằng Cloudflare, thông qua Cloudflare's client API.
Môi trường Linux OS, đã cài đặt Bun.sh
Đăng nhập vào Cloudflare, vào My Profile, chọn API Tokens.
Tạo API Tokens
Zone DNS Edit, copy token này để cài đặt bước tiếp theo.
Tải source code:
git clone https://github.com/huynguyeexn/cloudflare-ddns.git
Sau khi tải, di chuyển đến thư mục cloudflare-ddns
chứa source code.
cd cloudflare-ddns
Tạo file .env
từ file .env.example
có sẵn.
cp .env.example .env
Thiết lập lại các thông số của file .env.
API_TOKEN
- Token được tạo ở bước trước đó.
- Ví dụ
API_TOKEN="ABCdeF-T6K7ppvhk6XDGbpN1fzBtr3WxP1P_mxoh"
RECORDS_NAME
- Mảng các records cần cập nhật.
- Ví dụ
RECORDS_NAME=["domaincuaban.com"]
,RECORDS_NAME=["domain1.com", "domain2.com"]
LATEST_IPV4
- IPv4 gần nhất được cập nhật, script sẽ tự động điền, không cần điền.
- Ví dụ
LATEST_IPV4=142.251.214.142
.
LATEST_IPV6
- IPv6 gần nhất được cập nhật, script sẽ tự động điền, không cần điền.
- Ví dụ
LATEST_IPV6=2405:4803:ffff:ffff:ffff:ffff:ffff:fffe
.
LOGGING_WHEN_UNCHANGED_IP_ADDRESS
- Show log nếu IP không có sự thay đổi (mặc định: false)
Cần cập nhật thông số cho file .env
, và cài đặt Bun.sh trước khi run source
Lệnh run source:
bun cloudflare-ddns.js
Lưu ý: Script không chạy tự động, script chỉ chạy khi dùng lệnh trên.
Nếu bạn muốn script chạy định kì thì xem tiếp phần dưới.
Để có thể định kì kiểm tra và cập nhật IP mới thì cần phải setup crontab:
Trong source code có file cloudflare-ddns-crontab
, được thiết lập cơ bản như sau:
*/5 * * * *
chạy crontab mỗi 5 phút, xem thêm tại đây crontab.guru.cd /root/.cloudflare-ddns/
di chuyển tới thư mục chứa source code, chỉnh sửa giá trị trên thành đường dẫn đến thư mục source code của bạn.bun cloudflare-ddns.js >> error.log 2>&1
run source và ghi lỗi vào fileerror.log
.
Sau khi cập nhật lại các thiết lập trong file cloudflare-ddns-crontab
.
Chúng ta copy file vào thư mục có đường dẫn /etc/cron.d/
.
cp cloudflare-ddns-crontab /etc/cron.d/cloudflare-ddns-crontab