在 ServBay 中設定 frp 反向代理服務指南
frp(Fast Reverse Proxy)是一款高效能的反向代理應用程式,讓您可以將本地網路服務安全地曝光到公網。ServBay 已整合 frp 用戶端(frpc)功能,讓您能連線到自己部署的 frp 伺服器端(frps),並透過自訂網域來存取您在 ServBay 中托管的本機網站。這種作法讓您對隧道伺服器擁有完全掌控權。
本指南將詳細說明如何在 ServBay 中設定 frp 用戶端,並連結到您的 frps 伺服器。
概述
與 ServBay 內建其他託管式隧道服務不同,frp 需要您自行在伺服器上預先部署並設定 frps 伺服器端。ServBay 則作為 frpc 用戶端,負責將本地網站流量透過 frps 伺服器中轉到外部網路。這種模式特別適合對隧道需求更高彈性及自主權的開發者。
應用場景
- 完全掌控隧道主機: 您可完全管理 frps 伺服器的設定、安全與效能。
- 彈性搭配自訂網域與 SSL: 可彈性設定任何您擁有的網域給本地專案,並結合 ServBay 管理的 ACME SSL 證書。
- 進階網路設定: frp 支援多種代理型別及進階設定,滿足複雜網路應用需求。
- 私有化部署: 適合不願依賴第三方隧道服務的企業或個人。
前置條件
- 已安裝 ServBay: 請確認 macOS 系統成功安裝並執行 ServBay。
- 自架
frps
伺服器:- 您必須有一台可連外的伺服器,並已在上面部署並啟動
frps
。 - 記錄
frps
伺服器的公網 IP 或網域名稱。 - 記錄
frps
設定檔(frps.toml
或frps.ini
)內的bindPort
(frp 端對端通訊埠)與token
(驗證金鑰)。
- 您必須有一台可連外的伺服器,並已在上面部署並啟動
- 網域名稱與 DNS 設定:
- 您需擁有一組公有網域(如
your-frp-server.com
),並將其 DNS A 記錄指向您frps
伺服器的公網 IP。之後將以此網域來存取您本機網站。
- 您需擁有一組公有網域(如
- ServBay 中的 ACME SSL 證書:
- 若需透過 HTTPS 存取外部網域,請事先在 ServBay 中 SSL Certificates 功能針對該外部網域申請 ACME SSL 證書。例如,若日後使用
project.your-frp-server.com
存取本地站點,請先為project.your-frp-server.com
申請證書。
- 若需透過 HTTPS 存取外部網域,請事先在 ServBay 中 SSL Certificates 功能針對該外部網域申請 ACME SSL 證書。例如,若日後使用
- 多子網域與 SSL 憑證:
- 若需使用多個子網域且不想配置繁複的 DNS A 記錄,可直接利用泛域名
*
:新增*.your-frp-server.com
的 A 記錄指向frps
伺服器。同時於 ServBay 申請含泛域名的 ACME SSL 證書(申請時於Domain
欄填入your-frp-server.com, *.your-frp-server.com
,請確保*
記錄在最後,並以英文逗號分隔)。後續可在 ServBay 任意新增二級網域,無須額外增設多條 A 記錄,且可共用同一張 SSL 憑證。 - 配合 ServBay 本地服務,您可輕鬆對外開放如
company-project.your-frp-server.com
、personal.your-frp-server.com
、customer-1.your-frp-server.com
等網域,無須每次重複繁瑣設定。
- 若需使用多個子網域且不想配置繁複的 DNS A 記錄,可直接利用泛域名
操作步驟
1. 在 ServBay 安裝 frp 軟體包
- 開啟 ServBay 應用程式。
- 左側導覽列點擊 軟體包 (Packages)。
- 在列表中找到
frp
。 - 點選
frp
旁的安裝按鈕。 - 安裝完成後,尚未設定前若嘗試啟動 frp 服務可能會失敗,這是正常狀況。
2. 準備您的 frps
伺服器與設定
您需自行於公網主機安裝並啟動 frps
。ServBay 可協助您產生一份基礎的 frps.toml
(適用於新版 frp)設定模板,供您參考:
於 ServBay 導覽至 Tunnel -> frp。
找到並點擊 frp server config (frps.toml) 旁的展開或下拉圖示。
ServBay 將顯示一份
frps.toml
範例,類似如下:toml# The frps configuration file automatically generated by ServBay # is intended for direct use on the server. # Please adjust the configuration parameters according # to your specific needs. bindPort = 12345 auth.method = "token" auth.token = "myserverpassword" vhostHTTPPort = 80 vhostHTTPSPort = 443 log.to = "/tmp/frps.log" log.level = "info" log.maxDays = 3 log.disablePrintColor = true # 對於較新版本的 frps (例如 0.52.0+),使用 webServer.port, webServer.addr, webServer.user, webServer.password 設定 Dashboard # webServer.port = 7500 # webServer.addr = "0.0.0.0" # webServer.user = "admin" # webServer.password = "admin_password"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21重要配置說明:
bindPort
:frpc 與 frps 溝通所使用的埠口。請確保此埠於您的伺服器防火牆開放。強烈建議對此埠口施行嚴格安全管制,例如防火牆僅開放特定 IP 來源。auth.method = "token"
及auth.token
:用於連線驗證,務必自定義為高強度密碼。vhostHTTPPort = 80
與vhostHTTPSPort = 443
:frps 監聽 HTTP 及 HTTPS 虛擬主機流量的埠口。- 【重點】ServBay 現階段最佳化針對
frps
直接使用 80 與 443 作為虛擬主機埠, 方便 ServBay 可無縫將您本地申請的 ACME SSL 證書傳遞至frps
,供用戶端存取。 - 若
frps
因埠口被佔用等原因無法啟用 80/443,而必須用 8080/8443 等端口,則必須於frps
前端另設反向代理(如 Nginx、Caddy)。此前端代理監聽 80/443 並將流量導向 frps 真正的vhostHTTPPort
/vhostHTTPSPort
,這時 SSL 證書將由代理伺服器管理,而非經 ServBay 透傳。
- 【重點】ServBay 現階段最佳化針對
log.to
:frps 日誌檔路徑。- Dashboard 設定(如
webServer.port
等):frps 的 Web 管理介面,為選用選項。
複製產生的內容至您的
frps
主機上,儲存為frps.toml
(或frps.ini
,視版本與需求調整),再依實際狀況修訂參數。啟動
frps
伺服器。
3. 在 ServBay 設定 frp 用戶端
回到 ServBay,依下述步驟輸入連線參數:
導覽至 Tunnel -> frp。
輸入 frps 主機資訊:
- Server Address(伺服器位址): 填入您
frps
伺服器的公網網域或 IP(如:my.test.frp.server.host
)。 - Server Port(伺服器埠): 填入
frps.toml
內設的bindPort
(如:12345
)。 - Auth Token(授權金鑰): 輸入
frps.toml
內設定的auth.token
(如:myserverpassword
)。
- Server Address(伺服器位址): 填入您
設定隧道對應規則:
- Local Domain(本地網站): 下拉選單挑選要公開的本地 ServBay 網站(如:
servbay.demo
)。 - External Domain(外部網域): 輸入給外部訪客存取本地站點的網域(如:
test.ks.do
)。該網域之 DNS A 記錄應已指向您的 frps 主機。- 重要: 不同於 ServBay 其他 Tunnel 方案(如
Ngrok
、Cloudflared
),本欄位須輸入完整網域名稱。
- 重要: 不同於 ServBay 其他 Tunnel 方案(如
- ACME Certificates(ACME 證書): 下拉選單選取在 ServBay 中已為上述 External Domain 申請的 ACME SSL 證書(如:
test.ks.do
的憑證)。- 重要: 若需透過 HTTPS 存取外部網域,必須在此正確選取證書。ServBay 將把證書資訊交給 frpc,用於與 frps 連線,由 frps 回應 HTTPS 請求。即無需於 frps 伺服器端獨立配置該網域證書,ServBay 直接處理。
- Local Domain(本地網站): 下拉選單挑選要公開的本地 ServBay 網站(如:
新增多條隧道:
- 若需將多個本地網站或外網域公開,可點擊現有隧道條右側的
+
(新增)按鈕,新增其他設定。
- 若需將多個本地網站或外網域公開,可點擊現有隧道條右側的
4. 儲存設定並啟動 frp 服務
- 完成所有設定後,點右下角 儲存 (Save) 鈕。
- ServBay 儲存 frpc 設定並試著啟動 frp 服務。
- 於 Tunnel 列中觀察
frp
狀態指示燈。若設定正確且 frpc 成功連線 frps,燈號應轉為綠色,代表服務正常運作。 - 驗證存取:
- 這時可直接從公網用設定的 External Domain(如
https://test.ks.do
)連至本地站。 - 可直接點擊外部網域旁的 複製圖示 或 瀏覽器圖示檢查連線是否成功。
- 這時可直接從公網用設定的 External Domain(如
注意事項
frps
伺服器的架設與維運: 您需獨立負責frps
的安裝、設定、安全與日常維護。frps
bindPort
的安全性: 務必設定強壯的auth.token
,並考量防火牆只允許特定 IP 或 IP 網段存取該埠。vhostHTTPPort
和vhostHTTPSPort
的選擇:- 強烈建議讓 frps 直接監聽 80/443 作為虛擬主機埠口,善用 ServBay ACME SSL 憑證透傳。
- 若 frps 採用非 80/443 埠須於前端設置 Nginx 或 Caddy 等代理軟體監聽 80/443,並代理流量至實際 vhost 埠。此時,SSL 憑證管理也交由代理伺服器處理。
- ACME 證書必要性: 若需用 HTTPS 存取外部網域,請於 ServBay 先申請該網域 ACME 憑證,並於 frp 設定正確選取。
- DNS 傳播: 請確認 External Domain 的 DNS A 記錄已正確指向 frps 主機且全球已經同步生效。
常見問題(FAQ)
- Q: ServBay 的 frp 服務啟動失敗、指示燈呈現紅/橙色,一般該怎麼辦?
- A: 請檢查 ServBay 內 frp 設定的
Server Address
、Server Port
、Auth Token
是否與frps.toml
的bindPort
、auth.token
完全一致。再檢查frps
是否執行中且其埠口能從本機連線(檢查防火牆)。細節請參閱 frp 服務日誌。
- A: 請檢查 ServBay 內 frp 設定的
- Q: 可透過 External Domain 存取,卻只能連 HTTP 而非 HTTPS?
- A: 請確認已於 ServBay 的 frp 設定針對 External Domain 選取正確 ACME 憑證。同時,檢查在
frps.toml
內vhostHTTPSPort
是否設定為 frps 實際監聽的 HTTPS 埠(建議採用 443)。
- A: 請確認已於 ServBay 的 frp 設定針對 External Domain 選取正確 ACME 憑證。同時,檢查在
- Q: 我的 frps 伺服器無法以 80/443 作為 vhost 埠,該如何處理 SSL?
- A: 必須於 frps 伺服器上架設前端反向代理(如 Nginx、Caddy),並由代理監聽 80/443,取得與設定 SSL 憑證(可不通過 ServBay 管理),然後將 HTTPS 流量解密(或按設定維持加密)導向 frps 的 vhostHTTPSPort。此狀況下 ServBay 的 frp 設定的 ACME 證書欄位主要非直接用於公開 SSL,而交由前端代理(Nginx、Caddy)管理。
- Q: ServBay 產生的
frps.toml
格式與現有的frps.ini
有差別?- A: frp 逐步從
.ini
移向.toml
格式。ServBay 僅提供.toml
範本。若您用舊版 frps 或偏好.ini
,請參閱 frp 官方文件進行相互轉換。各參數意義完全一致。
- A: frp 逐步從
總結
ServBay 透過內建 frp 用戶端功能,為需要深度自訂與主控權的 macOS 內網穿透開發者帶來強大能量。只要自行架設 frps 伺服器,結合 ServBay 便利的 frpc 設定與 ACME SSL 證書管理,可高效又安全地將本地開發網站公開到網際網路。請特別留意 frps 與 frpc 的 port 及安全性相關配置,確保服務穩定與安全。