本项目提供一键部署脚本,帮助开发者快速搭建 FRP 内网穿透服务,用于本地开发调试企业微信、钉钉、飞书、微信公众号等需要公网回调地址的应用。
Client端
Server端
管理页面
在对接以下平台时,需要配置公网可访问的回调地址:
- 企业微信机器人
- 钉钉机器人
- 飞书机器人
- 微信公众号
通过 FRP 内网穿透,可以将本地开发环境的服务暴露到公网,无需频繁部署到服务器即可进行调试。
- 一台云服务器(阿里云、腾讯云等),需要有公网 IP
- 一个域名,并已解析到云服务器 IP
- 本地开发电脑(macOS 或 Windows)
重要:使用前必须修改脚本中的占位符配置
在两个脚本中搜索并替换以下内容:
| 占位符 | 替换为 | 说明 |
|---|---|---|
47.1.1.1 |
你的服务器公网 IP | 例如 123.45.67.89 |
example.com |
你的域名 | 例如 yourdomain.com |
frp.example.com |
你的 FRP 子域名 | 例如 frp.yourdomain.com |
快速替换命令:
# macOS / Linux
sed -i '' 's/47.1.1.1/你的实际IP/g' deploy-frp-server.sh deploy-frp-client.sh
sed -i '' 's/example.com/你的域名/g' deploy-frp-server.sh deploy-frp-client.sh
# Windows (PowerShell)
(Get-Content deploy-frp-client.bat) -replace '47.1.1.1', '你的实际IP' | Set-Content deploy-frp-client.bat
(Get-Content deploy-frp-client.bat) -replace 'example.com', '你的域名' | Set-Content deploy-frp-client.bat将 deploy-frp-server.sh 上传到云服务器并执行:
# 添加执行权限
chmod +x deploy-frp-server.sh
# 使用 root 权限运行
sudo ./deploy-frp-server.sh脚本会自动完成:
- 下载并安装 FRP 服务端
- 生成随机认证令牌(Token)
- 配置 systemd 服务(开机自启)
- 配置防火墙规则
- 生成客户端配置模板
部署完成后,记录以下信息:
- 服务器 IP 和端口
- 认证令牌(Token)
- 仪表盘地址和密码
在云服务商控制台的安全组中,添加以下入站规则:
| 端口 | 协议 | 用途 |
|---|---|---|
| 17777 | TCP | FRP 客户端连接 |
| 17778 | TCP | FRP 仪表盘 |
| 18080 | TCP | HTTP 虚拟主机(或用 Nginx 反代 80 端口) |
| 10000-20000 | TCP | TCP 代理端口范围(按需开放) |
在域名 DNS 管理中添加 A 记录:
主机记录: frp
记录类型: A
记录值: <你的服务器公网IP>
配置后,frp.yourdomain.com 将指向你的服务器。
# 添加执行权限
chmod +x deploy-frp-client.sh
# 运行脚本(交互式配置)
./deploy-frp-client.sh# 双击运行或在命令行执行
deploy-frp-client.bat按提示输入:
- 服务器 IP
- 服务器端口(默认 17777)
- 认证令牌(从服务端获取)
- 要映射的本地端口(如 3000、8100)
- 子域名前缀(如
dev,访问地址将是dev.yourdomain.com)
# 再次运行脚本即可管理
./deploy-frp-client.sh
# 菜单选项:
# - 启动服务
# - 停止服务
# - 重启服务
# - 查看日志
# - 重新配置
# - 卸载# 再次运行脚本即可管理
deploy-frp-client.bat
# 菜单选项与 macOS 相同# 查看状态
sudo systemctl status frps
# 查看日志
sudo journalctl -u frps -f
# 重启服务
sudo systemctl restart frps
# 查看连接信息
sudo cat /opt/frp/.credentials浏览器打开 http://<服务器IP>:17778,使用部署时生成的用户名和密码登录。
| 文件 | 路径 |
|---|---|
| FRP 程序 | /opt/frp/server/ |
| 服务端配置 | /opt/frp/server/frps.toml |
| 客户端模板 | /opt/frp/server/frpc-template.toml |
| Nginx 配置 | /opt/frp/server/nginx-frp.conf |
| 凭据文件 | /opt/frp/.credentials |
| 日志 | /var/log/frps.log |
| 文件 | 路径 |
|---|---|
| FRP 程序 | ~/.local/frp/frpc |
| 配置文件 | ~/.config/frp/frpc.toml |
| 日志 | ~/.local/log/frp/frpc.log |
| LaunchAgent | ~/Library/LaunchAgents/com.fatedier.frpc.plist |
| 文件 | 路径 |
|---|---|
| FRP 程序 | %USERPROFILE%\.local\frp\frpc.exe |
| 配置文件 | %USERPROFILE%\.config\frp\frpc.toml |
| 日志 | %USERPROFILE%\.local\log\frp\frpc.log |
编辑客户端配置 ~/.config/frp/frpc.toml:
# 前端服务 (localhost:3000 -> frontend.yourdomain.com)
[[proxies]]
name = "frontend"
type = "http"
localPort = 3000
subdomain = "frontend"
# 后端服务 (localhost:8100 -> api.yourdomain.com)
[[proxies]]
name = "backend"
type = "http"
localPort = 8100
subdomain = "api"
# SSH 远程访问 (ssh -p 10022 user@服务器IP)
[[proxies]]
name = "ssh"
type = "tcp"
localPort = 22
remotePort = 10022修改后重启客户端生效。
- 检查服务器安全组是否放行 17777 端口
- 检查 Token 是否正确
- 检查服务端是否正常运行:
sudo systemctl status frps
- 检查 DNS 解析是否生效:
dig frp.yourdomain.com - 检查安全组是否放行 80/18080 端口
- 检查 Nginx 配置是否正确(如果使用 Nginx 反代)
确保本地服务正在运行且监听正确的端口:
# macOS / Linux - 检查端口占用
lsof -i :3000
# Windows - 检查端口占用
netstat -ano | findstr :3000- 妥善保管 Token:认证令牌相当于密码,泄露后他人可连接你的服务端
- 限制端口范围:
allowPorts配置限制了可使用的代理端口 - 定期更新:关注 FRP 版本更新,及时修复安全漏洞
- 生产环境:内网穿透仅建议用于开发调试,生产环境请使用正规部署方案


