歡迎回到 免費 DDNS 自架 系列教學!在 [Ep.1 環境架設篇] 中,我們成功在 GCP 永久免費主機上部署了 Python 核心程式,並完成了 Argon2 密碼雜湊與 AES 設定檔加密。
但目前的系統還有兩個致命傷:
- 手動運作:如果您關閉 SSH 視窗或主機重開機,服務就會停止。
- 連線不安全:目前使用的是
http://明文傳輸。這意味著當您在咖啡廳登入管理後台時,您的密碼可能會被駭客攔截。
這不是我們要的「企業級」系統!
本篇教學 (Ep.2) 將帶您完成最後一哩路:設定 Systemd 自動啟動,並配置 Nginx 反向代理 與 Let’s Encrypt SSL 憑證,讓您的中控台擁有綠色安全鎖頭。
步驟一:設定 Systemd 自動啟動 (讓服務永不掉線)
我們要將 Python 程式註冊為 Linux 的系統服務,這樣即使 GCP 主機因維護而重啟,DDNS 中控台也會自動復活。
1. 建立服務設定檔
我們已為您準備好標準範本。請使用編輯器建立服務檔案:
sudo nano /etc/systemd/system/ddns.service2. 填入設定內容
請複製以下內容,並將 YOUR_USERNAME 修改為您的實際使用者名稱 (GCP 預設通常是您的 Google ID):
[Unit]
Description=Clone SecureDDNS Server v2.0
After=network.target
[Service]
Type=simple
# ⚠️ 請將 YOUR_USERNAME 替換為您的 Linux 使用者名稱
User=YOUR_USERNAME
WorkingDirectory=/home/YOUR_USERNAME/ddns-server
ExecStart=/home/YOUR_USERNAME/ddns-server/venv/bin/python ddns_management_server.py
Restart=always
RestartSec=10
# 安全性強化 (禁止修改系統核心與讀取其他目錄)
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/YOUR_USERNAME/ddns-server
[Install]
WantedBy=multi-user.target編輯完成後,按 Ctrl+X,輸入 Y,然後按 Enter 存檔。

3. 啟用服務
執行以下指令,讓服務生效並立即啟動:
# 重新載入設定
sudo systemctl daemon-reload
# 設定開機自動啟動
sudo systemctl enable ddns.service
# 立即啟動服務
sudo systemctl start ddns.service
# 檢查狀態 (應顯示 Active: active (running))
sudo systemctl status ddns.service步驟二:安裝 Nginx 反向代理
為了讓 免費 DDNS 自架 系統更安全且效能更好,我們不讓 Python 直接面對外網,而是透過高效能的 Web 伺服器 Nginx 來轉發流量。
1. 安裝 Nginx
sudo apt install -y nginx2. 設定 Nginx 轉發規則
建立一個新的網站設定檔:
sudo nano /etc/nginx/sites-available/ddns複製以下內容,請務必將 server_name 修改為您的網域 (Ep.1 中設定的那個):
server {
listen 80;
# ⚠️ 請修改為您的網域,例如: ddns.example.com
server_name ddns.您的網域.com;
# 一般請求轉發
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# 即時日誌串流 (Server-Sent Events) 支援
location /logs {
proxy_pass http://127.0.0.1:8080/logs;
proxy_http_version 1.1;
proxy_set_header Connection '';
proxy_buffering off;
proxy_cache off;
chunked_transfer_encoding off;
}
}3. 啟用設定
建立連結並測試設定是否正確:
# 建立連結
sudo ln -s /etc/nginx/sites-available/ddns /etc/nginx/sites-enabled/
# 測試 Nginx 設定檔語法 (應顯示 successful)
sudo nginx -t
# 重新載入 Nginx
sudo systemctl reload nginx
步驟三:申請 SSL 憑證 (掛上綠色鎖頭)
這是 免費 DDNS 自架 最重要的一步!我們使用 Certbot 來自動申請與安裝 Let’s Encrypt 的免費 SSL 憑證。
1. 安裝 Certbot
sudo apt install -y certbot python3-certbot-nginx2. 自動申請憑證
執行以下指令,Certbot 會自動驗證網域並修改 Nginx 設定:
sudo certbot --nginx -d ddns.您的網域.com過程中系統會詢問是否要強制將 HTTP 轉導向 HTTPS,請務必選擇 Redirect (輸入 2),確保連線永遠加密。

步驟四:最終驗證與安全性測試
恭喜!您已經完成了伺服器端的所有架設工作。
1. 開啟瀏覽器測試

在網址列輸入 https://ddns.您的網域.com。
- 檢查鎖頭:確認網址列旁是否有「鎖頭」圖示,代表 SSL 加密已生效。
- 登入測試:輸入 Ep.1 設定的管理員帳號密碼,確認能順利進入儀表板。
2. 測試即時日誌 (v2.0 獨家功能)
在管理介面點擊 「顯示即時日誌」。由於我們在 Nginx 正確設定了 SSE 支援,您應該能看到系統運作的即時狀態,這對於除錯非常有用。
結語與下集預告
經過 Ep.1 與 Ep.2 的努力,您現在擁有一台:
- GCP 永久免費 的高效能主機。
- 企業級資安 (Argon2 + AES) 的 Python 核心。
- 全自動運作 且具備 HTTPS 加密 的 Web 中控台。
這已經比市面上 90% 的付費 DDNS 服務還要強大了!
但這套系統目前還是「空」的,因為還沒有任何設備連上來。 在最後一篇 【Ep.3:客戶端串接實戰篇】,我們將教您如何將家中的 ASUS 路由器、Synology NAS 或是 OpenWrt 設備,透過簡單的設定串接到這個中控台,徹底擺脫 No-IP 的束縛!
請準備好您的路由器,我們下集見!