Mark Ku's Blog

解決問題

先前一篇文章+介紹過如何透過免費的 Frps 反向代理伺服器,將內網網站經過映射出去,但因為免費的真的太不穩定,BLOG 和 DEMO 網站,常常服務會掛掉,後來經網友推薦,Google 有免費體驗90天,並給予 300 美金的體驗費用,這篇就來介紹用 GCP (Google Cloud) 來自己架內網穿透伺服器 ( FRPS )

首先,請申請 GCP 帳號及挷定信用卡

登入 GCP 的後台 > 虛擬機器 (VM) 執行個體

GCP Compute Engine VM執行個體,建立執行個體按鈕
GCP Compute Engine VM執行個體,建立執行個體按鈕

選擇地區為台灣,作業系統 Ubuntu ,因為我只要反向代理,不需要複雜的運算,選擇 f1-micro就好,預估費用一個月只要約 15X 元台幣,算是蠻實惠的。

GCP建立frp-server虛擬機,f1-micro每月5.60
GCP建立frp-server虛擬機,f1-micro每月5.60

主機建立好時,在菜單選單中找到 VPC 網路,將主機的IP改成靜態,這樣就IP就不會跑掉了。

GCP VPC網路將frp-server的IP設為靜態
GCP VPC網路將frp-server的IP設為靜態
保留新的靜態IP位址視窗,名稱frp-server
保留新的靜態IP位址視窗,名稱frp-server

回到虛擬機器( VM ) 執行個體,對剛建立的主機開啟 SSH

Google Cloud VM 執行個體 SSH 選單
Google Cloud VM 執行個體 SSH 選單

接著會開啟瀏覽器版 SSH 中,依序輸入下面的 Linux 指令

更新系統

sudo apt-get update
sudo apt-get upgrade

FRP使用Go語言,大部分Linux主機都有預裝了,但如果你的沒有,可以先執行以下指令

sudo apt-get install bison ed gawk gcc libc6-dev make golang-go vim

接著你必須到FRP的Github上查看最新frps ,並下載他

wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz

解壓縮檔案並重新命名資料夾為 frp

