七千二百袋水泥
七千二百袋水泥
Published on 2025-10-25 / 5 Visits

全面指南:在家庭NAS上部署WatchYourLan实现高效局域网IP扫描与实时设备监控通知系统

  • 项目源码: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地址即可直观查看局域网内全部在线设备清单:

Image

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

Image

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

Image

通知服务集成方案详解

WatchYourLan基于Golang语言开发实现,因此原生集成了同样采用Golang编写的消息通知库shoutrrr。用户仅需在配置中设置正确的通知URL即可启用提醒功能,shoutrrr当前支持的主流通知服务及其对应URL格式规范如下所示:

通知平台URL结构示例
Barkbark://devicekey@host
Discorddiscord://token@id
Emailsmtp://username:password@host:port/?from=fromAddress&to=recipient1[,recipient2,...]
Gotifygotify://gotify-host/token
Google Chatgooglechat://chat.googleapis.com/v1/spaces/FOO/messages?key=bar&token=baz
IFTTTifttt://key/?events=event1[,event2,...]&value1=value1&value2=value2&value3=value3
Joinjoin://shoutrrr:api-key@join/?devices=device1[,device2, ...][&icon=icon][&title=title]
Mattermostmattermost://[username@]mattermost-host/token[/channel]
Matrixmatrix://username:password@host:port/[?rooms=!roomID1[,roomAlias2]]
Ntfyntfy://username:password@ntfy.sh/topic
OpsGenieopsgenie://host/token?responders=responder1[,responder2]
Pushbulletpushbullet://api-token[/device/#channel/email]
Pushoverpushover://shoutrrr:apiToken@userKey/?devices=device1[,device2, ...]
Rocketchatrocketchat://[username@]rocketchat-host/token[/channel
Slackslack://[botname@]token-a/token-b/token-c
Teamsteams://group@tenant/altId/groupOwner?host=organization.webhook.office.com
Telegramtelegram://token@telegram?chats=@channel-1[,chat-id-1,...]
Zulip Chatzulip://bot-mail:bot-key@zulip-domain/?stream=name-or-id&topic=name

在实际应用场景中,当NAS本地部署了Gotify通知服务时,可以便捷地配置为本机通知接收端。需要特别说明的是,在访客频繁接入的家庭网络环境中,持续的设备上线通知可能会产生较多提示信息。未来如果能够增加基于特定设备的定向消息推送机制,将显著提升实用价值,例如:专注监控儿童智能手表状态,当设备离线时自动发送警报,提示孩子可能外出活动;跟踪家庭成员手机在线状态,当设备重新接入网络时触发自定义响应流程;监视家庭娱乐设备如智能电视的联网情况,及时掌握设备使用动态。