说明
容器化部署frp。
一个frp server可以连接多个frp client,使frp client的端口通过frp server暴露。
本文采用带EIP的frp server,无EIP的但可以访问互联网的frp client。
环境检查
frp server有EIP,无需查询。
查询frp client出口IP
bash
curl ipinfo.io
curl myip.ipip.net
curl ifconfig.me
frp server的网络安全配置应当放行frp client的出口方向IPv4和IPv6所有端口。
frp-server
bash
# 创建专用目录
mkdir /frps
cd /frps
# 创建配置文件
vim frps.toml
追加以下内容,完整配置参考https://github.com/fatedier/frp/blob/dev/conf/frps_full_example.toml
bash
# 当前环境提供给客户端建立连接的端口
bindPort = 7000
# 控制面板监听的IP,不要改动,对EIP支持不好。
webServer.addr = "0.0.0.0"
# 访问控制面板的端口号
webServer.port = 7500
# 控制面板账户
webServer.user = "admin"
# 控制面板密码,建议用复杂密码
webServer.password = "admin"
# 配置服务端的鉴权
auth.method = "token"
# 令牌。生成token使用命令openssl rand -hex 32
auth.token = "265eaf96cc381f189e8872a64a9a57cf4e8a4311036616b4f7d4de"
查询最新版本容器镜像,浏览器访问https://github.com/fatedier/frp/pkgs/container/frps
例如当前最新是swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frps:v0.70.1
配置compose.yaml,内容如下
bash
services:
frp-server:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frps:v0.70.1
container_name: frp-server
restart: always
network_mode: host
environment:
- TZ=Asia/Shanghai
volumes:
- /frps/frps.toml:/opt/frps/frps.toml:ro
command: ["-c", "/opt/frps/frps.toml"]
部署容器
bash
docker compose up -d
日志文件看到下图所示内容表示部署成功,


浏览器访问IP:7500,输入配置文件内置的账户密码admin。
frp-client
bash
mkdir /frpc
cd /frpc
vim frpc.toml
追加以下内容,参考
bash
# frp-server的EIP
serverAddr = "IP"
# frp-server提供服务的端口
serverPort = 7000
# frp-server的令牌
auth.token = "265eaf96cc381f189e8872a64a9a57cf4e8a4311036616b4f7d4de"
# 示例
[[proxies]]
# 在frp-server必须全局唯一。
name = "ssh-client1"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
# 在frp-server必须全局唯一。
remotePort = 23
查询最新版本容器镜像,浏览器访问https://github.com/fatedier/frp/pkgs/container/frps
例如当前最新是swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frpc:v0.70.1
配置compose.yaml,内容如下
bash
services:
frp-client:
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/fatedier/frpc:v0.70.1
container_name: frp-client
restart: always
network_mode: host
environment:
- TZ=Asia/Shanghai
volumes:
- /frpc/frpc.toml:/opt/frpc/frpc.toml:ro
command: ["-c", "/opt/frpc/frpc.toml"]
部署容器
bash
docker compose up -d
日志看到下图所示,表示连接成功,


在frp server的web界面可见






测试验证
以上述配置为例,在互联网任意可以访问frp server EIP的位置,ssh -v -p 23 frp-client的系统账户@frp-server的EIP,即可登录到frp client。端口23是frp client配置的占用frp server用于转发流量的端口。