DuckDNS:免費動態網域名稱解析 (DDNS)
DuckDNS 是一款免費且穩定的動態 DNS (DDNS) 服務。多數家用寬頻網路使用的是浮動 IP(每次路由器重開或租約到期時 IP 都會變動),DuckDNS 讓你能免費取得專屬子網域(如 yourname.duckdns.org),並透過容器定時自動回報最新 IP,確保對外連線不中斷。

申請步驟 (DuckDNS 官網)
- 前往 DuckDNS 官方網站。
- 選擇使用 GitHub、Google 或其他第三方帳號登入。
- 複製頁面頂部的 account token(帳號專屬金鑰)。
- 在 domains 欄位輸入你想要的子網域名稱(例如
myhomelab),點擊 add domain 建立。
部署自動更新容器 (Docker Compose)
我們使用 LinuxServer.io 維護的 DuckDNS 映像檔,容器會在背景定時(預設每 5 分鐘)偵測並向 DuckDNS 伺服器更新 IP。
1. 建立目錄
sudo mkdir -p /opt/stacks/duckdns/config
cd /opt/stacks/duckdns
2. 建立 compose.yaml
services:
duckdns:
image: lscr.io/linuxserver/duckdns:latest
container_name: duckdns
restart: unless-stopped
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Taipei
# 填入建立的子網域名稱(不需包含 .duckdns.org,多個網域以逗號分隔)
- SUBDOMAINS=myhomelab
# 填入 DuckDNS 帳號 Token
- TOKEN=your_duckdns_token_here
# 指定更新 IPv4 (可選 ipv4, ipv6, both)
- UPDATE_IP=ipv4
- LOG_FILE=false
volumes:
- ./config:/config
3. 啟動服務
sudo docker compose up -d
驗證與狀態檢查
1. 檢視容器更新紀錄
sudo docker compose logs -f duckdns
若看到 Your IP was updated successfully 或 IP 無變動的提示,代表運作正常。
2. 檢查 DNS 解析
在終端機使用 nslookup 或 ping 指令確認網域已正確指向家用公網 IP:
nslookup myhomelab.duckdns.org