frp-notify + Gotify 实现 FRP 用户上线通知
- 1. 安装frp_notify
- 2. Gotify 配置
- 3. frp-notify 配置
- 启动 frp_notify
- 开机自启动
1. 安装frp_notify
一个专注于消息通知的 frp server manager plugin 实现,让你对进入 frps 的连接了如指掌,不再裸奔。
项目链接如下:
https://github.com/arugal/frp-notify/
该插件支持 log日志、DingTalk、WxWork、飞书、Gotify 形式的消息通知,基本涵盖了主流的几大通知渠道,可在 frp-notify.json 文件中按需配置通知插件,同时也支持配置多个插件,多渠道通知。
注:本教程将使用 frp-notify 插件配合 Gotify 通知一起使用,若不使用 Gotify 作为消息通知的话,可略过相关 Gotify 的配置操作。并前往该项目查看其它通知相关配置。
2. Gotify 配置
在使用 frp-notify 插件之前,我们需安装 Gotify ,其项目地址如下:
https://github.com/gotify/server
其使用说明文档如下:
https://gotify.net/docs/
此处博主使用 docker-compose 安装运行的 Gotify ,若未安装 Docker 可使用二进制文件运行,其文档中有相关说明。
先创建一个待映射到容器中的目录:
mkdir -p /opt/docker_gotify/gotify_data
修改 docker-compose
version: "3"
services:
gotify:
image: gotify/server
ports:
- 80:80
environment:
- GOTIFY_DEFAULTUSER_NAME=admin
- GOTIFY_DEFAULTUSER_PASS=admin
volumes:
- "./gotify_data:/app/data"
运行 docker-compose
docker-compose up -d --build
注:初次创建容器,可以不加build
此处是将本地的 8081 端口映射到容器中的 80 端口,本地的端口可自定义修改。接下来防火墙或安全组放通 10080 端口并浏览器访问,即可使用账号:admin
和密码:admin
登录(登录后强烈建议修改账号和密码),点击 APPS
创建一个通知应用,创建成功后记录该应用的 Token
字段:
3. frp-notify 配置
此处 frp-notify 插件放置的目录为:/opt/frp-notify,用户可自主选择所放置目录,其余操作仅需将该目录路径修改即可。
在项目的 Releases 处下载最新的对应机器架构的包,并解压到 /opt/frp-notify 目录下,并编辑配置 frp-notify.json 文件,删除其余通知字段,保留并设置如下:
[root@localhost frp_notify]# vim frp-notify.json
[root@localhost frp_notify]# cat frp-notify.json
{
"blacklist": [
],
"whitelist": [
],
"notify_plugins": [
{
"name": "gotify",
"config": {
"server_proto": "http",
"server_addr": "127.0.0.1:8081",
"app_token": "**********" # Gotify 的通知应用 Token
}
}
]
}
[root@localhost frp_notify]#
启动 frp_notify
命令如下:
./frp-notify start -c ./frp-notify.json -b 127.0.0.1:50080
若无报错,则正常启动。此时另开一个终端窗口修改 FRPS 客户端配置文件, 在 frps.ini 文件中添加如下字段:
在 frps.ini 中加入
[plugin.frp-notify]
addr = 127.0.0.1:50080 // frp-notify 地址
path = /handler // frp-notify url, 固定配置
ops = Login,NewProxy,NewWorkConn,NewUserConn // 通知的操作
注意:在实际写入的时候,不要加上后面的注释,否则会导致启动失败
重启 FRPS,此时若有终端链接,Gotify 则会推送相关消息了:
至此,frp_notify + Gotify 的 FRP 用户上线消息通知就完成了,接下来就完善一下后续的开机自启以及其它操作吧!
开机自启动
上述虽然成功运行了 frp_notify 服务,但是会占用一个终端窗口,下面通过 system 服务使其开机自启动,在 frp_notify 项目中给了一份系统服务配置文件 frp_notify.service,
下面我们就这个系统服务配置文件进行简单修改,最终如下:
[Unit]
Description=Frp notify service
After=network.target
[Service]
Type=simple
User=nobody
Group=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/opt/frp-notify start -c ./frp-notify.json -b 127.0.0.1:50080
WorkingDirectory=/opt/frp_notify/
[Install]
WantedBy=multi-user.target
其中,相关修改字段说明如下:
Group:守护运行程序的用户组。
ExecStart:对相关运行命令修改,具体启动路径以服务所放置的目录修改,增加 --log-level error 字段以修改日志输出等级。
WorkingDirectory:服务所在的工作目录,指定后后面的配置文件可使用相对路径指定,否则,请使用绝对路径。
将系统服务配置文件 frp_notify.service 移动到相关目录下:
mv ./frp_notify.service /usr/lib/systemd/system/
文件移动完成,修改一下 frp_notify 目录及服务文件的所属用户与用户组信息:
chown -R nobody:nobody /usr/local/frp_notify
再 daemon-reload 重载配置一下:
systemctl daemon-reload
启动 frp_notify 服务:
systemctl start frp_notify.service
若无报错,则服务启动成功。
再设置开机自启:
systemctl enable frp_notify.service
其余操作命令如下:
# 停止运行服务
systemctl stop frp_notify.service
# 查看服务状态
systemctl status frp_notify.service
参考:
https://www.isisy.com/1380.html