免費搭建 OpenWebUI:Cloudflare Tunnel 零成本部署方案

Deploying OpenWebUI for Free with Cloudflare Tunnel

Updated on July 19, 2026Posted by Allen on November 8, 2025

你想要擁有一個私人的 AI 對話平台,但不知道如何開始嗎? 想要從任何地方訪問你的 AI 助手,但不懂複雜的網絡配置嗎? 那麼你可以使用 Cloudflare Tunnel + DigitalPlat 免費域名 零成本搭建一個完整的 OpenWebUI 實例,通過免費域名和 Cloudflare 的全球 CDN 實現安全訪問,無需開放任何服務器端口,也不需要設定公網 IP。

本文以AWS EC2部署 (也可以是任何的Linux主機,或使用個人電腦安裝Docker Desktop來部署)
部署方式可以是 Docker 命令、Docker Compose 或 Kubernetes,本文以 Docker 為例。


架構說明

用戶瀏覽器 → Cloudflare CDNCloudflare Tunnel 
EC2 Docker ContainerOpenWebUI

技術棧

  • 前端訪問:免費域名 + Cloudflare CDN
  • 內網穿透:Cloudflare Tunnel(內網穿透)
  • 計算資源:AWS EC2(Ubuntu/Debian)
  • 容器化:Docker
  • 應用:OpenWebUI

第一階段:帳號準備與域名配置

1.1 註冊必要帳號

需要註冊的帳號

  1. Cloudflare 帳號 - https://dash.cloudflare.com/sign-up
    • 用途:域名 DNS 託管、CDN、Tunnel 服務
  2. GitHub 帳號 - https://github.com/signup
    • 用於DigitalPlat帳號註冊的KYC認證
  3. DigitalPlat 帳號
    • 用途:獲取免費域名,託管到Cloudflare
  4. AWS 帳號 - https://aws.amazon.com
    • 用途:部署 EC2 服務器
    • 可以用任何的Linux主機,或使用個人電腦安裝Docker Desktop來部署,本文以AWS舉例

1.2 申請並託管免費域名

步驟

  1. 在 DigitalPlat 申請免費域名
  2. 登入 Cloudflare 控制台
  3. 點擊「添加站點」
  4. 輸入你的域名
  5. 選擇「Free」方案
  6. 記錄 Cloudflare 提供的 Nameserver(通常是兩個)
  7. 回到 DigitalPlat,將 Nameserver 修改為 Cloudflare 提供的地址
  8. 等待 DNS 生效(通常數十分鐘內,最長可能需要 24 小時)

詳細教學請參考這部影片


第二階段:Cloudflare Tunnel 設定

2.1 創建 Cloudflare Tunnel

  1. 登入 Cloudflare 控制台,左側菜單選擇「Zero Trust」

  2. 在左側選單中點擊「Networks」,在彈出的下拉選單中選擇「Tunnels」

  3. 在「Create a Tunnel」頁面中點擊「Create a Tunnel」

  4. 選擇「Cloudflared」類型

  5. 為 Tunnel 命名(例如:test-openwebui),點擊「Save Tunnel」

  6. 在「Choose your environment」中選擇「Docker」,複製顯示的 Docker 命令(後續需要使用)

2.2 暫時保留配置頁面

先不要關閉這個頁面,我們稍後會回來配置公共主機名。


第三階段:AWS EC2 實例部署

3.1 啟動 EC2 實例

  1. 登入 AWS 控制台

  2. 進入 EC2 服務

  3. 點擊「Launch Instance」

實例配置建議

  • 名稱openwebui-server
  • AMI:Ubuntu 24.04 LTS 或 Debian 13
  • 實例類型:t3.small
  • 密鑰對:創建新密鑰或使用現有密鑰(用於 SSH 連接)
  • 網絡設定
    • 允許 SSH(端口 22)從你的 IP
    • ⚠️ 不需要開放 HTTP/HTTPS 端口(Tunnel 會處理)

設定好各項參數後,點擊「Launch Instance」並等待啟動

儲存空間要設定大一點

3.2 連接到 EC2 實例


第四階段:服務器環境配置

4.1 更新系統

# 更新套件列表
sudo apt update && sudo apt upgrade -y

4.2 安裝 Docker CE

使用官方一鍵腳本

# 下載並執行 Docker 官方安裝腳本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 將當前用戶加入 docker 群組(避免每次都用 sudo)
sudo usermod -aG docker $USER

# 登出後重新登入,或執行
newgrp docker

# 驗證安裝
docker --version
docker ps

設置 Docker 開機自動啟動

