Docker部署FRP内网穿透
根据你提供的搜索结果,我为你整理了使用 Docker Compose 部署 FRP 服务器端(frps)的步骤。以下是详细的操作指南,主要基于使用 snowdreamtech/frps 镜像的方式,并假设你已具备基本的 Docker 和 Docker Compose 知识。
::: note
请注意,FRP 的新版本(约 v0.50.0 之后)配置文件格式可能已从 .ini 过渡到 .toml。你需要根据你下载的 frp_0.64.0_linux_amd64 包中的配置文件示例(例如 frps_full.toml 或 frps.ini)来确定配置格式。以下示例将以 TOML 格式为主,并提供 INI 格式的参考。
:::
一、准备工作
- 确保环境具备:你的服务器上需要安装好 Docker 和 Docker Compose。
规划目录结构:建议创建一个专门的目录来存放 FRP 的 Docker Compose 配置文件和配置文件,方便管理。例如:
mkdir -p /beiChen/frp cd /beiChen/frp- 防火墙设置:确保你的服务器防火墙和安全组(如果使用云服务器)放行了 FRP 服务端所需的端口,至少包括 7000(默认绑定端口)和 7500(控制面板端口),以及其他你计划映射的端口(如 80、443 等)。
二、创建 FRP 服务端配置文件
在 /opt/frp 目录下创建 FRP 服务端的配置文件 frps.toml (或 frps.ini)。
touch /beiChen/frp/frps.toml
chmod 644 /beiChen/frp/frps.toml # 确保文件可读使用文本编辑器(如 vim 或 nano)编辑 frps.toml 文件。
TOML 格式配置示例(推荐,适用于新版本)
# /opt/frp/frps.toml
bindAddr = "0.0.0.0"
bindPort = 7000
# 认证令牌,客户端连接时需要提供相同的 token
auth.method = "token"
auth.token = "your_secure_token_here" # 请修改为强密码
# 启用控制面板
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin" # 控制面板登录用户名
webServer.password = "admin_password_here" # 控制面板登录密码,请修改
# (可选) HTTP 和 HTTPS 代理端口
# vhostHTTPPort = 80
# vhostHTTPSPort = 443
# (可选) 日志配置
log.to = "console"
log.level = "info"
log.maxDays = 3
# (可选) 限制客户端可使用的远程端口范围
# allowPorts = [
# { start = 10000, end = 60000 }
# ]INI 格式配置示例(如果你的 FRP 版本仍支持)
[common]
bind_port = 7000
token = your_secure_token_here # 请修改为强密码
# 控制面板设置
dashboard_port = 7500
dashboard_user = admin # 控制面板登录用户名
dashboard_pwd = admin_password_here # 控制面板登录密码,请修改
# (可选) HTTP 和 HTTPS 代理端口
# vhost_http_port = 80
# vhost_https_port = 443
# (可选) 日志配置
# log_file = ./frps.log
# log_level = info
# log_max_days = 3重要提示:
- 请务必将
auth.token/token和webServer.password/dashboard_pwd修改为复杂且唯一的密码,这是保障安全的关键。 - 配置中的
your_secure_token_here和admin_password_here需要替换为你自己的强密码。
三、创建 Docker Compose 文件
在 /beiChen/frp 目录下创建 docker-compose.yml 文件。
sudo touch /beiChen/frp/docker-compose.yml编辑 docker-compose.yml 文件,内容如下:
# /beiChen/frp/docker-compose.yml
version: '3'
services:
frps:
image: snowdreamtech/frps:latest # 使用 snowdreamtech 的 frps 镜像
container_name: frps
restart: always # 总是重启,除非手动停止
network_mode: host # 使用 host 网络模式简化网络配置,端口直接暴露在主机上
volumes:
- /beiChen/frp/frps.toml:/etc/frp/frps.toml # 挂载配置文件
# 如果你使用的是 .ini 文件,请将挂载路径改为 /etc/frp/frps.ini
# - /opt/frp/frps.ini:/etc/frp/frps.ini参数说明:
network_mode: host: 让容器直接使用宿主机的网络栈,省去ports映射的配置,FRPS 监听的端口(如7000, 7500)将直接在主机上打开。如果你更习惯用bridge网络和ports映射,可以将network_mode: host替换为:ports: - "7000:7000" # FRP 服务端与客户端通信端口 - "7500:7500" # 控制面板端口 # - "80:80" # 如果需要 HTTP 代理,取消注释 # - "443:443" # 如果需要 HTTPS 代理,取消注释 # ... 其他需要暴露的端口volumes: 将宿主机上的配置文件挂载到容器内,使得修改配置无需重新构建镜像。
四、启动 FRP 服务端
在 /opt/frp 目录下,运行以下命令启动服务:
# 后台启动
docker-compose up -d
# 查看启动日志
docker-compose logs -f frps如果使用的是旧版本的 Docker Compose(命令中带短横线 -),请使用:
docker-compose up -d看到容器成功启动并无报错信息后,你可以通过浏览器访问 http://你的服务器IP:7500,使用配置文件中设置的用户名和密码登录 FRP 控制面板,查看服务端状态。
五、客户端连接示例
服务端运行后,客户端(如你的本地机器)可以使用 frpc 进行连接。一个基本的客户端配置示例(frpc.toml)如下:
# 客户端配置 frpc.toml
serverAddr = "你的服务器公网IP"
serverPort = 7000
auth.method = "token"
auth.token = "your_secure_token_here" # 必须与服务端配置的 token 一致
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000 # 通过访问服务器的 6000 端口来连接到客户端的 22 端口然后在客户端运行:
./frpc -c ./frpc.toml六、管理命令
- 停止服务:
docker-compose down - 重启服务:
docker-compose restart - 查看服务状态:
docker-compose ps - 查看实时日志:
docker-compose logs -f frps
常见问题排查
- 连接失败:检查服务器防火墙和安全组设置,确保相关端口(如 7000, 7500)已放行。确认客户端配置中的
serverAddr、serverPort和auth.token与服务端配置完全一致。 - 控制面板无法访问:确认配置中
webServer.addr或dashboard_addr设置为0.0.0.0,并且安全组/防火墙放行了 7500 端口。 - 配置文件格式错误:确保 TOML 语法正确,特别是引号和缩进。可以使用在线 TOML 验证器检查。
- 权限问题:确保 Docker 有权限读取挂载的配置文件。
希望这份指南能帮助你成功使用 Docker Compose 部署 FRP 服务端!