
使用 Docker / Podman 搭建 Frps 内网穿透服务器
📌 背景
朋友在家里开了一个 Minecraft 服务器,需要将端口映射到公网,而我正好有一台公网服务器,于是就可以直接通过我的服务器映射出去。
什么是 frp?
frp 是一款 Go 语言编写的,高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。frp 采用 C/S 模式,服务端部署在公网服务器上,客户端连接服务端并配置端口和协议,然后就可以通过公网服务器的对应端口连接客户端服务了。
🌐 环境要求
组件 | 要求 | 我的方案 |
---|---|---|
网络 | 公网 | 公网 IPv4,上下行对等 200Mbps |
系统 | Linux | Rocky Linux 9 |
硬件 | 最低 1 核 512 MB | 2 核 1 GB |
软件 | Docker / Podman 容器 | Podman |
🛠️ 准备工作
安装容器运行时
如果你尚未安装容器运行时,请先安装。Docker 或 Podman 均可。
相比 Docker,Podman 有许多优势。我推荐使用 Podman。
Docker
建议参考官方文档安装。
输入以下命令安装 Docker 和 Docker Compose:
1 | # 安装 Docker |
Podman
根据系统类型,选择正确的命令安装 Podman:
1 | # Debian / Ubuntu |
1 | # Fedora / CentOS / RHEL |
🖊️ 创建 frps 配置文件
frps 支持 TOML / YAML / JSON 格式的文件。旧版本的 ini 配置格式已经弃用。
具体的配置可以参考官方文档。这里给出一些常用的配置示例以及解释:
1 | # frps 服务监听端口,用于客户端连接服务器,默认为 7000,可以任意修改。 |
对,你没有看错,只需要两行就可以快速安全地启动 frps。
接下来,请在 auth.token
的值的双引号内,填写你要使用的密码,就可以了。如果你需要,你也可以修改 bindPort
。
然后保存为 frps.toml
文件。
📦 使用 Docker Compose 部署 frps
创建容器
这里推荐使用 Docker Compose / Podman Compose 来进行部署。frp 官方未提供 Docker 镜像,这里我们使用用户构建的 frps 镜像:snowdreamtech/frps
。
以下为我的 YAML 配置文件:
1 | services: |
解释
网络模式
network_mode
:使用主机网络模式host
。frps 将直接使用主机的 IP 地址和端口。这里建议指定为host
,或者使用桥接模式(bridge
)的同时,映射你需要用作 frp 穿透的端口范围。使用bridge
可能会增大延迟,不建议这样做。如果不指定网络模式,Docker 将默认使用bridge
。挂载卷
volumes
:将frps.toml
文件挂载到容器中。冒号前面的路径请修改为宿主机实际的配置文件路径,冒号后面的路径不可更改。
将上述配置文件代码复制下来,修改好后保存到服务器上,并运行以下命令:
Docker
1 | docker-compose -f 配置文件名 up -d |
Podman
1 | podman-compose -f 配置文件名 up -d |
验证服务是否正常运行
1 | docker logs -f frps |
如果看到如下输出,则表示服务已经正常运行:
1 | 2025-09-21 04:45:18.691 [I] [frps/root.go:108] frps uses config file: /etc/frp/frps.toml |
如果你的公网服务器有防火墙,请在防火墙控制台上放行 frps 监听端口。
然后就可以让客户端尝试连接你的 frps 服务端了!
客户端也可以通过 Docker 或者 Podman 来部署。请参见这篇文章。
- 标题: 使用 Docker / Podman 搭建 Frps 内网穿透服务器
- 作者: GT610
- 创建于 : 2025-09-24 08:59:48
- 更新于 : 2025-09-24 09:34:55
- 链接: https://gt-610.dpdns.org/2025/09/24/docker-frps/
- 版权声明: 本文章采用 CC BY 4.0 进行许可。