一直就想試試把本地電腦公開(kāi)到公網(wǎng)實(shí)現(xiàn)自己做服務(wù)器的感覺(jué),有了樹(shù)莓派后更有這種想法。于是就動(dòng)手試試。
聽(tīng)說(shuō)目前兩種方法比較流行:ngrok和frp。但是ngrok是收費(fèi)的且復(fù)雜,frp則完全開(kāi)源免費(fèi)且簡(jiǎn)單易用,所以這里來(lái)嘗試下。
大概思路就是:自己先有一臺(tái)公網(wǎng)的服務(wù)器(我是在AWS或DigitalOcean租的),然后讓本地的樹(shù)莓派與公網(wǎng)服務(wù)器通過(guò)frp程序達(dá)成一種映射連接,這樣別人訪問(wèn)公網(wǎng)服務(wù)器ip的某個(gè)端口時(shí),就會(huì)自動(dòng)轉(zhuǎn)向來(lái)訪問(wèn)本地的樹(shù)莓派了。
做法是:分別在服務(wù)器和本地樹(shù)莓派上下載frp程序,當(dāng)然要根據(jù)兩者自己的系統(tǒng)平臺(tái)下載不同版本。然后在服務(wù)器運(yùn)行frps,即frp-server,在本地運(yùn)行frpc,即frp-client。并且在配置文件里約定好,服務(wù)器的哪個(gè)端口映射到本地的哪個(gè)端口。雙方都運(yùn)行后,就可以正常通過(guò)外網(wǎng)訪問(wèn)了。
難度
這個(gè)服務(wù)的環(huán)境、啟動(dòng)、安裝等簡(jiǎn)單到讓人發(fā)指,唯一的難度就在于服務(wù)器上和本地上兩個(gè).ini配置文件。
配置文件搞明白了,就什么都明白了。有一點(diǎn)不明白,就全不明白。。。
參考文章。
官方下載地址。其中,服務(wù)器如果是Ubuntu或Debian系的,就選擇linux_amd64.tar.gz和linux_386.tar.gz結(jié)尾的,一個(gè)是64位一個(gè)是32位。本地樹(shù)莓派如果是樹(shù)莓派系統(tǒng),則選擇linux_arm.tar.gz結(jié)尾的。
第一:服務(wù)器上安裝配置frp
#下載frp:
wget https://github.com/fatedier/frp/releases/download/v0.16.0/frp_0.16.0_linux_amd64.tar.gz
#解壓:
tar -xzvf frp_0.16.0_linux_amd64.tar.gz
#進(jìn)入目錄:
cd frp_0.16.0_linux_amd64
#修改服務(wù)器端配置文件:
vim frps.ini
#將內(nèi)容全部替換為如下:
# frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7000
vhost_http_port = 8000
vhost_https_port = 8001
dashboard_port = 7500
privilege_token = 123456
dashboard_user = ubuntu
dashboard_pwd = 123
log_file = ./frps.log
log_level = info
log_max_days = 3
max_pool_count = 5
authentication_timeout = 900
tcp_mux = true
保存退出后,
就可以在當(dāng)前目錄通過(guò)sudo ./frps -c frps.ini啟動(dòng)服務(wù)器端的這項(xiàng)服務(wù)了。
測(cè)試:
隨便找個(gè)瀏覽器,輸入服務(wù)器的IP和剛剛設(shè)置的后臺(tái)管理端口號(hào),就可以訪問(wèn)了。比如我的服務(wù)器IP是13.250.64.172,那么就輸入:http://13.250.64.172:7500
然后就可以看到如下:

然后按照剛才設(shè)置的賬號(hào)密碼:admin, admin就能登錄到,顯示如下圖:

第二:本地樹(shù)莓派裝frp
本地配置要比服務(wù)器配置難很多,經(jīng)常出問(wèn)題。尤其是我的機(jī)器只要一設(shè)置ssh,就會(huì)出錯(cuò)。
基本配置如下:
[common]
server_addr = 服務(wù)器IP地址
server_port = 7000
privilege_token = 123456
log_file = ./frpc.log
log_level = info
log_max_days = 3
pool_count = 5
tcp_mux = true
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2200
[web]
type = http
local_port = 80
custom_domains = 服務(wù)器IP地址或服務(wù)器的域名(仔細(xì)填寫(xiě),這是連接的主要方式)
保存退出后,在frp的文件夾執(zhí)行:sudo ./frp -c frpc.ini,就能啟動(dòng)了。
現(xiàn)在,保證服務(wù)器端和客戶端的兩個(gè)服務(wù)都在同時(shí)運(yùn)行時(shí),我們就可以使用了。
連接好后,用這個(gè)命令連接ssh:
$ ssh ClientUser@ServerIP -p 2200