Skip to content

LangChat/frp-deploy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FRP 内网穿透快速部署

本项目提供一键部署脚本,帮助开发者快速搭建 FRP 内网穿透服务,用于本地开发调试企业微信、钉钉、飞书、微信公众号等需要公网回调地址的应用。

Client端

iShot_2026-02-02_15.45.08

Server端

iShot_2026-02-02_15.47.12

管理页面

image-20260202154806228

使用场景

在对接以下平台时,需要配置公网可访问的回调地址:

  • 企业微信机器人
  • 钉钉机器人
  • 飞书机器人
  • 微信公众号

通过 FRP 内网穿透,可以将本地开发环境的服务暴露到公网,无需频繁部署到服务器即可进行调试。

前置条件

  1. 一台云服务器(阿里云、腾讯云等),需要有公网 IP
  2. 一个域名,并已解析到云服务器 IP
  3. 本地开发电脑(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 解析

在域名 DNS 管理中添加 A 记录:

主机记录: frp
记录类型: A
记录值: <你的服务器公网IP>

配置后,frp.yourdomain.com 将指向你的服务器。

第五步:部署客户端(本地电脑)

macOS

# 添加执行权限
chmod +x deploy-frp-client.sh

# 运行脚本(交互式配置)
./deploy-frp-client.sh

Windows

# 双击运行或在命令行执行
deploy-frp-client.bat

按提示输入:

  1. 服务器 IP
  2. 服务器端口(默认 17777)
  3. 认证令牌(从服务端获取)
  4. 要映射的本地端口(如 3000、8100)
  5. 子域名前缀(如 dev,访问地址将是 dev.yourdomain.com

日常使用

启动/停止客户端

macOS

# 再次运行脚本即可管理
./deploy-frp-client.sh

# 菜单选项:
# - 启动服务
# - 停止服务
# - 重启服务
# - 查看日志
# - 重新配置
# - 卸载

Windows

# 再次运行脚本即可管理
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

客户端(本地 macOS)

文件 路径
FRP 程序 ~/.local/frp/frpc
配置文件 ~/.config/frp/frpc.toml
日志 ~/.local/log/frp/frpc.log
LaunchAgent ~/Library/LaunchAgents/com.fatedier.frpc.plist

客户端(本地 Windows)

文件 路径
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

修改后重启客户端生效。

常见问题

客户端连接失败

  1. 检查服务器安全组是否放行 17777 端口
  2. 检查 Token 是否正确
  3. 检查服务端是否正常运行:sudo systemctl status frps

域名无法访问

  1. 检查 DNS 解析是否生效:dig frp.yourdomain.com
  2. 检查安全组是否放行 80/18080 端口
  3. 检查 Nginx 配置是否正确(如果使用 Nginx 反代)

本地服务访问超时

确保本地服务正在运行且监听正确的端口:

# macOS / Linux - 检查端口占用
lsof -i :3000

# Windows - 检查端口占用
netstat -ano | findstr :3000

安全建议

  1. 妥善保管 Token:认证令牌相当于密码,泄露后他人可连接你的服务端
  2. 限制端口范围allowPorts 配置限制了可使用的代理端口
  3. 定期更新:关注 FRP 版本更新,及时修复安全漏洞
  4. 生产环境:内网穿透仅建议用于开发调试,生产环境请使用正规部署方案

参考链接

About

frp一键部署脚本

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published