sudo systemctl enable docker
sudo systemctl start docker

第五階段:部署容器服務

5.1 安裝 Cloudflared(Tunnel 客戶端)

複製2.1 第 6 步Cloudflare頁面中的docker指令,應該會長這樣

docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <你的 TUNNEL_TOKEN>

複製指令中的TOKEN ,將下列指令中的<你的 TUNNEL_TOKEN>修改成複製的TOKEN,在終端中貼上

# 創建 Docker 網絡
docker network create cloudflare-tunnel

# 運行 cloudflared(注意要加入剛創建的 cloudflare-tunnel 網絡,
# 否則後續用容器名稱 openwebui:8080 會解析不到)
docker run -d \
  --name cloudflared-tunnel \
  --network cloudflare-tunnel \
  --restart unless-stopped \
  cloudflare/cloudflared:latest \
  tunnel --no-autoupdate run --token <你的 TUNNEL_TOKEN>

驗證運行

# 查看容器日誌
docker logs cloudflared-tunnel

# 應該看到類似 "Connection registered" 的訊息

5.2 部署 OpenWebUI

# 運行 OpenWebUI 容器
docker run -d \
  --name openwebui \
  --network cloudflare-tunnel \
  -v open-webui:/app/backend/data \
  --restart unless-stopped \
  ghcr.io/open-webui/open-webui:main

參數說明

  • --network cloudflare-tunnel:與 cloudflared 同網絡,Tunnel 直接以容器名稱 openwebui:8080 連線,因此不需要 -p 對主機發布任何端口(-p 會把端口開放到主機所有網絡介面,並非「僅內網」)
  • -v open-webui:/app/backend/data:持久化數據存儲

驗證運行

docker ps
# 應該看到兩個容器:cloudflared-tunnel 和 openwebui

# 檢查 OpenWebUI 日誌
docker logs openwebui


第六階段:配置 Cloudflare 公共主機名

6.1 添加公共主機名路由

  1. 回到 Cloudflare Tunnel 配置頁面

  2. 點擊你創建的 Tunnel

  3. 選擇「Published application routes」標籤

  4. 點擊「Add a published application route」

配置詳情

  • Subdomainopenwebui(或你喜歡的子域名)
  • Domain:選擇你的域名(yourname.example.com
  • Path:留空
  • Service Type:HTTP
  • URLopenwebui:8080

⚠️ 重要說明

  • 如果兩個容器在同一 Docker 網絡,使用容器名稱 openwebui:8080
  • 如果使用Host網絡模式,使用 127.0.0.1:8080
  • 172.17.0.1 是 Docker 默認Bridge網絡網關(Cloudflared默認的安裝命令是使用Bridge模式)
  1. 點擊「Save hostname」

6.2 SSL/TLS 設置(可選)

  1. 在 Cloudflare 域名控制台
  2. 進入「SSL/TLS」設置
  3. 選擇「Full」或「Full (strict)」模式
  4. 啟用「Always Use HTTPS」

第七階段:訪問與測試

7.1 首次訪問

在瀏覽器輸入:

https://openwebui.yourname.example.com

首次訪問會

  1. 要求創建管理員帳號
  2. 設置系統語言和偏好
  3. 連接 AI 模型(如果配置了 API)

7.2 健康檢查

# 在 EC2 上測試(未對主機發布端口,所以從容器內測試)
docker exec openwebui curl -sf http://localhost:8080 -o /dev/null && echo OK

# 檢查 Tunnel 連接狀態
docker logs cloudflared-tunnel | grep "registered"

故障排除

問題 1:無法訪問域名

檢查清單

# 1. 驗證 DNS 解析
dig openwebui.yourname.example.com

# 2. 檢查 Tunnel 連接
docker logs cloudflared-tunnel

# 3. 檢查 OpenWebUI 運行狀態
docker logs openwebui

# 4. 確認兩個容器都在同一網絡(cloudflared 鏡像很精簡,沒有 ping 可用)
docker network inspect cloudflare-tunnel

問題 2:502 Bad Gateway

可能原因

  • OpenWebUI 容器未正常運行
  • Tunnel 配置的 URL 錯誤
  • 容器間網絡不通

解決方案

# 重啟容器
docker restart openwebui
docker restart cloudflared-tunnel

# 檢查容器網絡
docker network inspect cloudflare-tunnel

問題 3:Cloudflared Token 錯誤

重新獲取 Token

  1. 刪除舊 Tunnel(如需要)
  2. 創建新 Tunnel
  3. 複製新 Token
  4. 更新容器配置

連接 AI 模型

參考這篇文章


參考資源