- 项目源码:
https://github.com/aceberg/watchyourlan - 关联依赖库:
https://github.com/containrrr/shoutrrr - Docker容器快速启动指令:
docker run -d --name watchyourlan \
--network host \
-e "IFACES=enp2s0" \
-e "TZ=Asia/Shanghai" \
-e "PORT=8840" \
-e "SHOUTRRR_URL=gotify://192.168.31.30:8083/AwQqpAae.rrl5Ob/?title=发现未知设备上线&DisableTLS=yes" \
-v $(pwd)/data:/data/WatchYourLAN \
aceberg/watchyourlan
WatchYourLan核心功能解析
WatchYourLan是一款集成Web图形用户界面的轻量级网络IP地址扫描工具。其主要优势包括:能够迅速探测并列出当前局域网中的所有活跃主机;持续监控网络环境,当有新设备接入时自动通过shoutrrr服务发送提醒通知;内置丰富多样的界面主题选项,用户可根据个人喜好自由切换外观风格;提供标准化API接口,便于与其他应用程序或服务进行深度集成;支持将扫描数据持久化存储到InfluxDB2时序数据库中,并可无缝对接Grafana可视化平台构建监控仪表板。
详细部署与配置流程
WatchYourLan资源占用极低,上述Docker快速启动指令中所有以-e标识的环境变量参数均具备预设默认值,用户可根据实际情况选择性配置。容器成功运行后,所有参数均能在Web管理界面中动态调整。启动完成后,通过浏览器访问http://<nas-ip>:8840地址即可直观查看局域网内全部在线设备清单:

点击界面顶部config功能菜单即可进入系统设置页面,在主配置区域中可以灵活修改界面主题风格、通知服务URL地址、网络扫描时间间隔等关键参数:

通过点击上方history菜单选项,用户可以查阅每台网络设备详细的历史连接记录与状态变更日志:

通知服务集成方案详解
WatchYourLan基于Golang语言开发实现,因此原生集成了同样采用Golang编写的消息通知库shoutrrr。用户仅需在配置中设置正确的通知URL即可启用提醒功能,shoutrrr当前支持的主流通知服务及其对应URL格式规范如下所示:
| 通知平台 | URL结构示例 |
|---|---|
| Bark | bark://devicekey@host |
| Discord | discord://token@id |
| smtp://username:password@host:port/?from=fromAddress&to=recipient1[,recipient2,...] | |
| Gotify | gotify://gotify-host/token |
| Google Chat | googlechat://chat.googleapis.com/v1/spaces/FOO/messages?key=bar&token=baz |
| IFTTT | ifttt://key/?events=event1[,event2,...]&value1=value1&value2=value2&value3=value3 |
| Join | join://shoutrrr:api-key@join/?devices=device1[,device2, ...][&icon=icon][&title=title] |
| Mattermost | mattermost://[username@]mattermost-host/token[/channel] |
| Matrix | matrix://username:password@host:port/[?rooms=!roomID1[,roomAlias2]] |
| Ntfy | ntfy://username:password@ntfy.sh/topic |
| OpsGenie | opsgenie://host/token?responders=responder1[,responder2] |
| Pushbullet | pushbullet://api-token[/device/#channel/email] |
| Pushover | pushover://shoutrrr:apiToken@userKey/?devices=device1[,device2, ...] |
| Rocketchat | rocketchat://[username@]rocketchat-host/token[/channel |
| Slack | slack://[botname@]token-a/token-b/token-c |
| Teams | teams://group@tenant/altId/groupOwner?host=organization.webhook.office.com |
| Telegram | telegram://token@telegram?chats=@channel-1[,chat-id-1,...] |
| Zulip Chat | zulip://bot-mail:bot-key@zulip-domain/?stream=name-or-id&topic=name |
在实际应用场景中,当NAS本地部署了Gotify通知服务时,可以便捷地配置为本机通知接收端。需要特别说明的是,在访客频繁接入的家庭网络环境中,持续的设备上线通知可能会产生较多提示信息。未来如果能够增加基于特定设备的定向消息推送机制,将显著提升实用价值,例如:专注监控儿童智能手表状态,当设备离线时自动发送警报,提示孩子可能外出活动;跟踪家庭成员手机在线状态,当设备重新接入网络时触发自定义响应流程;监视家庭娱乐设备如智能电视的联网情况,及时掌握设备使用动态。