🚀 前言:在公网和内网之间自由穿梭的利器 —— FRP
很多人在家中或公司搭建了服务,如 NAS、内网网页、远程桌面或控制器等,但由于没有固定公网 IP 或受防火墙限制,外网访问常常困难重重。
这时候,内网穿透工具 FRP(Fast Reverse Proxy) 就派上用场了。它可以让你:
✈️ 从外网访问内网服务
📡 不需要公网 IP
🔐 自主可控、端到端安全
本教程基于frp_0.63.0
将教你如何使用 Docker 快速搭建 frps
(服务端)和 frpc
(客户端),实现本地服务向公网暴露的完整穿透方案。
Github地址: https://github.com/fatedier/frp/releases/tag/v0.63.0
📌 一、核心概念简介
🛠️ 二、FRP 目录结构预设
建议你在部署目录下组织如下结构:
复制编辑
frp/
├── frps/
│ └── frps.ini
├── frpc/
│ └── frpc.ini
└── docker-compose.yml
📁 三、frps.ini(服务端配置)
位于 frp/frps/frps.toml
:
bindAddr = "0.0.0.0"
bindPort = 42001 # FRP主程序端口
auth.method = "token"
auth.token = "token123"
webServer.addr = "0.0.0.0"
webServer.port = 42002 # FRP-Web页面端口
webServer.user = "admin"
webServer.password = "admin123"
vhostHttpPort = 42003 # web代理端口
# tls
#transport.tls.force = true
#transport.tls.certFile = "/etc/frp/ssl/server.crt"
#transport.tls.keyFile = "/etc/frp/ssl/server.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"
✅ frps 监听
42001
端口用于和客户端通信,42002
是 Web Dashboard 控制台。
📁 四、frpc.ini(客户端配置)
位于 frp/frpc/frpc.toml
:
serverAddr = "xxx.bigbey.com"
serverPort = 42001
[auth]
method = "token"
token = "token123"
[[proxies]]
name = "my-web"
type = "http"
localIP = "127.0.0.1"
localPort = 8080 # 本地需要代理的端口
customDomains = ["xxx.bigbey.com"]
# 运行代码
./frpc -c frpc.toml
✅ 本示例将内网的
8080
端口映射为http://yourdomain.com
📦 五、docker-compose.yml 配置
放在 frp/docker-compose.yml
中,统一管理服务端和客户端:
version: '3.8'
services:
frps:
image: snowdreamtech/frps:0.63.0
container_name: frps
restart: always
network_mode: host
volumes:
- ./data/frps.toml:/etc/frp/frps.toml
- ./data/ssl:/etc/frp/ssl
labels:
createdBy: "Apps"
说明:
使用
snowdreamtech/frps
和frpc
镜像(常用稳定版)配置文件挂载到容器内部
/etc/frp/
客户端使用
host
网络模式以支持任意端口映射(如远程桌面)
▶️ 六、一键部署
进入目录后运行:
docker-compose up -d
使用以下命令查看服务状态:
docker-compose ps
docker logs -f frpc
🌐 七、效果验证
客户端正常连接 frps,日志中显示:
login to server success, get run id xxxxx
本地部署的网页(如 http://127.0.0.1)可以通过
http://yourdomain.com
从外部访问访问
http://<服务器IP>:7500
登录 Dashboard(admin/admin)
🫵 八、原理图
✅ 九、常用命令
🔒 十、安全建议(生产环境)
配置
tls_enable = true
增加传输安全修改 Dashboard 账号密码
使用防火墙限制 frps 对外访问的端口
DNS 推荐使用 Cloudflare + 认证子域名访问
✍️ 十一、总结
通过 Docker 快速部署 FRP,不仅省去了编译和环境配置的繁琐步骤,还支持:
多平台部署(Linux、树莓派、群晖等)
一键更新、自动重启
内网服务安全暴露在公网
替代 Ngrok、自建 Tailscale 的最佳选择之一
评论区