事前準備
- 需要擁有一個 doamin
- 需要將 domain 的domain server 託管至 floudflare
需要安裝 cloudflare-cli
sudo apt install curl lsb-release
curl -L https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/cloudflare-archive-keyring.gpg] https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update
sudo apt install cloudflared
使用
- 做登入
cloudflared tunnel login
- 新增一個 tunnel xxxxx(自行定義)
cloudflared tunnel create xxxxx
- 編輯一個 config.yml
cd /home/{{youruser}}/.cloudflared
# 建立一個 config,yml
vi config.yml
需要記得您 tunnel token 可以看看 .cloudflared 資料夾下的資料
會有一個 XXXX.json XXXX 就是您的 tunnel token
然後要將 json 路徑也寫到 config.yml 檔案內
假設 我的domain 為 ggg.com
我得服務 A 在我機器的 port 7001 我期望他在我子網域 a.ggg.com 出現
我得服務 B 在我機器的 port 7002 我期望他在我子網域 b.ggg.com 出現
檔案內容就會如下
tunnel: XXXX
credentials-file: /home/{{youruser}}/.cloudflared/XXXX.json
ingress:
- hostname: a.ggg.com
service: http://127.0.0.1:7001
- hostname: b.ggg.com
service: http://127.0.0.1:7002
- service: http_status:404
- 注意 最後一行的 http-status:404 不要刪除 不然會出錯
- 將設定好的dns 註冊至 cloudflared 會使用到第二步創立的 tunnel name
cloudflared tunnel route dns {{your_tunnel_name}} a.ggg.com
cloudflared tunnel route dns {{your_tunnel_name}} b.ggg.com
- 啟動服務
cloudflared tunnel run {{your_tunnel_name}}
便可透過
a.ggg.com 及 b.ggg.com 訪問