# 如何在 Windows 安裝和設定 Cloudflare Tunnel 服務

Cloudflare Tunnel 是 Cloudflare 提供的一種服務，允許你將本地服務安全地暴露給網際網路，而無需開放防火牆或設定路由器。我最近因為重新整理了一台測試機，整理了一些筆記，本篇文章我打算記錄如何在一台乾淨的 Windows Server 環境中安裝和設定 Cloudflare Tunnel 服務的過程。

![Image](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/69b37de6e126f660d64b-e2b11cd2-9228-4134-801d-a12a30e62664.webp)

### 安裝 Cloudflare Tunnel

你必須先[下載](https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads/#windows)正確的 [cloudflared](https://github.com/cloudflare/cloudflared) 命令列工具。

透過 [winget](https://learn.microsoft.com/en-us/windows/package-manager/) 的安裝命令如下：

```bash
winget install --id Cloudflare.cloudflared
```

> 請勿使用 [chocolatey](https://chocolatey.org/install) 安裝！

你也可以從 [GitHub Release](https://github.com/cloudflare/cloudflared/releases) 下載最新版本回來安裝。

### 設定 Cloudflare Tunnel

請依照以下步驟設定即可：

1.  登入 Cloudflare 帳號並產生 `~\.cloudflared\cert.pem` 通道憑證 (Argo Tunnel Token)
    
    ```bash
    cloudflared tunnel login
    ```
    
    > 選擇 your-domain.com 域名
    
2.  列出現有 Cloudflare 帳號下的通道
    
    建立 `my-tunnel` 通道 (建立過就不用再次建立)
    
    ```bash
    cloudflared tunnel create my-tunnel
    ```
    
    回傳內容：
    
    ```
    Tunnel credentials written to C:\Users\Administrator\.cloudflared\8f721c95-xxxx-xxxx-xxxx-90f59448c88e.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.
    
    Created tunnel my-tunnel with id 8f721c95-xxxx-xxxx-xxxx-90f59448c88e
    ```
    
    > 💡 這裡 `8f721c95-xxxx-xxxx-xxxx-90f59448c88e` 就是通道編號 (Tunnel-UUID)。
    
    列出通道資訊
    
    ```bash
    cloudflared tunnel list
    ```
    
    查詢通道資訊
    
    ```bash
    cloudflared tunnel info my-tunnel
    ```
    
    > 注意: 這裡 `cloudflared tunnel list` 會顯示你的通道編號 (Tunnel-UUID)，這是跟著 Cloudflare 帳號 (Account) 走的，而不是跟著網域 (Domain) 走的。
    
3.  用取得到的 Tunnel Token (Tunnel credentials) 建立 `CNAME` 域名
    
    ```bash
    cloudflared tunnel route dns 'my-tunnel' 'testing-5678.your-domain.com'
    ```
    
4.  手動建立 `~/.cloudflared/config.yml` 設定檔案
    
    ```yaml
    tunnel: 8f721c95-xxxx-xxxx-xxxx-90f59448c88e
    
    ingress:
    
      - hostname: testing-5678.your-domain.com
        service: http://localhost
    
      - service: http_status:404
    ```
    
    注意: 這裡 `8f721c95-xxxx-xxxx-xxxx-90f59448c88e` 就是你的 Tunnel UUID，此值可從 `cloudflared tunnel list` 命令中獲取。
    
5.  測試並執行
    
    確認設定無誤後，即可啟動 Tunnel：
    
    ```bash
    cloudflared tunnel run my-tunnel
    ```
    

這樣就完成了 Cloudflare Tunnel 的設定，現在你可以透過 `testing-5678.your-domain.com` 這個域名來訪問你本地的服務了。

### 相關連結

-   Cloudflare Zero Trust docs
    -   [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/)
    -   [Downloads](https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads/#windows)
-   Cloudflare Blog
    -   [Argo Tunnels that live forever](https://blog.cloudflare.com/argo-tunnels-that-live-forever/)
-   相關文章
    -   [如何在 Ubuntu 22.04.5 LTS 上安裝和配置 Cloudflare Tunnel 服務](/post/2025/04/09/How-to-install-and-configure-Cloudflare-Tunnel-service-on-Ubuntu)
    -   [使用 Cloudflare Tunnel 的 TryCloudflare 取代 ngrok](/post/2023/08/25/Cloudflare-Tunnel-TryCloudflare)
    -   [使用 Cloudflare Tunnel 需要建立跨帳號通道時該如何正確設定](/post/2024/09/18/Set-up-when-using-Cloudflare-Tunnel-to-create-cross-account-tunnels)
