使用 Docker / Podman 搭建 Frps 内网穿透服务器

使用 Docker / Podman 搭建 Frps 内网穿透服务器

GT610 Lv4

📌 背景

朋友在家里开了一个 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
2
3
4
5
6
# 安装 Docker
sudo apt update && sudo apt install docker.io -y

# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Podman

根据系统类型,选择正确的命令安装 Podman:

1
2
# Debian / Ubuntu
sudo apt update && sudo apt install podman podman-compose -y
1
2
# Fedora / CentOS / RHEL
sudo dnf install podman podman-compose -y

🖊️ 创建 frps 配置文件

frps 支持 TOML / YAML / JSON 格式的文件。旧版本的 ini 配置格式已经弃用。

具体的配置可以参考官方文档。这里给出一些常用的配置示例以及解释:

1
2
3
4
5
# frps 服务监听端口,用于客户端连接服务器,默认为 7000,可以任意修改。
bindPort = 7000

# 认证密钥。客户端需要填写正确的密钥才能连接服务器,可以有效防止被滥用。
auth.token = ""

对,你没有看错,只需要两行就可以快速安全地启动 frps。

接下来,请在 auth.token 的值的双引号内,填写你要使用的密码,就可以了。如果你需要,你也可以修改 bindPort

然后保存为 frps.toml 文件。

📦 使用 Docker Compose 部署 frps

创建容器

这里推荐使用 Docker Compose / Podman Compose 来进行部署。frp 官方未提供 Docker 镜像,这里我们使用用户构建的 frps 镜像:snowdreamtech/frps

以下为我的 YAML 配置文件:

1
2
3
4
5
6
7
8
services:
frps:
image: snowdreamtech/frps
container_name: frps
restart: unless-stopped
network_mode: host
volumes:
- /[配置文件目录]/frps.toml:/etc/frp/frps.toml

解释

  1. 网络模式 network_mode:使用主机网络模式 host。frps 将直接使用主机的 IP 地址和端口。这里建议指定为 host,或者使用桥接模式(bridge)的同时,映射你需要用作 frp 穿透的端口范围。使用 bridge 可能会增大延迟,不建议这样做。如果不指定网络模式,Docker 将默认使用 bridge

  2. 挂载卷 volumes:将 frps.toml 文件挂载到容器中。冒号前面的路径请修改为宿主机实际的配置文件路径,冒号后面的路径不可更改

将上述配置文件代码复制下来,修改好后保存到服务器上,并运行以下命令:

Docker

1
docker-compose -f 配置文件名 up -d

Podman

1
podman-compose -f 配置文件名 up -d

验证服务是否正常运行

1
docker logs -f frps

如果看到如下输出,则表示服务已经正常运行:

1
2
3
2025-09-21 04:45:18.691 [I] [frps/root.go:108] frps uses config file: /etc/frp/frps.toml
2025-09-21 04:45:18.915 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:7000
2025-09-21 04:45:18.915 [I] [frps/root.go:117] frps started successfully

如果你的公网服务器有防火墙,请在防火墙控制台上放行 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 进行许可。
评论