Skip to content
Thuan Bui's Blog
Go back

Cấu hình Dynamic DNS qua Cloudflare sử dụng Docker Compose

Updated:

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

2. Chuẩn bị thông số từ Cloudflare

Bạn cần chuẩn bị các thông số sau từ Cloudflare

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ủ

Terminal window
mkdir ~/cloudflare-ddns
cd ~/cloudflare-ddns

Tạo file config.json

Terminal window
nano config.json

Và nhập vào nội dung như bên dưới. Lưu ý cần thay đổi các thông số:

{
"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-stopped

Kí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.


Share this post on:

Previous Post
Hướng dẫn Proxmox Backup Server - sao lưu máy ảo VM / LXC Container cho Proxmox
Next Post
[Hackintosh] Cài đặt macOS Ventura lên PC CPU Intel Gen 10 + Mainboard Asus H410M-D