frp 在 Windows 下后台自动重启与故障重启

frp 在 linux 下后台自动启动和故障重启可以用 systemd 实现,也较容易,文档中也有说明。

但在 windows 下文档并没有说如何实现,这里说下本人在 windows 下的使用方法和经验。

以下有两种实现方式,都亲测稳定使用。

方法 1:任务计划管理程序

计算机管理 -> 系统工具 -> 任务计划程序 -> 任务计划程序库 中添加一个任务

  • 常规 选项卡
    • 填写名称,任意即可,如 frp
    • 勾选 不管用户是否...
    • 勾选 不存储密码...
    • 勾选 使用最高权限...
    • 勾选 隐藏
  • 触发器 选项卡,添加触发器,设为 在系统启动时
  • 操作 选项卡,新建操作,设置 frp 的路径和启动参数,如
    • 程序或脚本 设置为 E:\frp\frpc.exe
    • 添加参数(可选) 设置为 -c "E:\frp\frpc.ini"
  • 条件 选择卡,取消勾选 只有在计算机使用交流电源...
  • 设置 选项卡
    • 勾选 允许按需允许任务
    • 勾选 如果任务失败,按以下频率重新启动,按需设置间隔和次数
    • 取消勾选 如果任务允许时间超过...
    • 取消勾选 如果请求后任务还在运行...

保存后,右键单击新建的条目,再点 运行 即可。

后续电脑重启都会自动运行,或者在任务计划程序这里通过点击右键菜单运行结束来控制运行。

实测中文路径可能会影响自动启动,建议使用无特殊字符的英文路径。

方法 2:使用 pm2

pm2 虽然是管理 nodejs 的,但实测也可以托管 frp 程序,且运行稳定。

这个方法需要 nodejs 环境,如果没有,自行搜索安装方式。

下面直接使用

安装 npm 包

1
2
npm install -g pm2
npm install -g pm2-windows-startup

添加并启动服务

1
pm2 start -n <name> <frp.exe 路径> -- -c "<配置文件路径>"

frp 参数是服务名称,可自定义,frpc.exe 和 frpc.ini 的路径替换为你的实际路径。

1
pm2 start -n frp E:\frp\frpc.exe -- -c "E:\frp\frpc.ini"

设置自动启动

上面脚本默认是有故障重启的,因此这里只用设置开机自启即可。

控制台执行语句

1
2
pm2-startup install
pm2 save

其他守护程序

本人也尝试过其他守护程序,主流的如 nssmWinSW 目前都已经不再维护。