Synology NAS + Cloudflare Tunnel + 自有網域 tingchutw.com 的完整部署紀錄(可重建版)。
目標:不開 Port、不靠固定 IP、對外安全存取 NAS 的 Web Station(Nginx)。
資料流(由外到內):
Internet
→ Cloudflare DNS (tingchutw.com)
→ Cloudflare Tunnel
→ cloudflared (Docker on NAS)
→ http://192.168.0.190:80
→ Web Station (Nginx) /volume2/web
重點 cloudflared 是「主動連出去」,所以你不需要固定 IP,也不用 Port Forward。
確認首頁位置:
/volume2/web/index.html
SSH 測試(NAS 內部):
curl -I http://127.0.0.1
curl -I http://192.168.0.190
有回 200 OK(nginx)→ Web Station 正常。
Cloudflare 後台路徑:
Zero Trust → Networks → Tunnels → (你的 tunnel,例如 nas-profile)
→ Public Hostname / Routes
| 欄位 | 建議值 | 說明 |
|---|---|---|
| Hostname | tingchutw.com | 主網域 |
| Service | http://192.168.0.190:80 | 指向 NAS Web Station(不要填 localhost) |
| Path | (留空) | 整站轉發;要分流再填 /profile 等 |
常見錯誤 Error 1033 / 502 多半是:cloudflared 沒跑、或 Service URL 填錯(例如填成 localhost、或 NAS 服務沒回應)。
Container Manager 建議用:
常駐的核心就是「Docker restart policy」。
看容器是否在跑:
sudo docker ps | grep cloudflared
看最近 log:
sudo docker logs --tail 80 cloudflared
測試「自動重啟」:
sudo docker kill cloudflared
sudo docker ps
如果幾秒後又出現 cloudflared → 常駐 OK。
| 子網域 | 用途 | Service URL |
|---|---|---|
| lab.tingchutw.com | 技術筆記 / 實驗站 | http://192.168.0.190:80 |
| api.tingchutw.com | API / 小服務 | http://192.168.0.190:PORT |
| nas.tingchutw.com | NAS 入口(不建議裸露) | 建議加 Access 保護 |
安全建議 之後可加 Cloudflare Access(限制只有你的 Google 帳號能進)。