一、FRP 是什么?

  • 项目地址https://github.com/fatedier/frp
  • 核心功能
    • 支持 TCP、UDP、HTTP、HTTPS、WebSocket 等协议
    • 反向代理 + 隧道通信
    • 跨平台(Linux / Windows / macOS / ARM)
    • 配置灵活,支持 TOML / YAML / JSON

二、FRP 能帮助我们做什么?

在我看来,可以方便我们实现便宜映射家里的或者内网中的服务到外网使用。

通过买阿里云或者腾讯云的99元的云主机+FRP内网穿透+家里的mini主机/NAS 实现低成本的服务开放,比如我的博客网站, 我的wailne评论服务,我的minio图床存储等等服务都是在mini主机上部署,然后通过frp内网穿透后映射使用的。

我的组网方案

graph LR;
F[1.frp访问流程图];
A[用户访问] -->B[云主机];
    B -->C[frp];
    C -->E[家里的mini主机];

三、 云主机配置服务端

服务端配置

在/var/frp/frps.toml 配置 frps.toml

1
2
3
4
5
6
[common] 
bind_port = 7000 # frp 服务端口
dashboard_port = 7500 # Web 管理界面端口
dashboard_user = admin # 管理界面用户名
dashboard_pwd = admin # 管理界面密码
token = your_token # 通信密钥,需与客户端一致

docker启动

–network host 方便映射所有端口

1
2
3
4
5
docker run -e \
--network host -d --restart=always \
--name frps \
-v /var/frp/frps.toml:/etc/frp/frps.toml \
snowdreamtech/frps:latest

四、mini主机配置客户端

客户端配置

在/var/frp/frpc.toml 创建配置frpc.toml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[common]

server_addr = "云主机的ip"

server_port = 7000

auth_token = "xxxx"



[blog] #自定义名称

type = tcp #tcp方式

local_ip = 192.168.1.223 #可填 127.0.0.1

local_port = 8084 # 本地服务端口

remote_port = 8084 # 云主机映射的端口


docker启动

1
2
3
4
5
6
docker run -e -d \
--name frpc \
--restart=always \
--network host \
-v /var/frp/frpc.toml:/etc/frp/frpc.toml \
snowdreamtech/frpc:latest

然后访问云主机ip+云主机映射的端口即可访问对应的服务