tar -zxvf frp_0.62.1_linux_amd64.tar.gz
sudo mkdir /var/frps
sudo mv frp_0.62.1_linux_amd64/* /var/frps/
cd /var/frps

編輯 frps 的設定檔 (sudo vim frps.toml)

# frps.toml
bindAddr = "0.0.0.0"
bindPort = 7000
vhostHttpPort = 80
vhostHttpsPort = 443
webServer = { port = 7500, user = "admin", password = "your password", addr="0.0.0.0" }
auth.method = "token"
auth.token = "your token"

執行

sudo ./frps -c ./frps.toml

在到 DNS 主機中設定域名

Frp伺服器啟動成功並建立多個代理
Frp伺服器啟動成功並建立多個代理

首先將挷定 DNS 將 proxy.markkulab.net 指向 FRPS 主機外部IP DNS A 記錄設定介面,主機 proxy 指向 IP 位址 接著,挷定 CNAME,這樣訪問者訪問 blog.markkulab.net frps 就會指到指定用戶端映射的網站 CNAME 記錄設定,主機 blog 指向

設定 CNAME 記錄,將 shop 指向
設定 CNAME 記錄,將 shop 指向

frpc.toml 的設定

serverAddr = "35.223.172.254"
serverPort = 7000
auth.token = "your token"
transport.poolCount = 10000

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000

[[proxies]]
name = "ShopCarthttps1"
type = "http"
customDomains = ["www.letgo.com.tw"]
localPort = 8896

[[proxies]]
name = "linebot"
type = "https"
customDomains = ["linebot.letgo.com.tw"]
[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:48002"
crtPath = "/Public/!.letgo.com.tw/fullchain.crt"
keyPath = "/Public/!.letgo.com.tw/cert.key"
hostHeaderRewrite = "linebot.letgo.com.tw"
requestHeaders.set.x-from-where = "frp"

如果你需要重開機自動啟動,則需要額外註冊成服務

在 /lib/systemd/system/ 增加設定檔

sudo vim /lib/systemd/system/frps.service

建立自動啟動設定檔

[Unit]
Description=FRP Server
After=network.target
Wants=network.target

[Service]
Restart=on-failure
RestartSec=5
ExecStart=/var/frps/frps -c /var/frps/frps.toml

[Install]
WantedBy=multi-user.target

啟動服務

sudo systemctl daemon-reload  // reload service
sudo systemctl stop frps.service //停止 FRP Server 服務
sudo systemctl start frps.service //啟動 FRP Server 服務
sudo systemctl restart frps.service //重啟 FRP Server 服務
sudo systemctl disable frps.service //開機時不要啟動 FRP Server 服務
sudo systemctl enable frps.service //開機時自動啟動 FRP Server 服務
sudo systemctl status frps.service //查看FRP Server 狀態

測試防火牆有沒有關

windows 測試防火牆有沒有關

telnet 35.223.172.254  7000

linux 測試防火牆有沒有開

nc -zv 127.0.0.1 7000

記得 GCP 必須關閉防火牆,否則外網連不到,回到 instance 修改裡面的 Network tags 才會生效。

Google Cloud防火牆規則frps設定,允許所有來源與埠
Google Cloud防火牆規則frps設定,允許所有來源與埠

接著找一台 Ubuntu 主機來,安裝frpc

建立資料夾

sudo mkdir -p /etc/frp

下載 FRP 0.62.1 並解壓到

cd /etc/frp
sudo wget https://github.com/fatedier/frp/releases/download/v0.62.1/frp_0.62.1_linux_amd64.tar.gz
sudo tar -zxvf frp_0.62.1_linux_amd64.tar.gz --strip-components=1

建立frpc.toml設定檔

sudo vim /etc/frp/frpc.toml

frpc.toml

serverAddr = "your server"
serverPort = 7000
auth.token = "your token"
transport.poolCount = 10000

[[proxies]]
name = "jks"
type = "https"
customDomains = ["jks.letgo.com.tw"]
[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:8080"
crtPath = "/var/frpc/letgo/fullchain.crt"
keyPath = "/var/frpc/letgo/cert.key"
hostHeaderRewrite = "jks.letgo.com.tw"
requestHeaders.set.x-from-where = "frp"

測試

/etc/frp/frpc -c /etc/frp/frpc.toml

建立開機後自動啟動

sudo vim /lib/systemd/system/frpc.service

建立自動啟動的設定檔

[Unit]
Description=FRP Client
After=network.target
Wants=network.target

[Service]
Restart=on-failure
RestartSec=5
ExecStart=/etc/frp/frpc -c /etc/frp/frpc.toml

[Install]
WantedBy=multi-user.target

啟動服務

sudo systemctl daemon-reload  // reload service
sudo systemctl stop frpc.service //停止 FRP Server 服務
sudo systemctl start frpc.service //啟動 FRP Server 服務
sudo systemctl restart frpc.service //重啟 FRP Server 服務
sudo systemctl disable frpc.service //開機時不要啟動 FRP Server 服務
sudo systemctl enable frpc.service //開機時自動啟動 FRP Server 服務
sudo systemctl status frpc.service //查看FRP Server 狀態

最後

最後將VM建在台灣節點,聽說Google的機房在嘉義,網速超級快,也很穩定,一個月差不多150元台幣左右,就能擁有反向代理及一個固定IP,其實蠻滑算的 瀏覽器顯示販售水果乾的電商網站

補充 - GCP 免費計劃

免費計劃連結

在免費試用期結束後,我們還是可以在限制的用量內免費使用特定產品。例如最常見的 Google Compute Engine 就提供了以下免費條件:

僅限美國地區「us-central1」、「us-east1」和「us-west1」

  • 每月 1 個 f1-micro 執行個體每月 30 GB 硬碟空間
  • 每月 1 GB 網路輸出量 (從北美輸出至中國和澳洲以外的所有地區)

f1 的方案 就算放在台灣一個月也只要 5.6 *27.82 (美金匯率) = 約 155 台幣左右 GCP f1-micro 虛擬機設定與每月預估費用

作者

Mark Ku

擁有 10+ 年經驗的資深軟體工程師,現為 AI 應用 Builder,專注於大型平台架構與簡化複雜系統設計,從電商系統到訂閱與收費平台,結合 AI Agent、AI 整合與自動化開發,打造高效率且可持續演進的產品技術基礎。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可

熱門文章

View all
Mark Ku
··604

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··471

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··329

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··240

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··235

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調
Mark Ku
··216

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取