frp:一台公网服务器撑起的内网穿透
Docker 自部署 国内可用穿透的事实标准
编辑评价4.0编辑部综合整理,仅供参考
维护活跃
活跃
工具介绍
frp:一台公网服务器撑起的内网穿透
内网穿透领域的事实标准:公网机器跑 frps,内网机器跑 frpc,把家里的 NAS、监控、管理面板映射到公网。Go 编译的单二进制,配置就是一个 toml 文件,十年来中文社区资料积累最厚,遇到问题搜索即有答案。
核心优势
- 部署极简:frps/frpc 各一个文件,公网端最小配置
serverPort = 7000,内网端写清要映射的本地端口即可跑通;资源占用几乎可以忽略,软路由、NAS、旁路网关都能带。 - 场景覆盖全:TCP、UDP、HTTP、HTTPS 以及带密钥保护的 STCP 都支持——转发 SSH、暴露 Web 服务、远程桌面各得其所;STCP 让服务不直接暴露公网,访问端凭密钥连接,多一层保护。
- 鉴权内建:客户端与服务端之间用 token 鉴权,配合 TLS 可加密控制连接,公网链路不裸奔。
- 一个配置管多服务:frpc 的一个配置文件里可以写多条转发规则,NAS、下载器、管理面板一次规划、集中维护,改完配置重载即可生效。
- 资料最厚:中文教程、NAS 生态集成俯拾皆是,从群晖到软路由都有现成玩法,这是它长期占据事实标准位置的原因。
代价是门槛前置:需要一台有公网 IP 的 VPS,国内 VPS 对外提供 Web 服务还需按规备案;动态公网 IP 场景要搭配 ddns-go 这类工具把域名跟住。另外要有带宽预期:链路速度取决于公网服务器的带宽与家宽上行,大文件回传快慢看的是这两段短板。项目与文档国内可正常访问,数据面完全在自己服务器,不经任何第三方。
适合谁
手里有公网服务器、想把家庭服务安全暴露出去的人;不依赖商业协调服务、要求链路自主的进阶用户。怕折腾程度:中——要写少量配置、开防火墙端口,但一次配好长期稳定。没有公网服务器又怕折腾的,看贝锐蒲公英这类托管方案。
惊蛰 整理 · 2026-09 收录
评测视频
点击跳转 B 站观看原视频已聚合 6 条评测视频 ·6 位博主独立评测
部署速查
维护活跃活跃
部署前提
- frp 官方发布物不含现成镜像:要么按官方仓库自带 Dockerfile 自构建(见上方上手三步),要么用社区维护的 snowdreamtech/frps 镜像(下例)。
- 服务端配置 frps.toml 挂进 /etc/frp;公网机需放行 bindPort 与后续映射用端口段。
docker-compose.yml(服务端 frps)
services:
frps:
image: snowdreamtech/frps:latest
container_name: frps
network_mode: host
restart: unless-stopped
volumes:
- ./frps.toml:/etc/frp/frps.toml
./frps.toml 最小内容(TOML 格式):
bindAddr = "0.0.0.0"
bindPort = 7000
启动与初始化
docker compose up -d起服务端,日志docker logs -f frps确认监听 7000。- 内网端跑 frpc,配置指向公网 IP 的 7000 并带 auth.token,写清要暴露的本地端口。
- 不想让服务直接暴露公网的,用 STCP 类型并在访问端配对应客户端;升级 pull + up。
快速上手
1官方仓库自带 Docker 构建文件(dockerfiles/Dockerfile-for-frps,alpine 底座):
```bash
git clone https://github.com/fatedier/frp.git && cd frp
docker build -f dockerfiles/Dockerfile-for-frps -t myfrps .
docker run -d --name frps --network host -v /etc/frp:/etc/frp myfrps -c /etc/frp/frps.toml
```
2公网端写 frps.toml:最小配置 `bindPort = 7000`,防火墙放行 7000 与后续映射用的端口段。
3内网端运行 frpc,配置指向公网 IP 的 7000 端口并带上 auth.token,写清要暴露的本地端口;不想让服务直接暴露公网的,用 STCP 类型并在访问端配对应客户端。
本页由编辑 惊蛰 整理与维护 · 了解幕后








