緣起:
前陣子很想弄看看自己的網路服務,一開始是用
ngrok,不過它有流量限制,發現 cloudflare 沒有流量限制後,我就開始研究
cloudflare,看著這篇文章跟著操作。
買 Domain:
先到 cloudflare 網站,創一個帳號,我是用我 google 帳號來登入
(有 google 就用 google 己經是習慣了)。登入後再去 Domain 那邊,沒自己的
Domain 的話可以直接買
Cloudflare Tunnel:
我想給我的 Raspberry Pi 跑,所以採用 debian
的安裝方式
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
sudo apt update && sudo apt install cloudflared -y
我在看著文章操作時,在啟動 tunnel
時碰上問題,一直說我設定檔有問題,我不確定是哪個環節出了問題,所以最後是請教
claude,請它幫我列完整步驟,我再跟著操作。
我用 sudo su 切成 root 後再做以下的操作。
首先登入
cloudflared tunnel login
它會開你電腦的預設瀏覽器讓你登入,登入完後憑證放
root/.cloudflared/sert.pem
然後建立 tunnel
cloudflared tunnel create default
執行完後它會給你一個 UUID 跟憑證檔,在
/root/.cloudflared/<UUID>.json,也可以在 cloudflare 網頁的
Tunnel 面板上看到新建立的 tunnel,或是下指令 cloudflared tunnel
list 來確認
寫設定檔 /root/.cloudflared/config.yml
tunnel: <UUID>
credentials-file: /root/.cloudflared/<UUID>.json
ingress:
- hostname: comfyui.birdshiu.com
service: http://192.168.3.3:8188
- service: http_status:404
ingress 會從頭比對,最後的 http_status:404
那行一定要加,不然啟動會報錯。一般情況下,service 通常都會填
localhost,但我想要開放的服務是區網內的跑 comfyui 的桌電,只要你的 pi
能透過區網訪問到其它電腦的服務,service 那邊是可以直接填那個電腦的
ip。
然後指到 DNS,它會建立一個指向 <UUID>.birdshiu.com 的
CNAME
cloudflared tunnel route dns default comfyui.birdshiu.com
去 cloudflare 網頁的 DNS 面板可以看到
再來測試
cloudflared tunnel run my-tunnel
跑起來後,開網頁輸入網址測試,確認OK!然後按 control + c
結束,接著要把它註冊成 systemctl 的服務。
cloudflared --config /root/.cloudflared/config.yml service install
systemctl enable --now cloudflared
它那個 service install 會把設定跟憑證複製到 /etc/cloudflared,之後要更改的話就改 /etc/cloudflared/config.yml。然後切回一般使用者,查看一下 cloudflare 運行的情況,沒報錯的話,你的網站就正式上線了 ~~
Zero Trust:
我的 comfyui 沒有任何登入驗證,進入頁面後就能直接使用,這可不行,我只想讓我那位韓國朋友存取而已,所以一定要做防護。Cloudflare 有 Cloudflare Access,啟用後會先檔在網站前面。
我想要設定成只有特定的 email 能存取我的網站,使用者進入我的網站前需要輸入 email,如果是在白名單內的 email,系統就會送 PIN 碼,使用者在頁面輸入 PIN 碼就能通行。
去 Cloud One 頁面,Intergrations -> Identity providers,這裡可以管理身份識別提供,預設只有 Cloudflare,我們要新增 One-time PIN
到 Zero Trust -> Access controls -> Applications,Create new application
離開 Policy 頁面後,接著設定 Authentication,Chooese available identity providers for this application,我把 cloudflare 拿掉,放 onetimepin
最後 Save,這樣就完成了。它應該是即時生效的啦(?),我那時搞蠻久的,一直改設定,然後請那位韓國朋友幫我測試,反反覆覆幾次後,大概記得自己的整個作業流程是這樣。








沒有留言:
張貼留言