ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

如何 5 分钟部署 WatchYourLAN:局域网监控从 0 到 1 完整教程

2026/9/25 6:08:23 拓冰建站 浏览量
如何 5 分钟部署 WatchYourLAN:局域网监控从 0 到 1 完整教程 如何 5 分钟部署 WatchYourLAN局域网监控从 0 到 1 完整教程【免费下载链接】WatchYourLANLightweight network IP scanner written in Go. With notifications, history, export to Grafana项目地址: https://gitcode.com/GitHub_Trending/wa/WatchYourLAN一台陌生设备悄悄接入你的内网你却完全不知道它从哪来。WatchYourLAN 是一款轻量局域网监控工具靠 IP 扫描与主机发现持续记录设备在线历史陌生设备一出现还能推送提醒。照这篇操作30 分钟跑起你自己的内网监控。一条命令跑起来这一步解决的是最快看到结果先让监控转起来其他配置以后随时调。WatchYourLAN 的 Docker 部署有个硬性要求必须用 host 网络模式因为它要调用arp-scan直接在宿主网络栈上收发 ARP 包。把eth0换成你的接口ip link show可以查执行docker run --name wyl \ -e IFACESeth0 \ -e TZAsia/Shanghai \ --networkhost \ -v ~/wyl:/data/WatchYourLAN \ aceberg/watchyourlan参数作用IFACES要扫描的网络接口必填多个用空格分隔TZ时区必填保证历史记录时间正确--networkhost使用宿主网络arp-scan 收发 ARP 包所必需-v ~/wyl:/data/WatchYourLAN数据卷保存配置与数据库浏览器打开http://localhost:8840这就是主机清单主界面每台主机的 IP、MAC、厂商、最后在线时间和在线状态一目了然。不想用容器也行项目的 latest release 提供各发行版的二进制安装包运行时依赖arp-scan和tzdata两个系统包装完一样打开 8840 端口。扫不全从普通接口到 VLAN、docker0 逐级升级这一步解决我的网不止一个平面先按最简配置来扫不全再逐级加料。第一级是IFACES填接口名就行绝大多数家庭网络到这一级就够。第二级是ARP_ARGS它会给每个接口的扫描命令追加参数比如想减少重试就填-r 1把LOG_LEVEL设为debug日志会打印实际执行的完整arp-scan命令方便你核对参数有没有生效。VLAN 107 与 docker0两条现成命令第三级是ARP_STRS它和IFACES完全独立每条字符串会被原样当成一条arp-scan命令执行。网络里有个 VLAN 107 的网段时这样写ARP_STRS_JOINED: -gNx 10.0.107.0/24 -Q 107 -I eth0-Q 107指定 VLAN ID。注意字符串的最后一个词会被当成发现主机所属的接口名所以接口一定放最后。想把 Docker 网桥 docker0 也扫进来逗号后再接一条ARP_STRS_JOINED: -gNx 172.17.0.1/24 -I docker0,-gNx 10.0.107.0/24 -Q 107 -I eth0⚠️ 多条扫描串用逗号分隔逗号前后不能有空格否则会被解析错。ARP_STRS也可以在 GUI 的 Arp Strings 输入框逐条添加或写进config_v2.yaml走环境变量比如 docker-compose时用ARP_STRS_JOINED。arp-scan VLAN 扫描的完整细节见 docs/VLAN_ARP_SCAN.md。新主机一出现就收到提醒还能画进 Grafana这一步解决被动等发现陌生设备出现时主动推给你历史数据再进图表。Shoutrrr新主机出现即通知WatchYourLAN 内置了Shoutrrr通知你只需要填一个SHOUTRRR_URL支持 Discord、Email、Telegram、Slack、Ntfy 等渠道格式跟着所选渠道走。以 Gotify 为例在配置文件里写shoutrrr_url: gotify://192.168.0.1:8083/token/?titleUnknown host detected之后每发现一台新主机都会收到一条Unknown host found. Name: ... IP: ... MAC: ...的消息。渠道没配好也没关系点 Config 页的测试按钮对应/api/notify_test先发一条 test notification 验证链路。历史不用额外配置每次扫描比对后状态变化都会写进数据库的 history 表History 页能看到每台设备的在线时间线超过TRIM_HIST默认 48 小时的记录自动清理。数据进 GrafanaInfluxDB2 或 Prometheus 二选一想画面板两条路挑一条。走InfluxDB2打开INFLUX_ENABLE再填服务器地址、bucket、org、token这四个值与 Grafana 里 InfluxDB 数据源的配置一一对应连不上会打错误日志。走Prometheus更省事只开PROMETHEUS_ENABLE/metrics端点就暴露出一个watch_your_lan_up指标1 代表在线、0 代表离线Grafana 加个数据源直接画面板 数据库这块默认SQLite想换PostgreSQL时设USE_DBpostgres加连接串即可连接失败会自动回退到 SQLite。变量作用默认值TIMEOUT两次扫描间隔秒120TRIM_HIST历史记录保留时长小时48SHOUTRRR_URL新主机通知渠道地址空INFLUX_ENABLE启用 InfluxDB2 导出falsePROMETHEUS_ENABLE启用 Prometheus/metrics端点false其余变量在 Web GUI 的 Config 页都能改键名就是环境变量的小写形式。上生产前必做的三件事这一步解决长期挂着不出事认证、离线资源、API 集成三件都做好才算上生产。加认证Authelia 或 ForAuthWatchYourLAN 本身没有内置登录推荐在前面挂 Authelia 这类 SSO或作者写的轻量认证应用 ForAuth仓库里带了配套的docker-compose-auth.yml示例。⚠️ WYL 必须以 host 网络模式运行Web 端口会直接暴露在宿主网络上。务必用防火墙或路由器 ACL 限制对 8840 端口的访问否则任何人都能打开你的管理界面。离线资源模式-n 参数接入本地资源节点默认 Web 界面会从互联网拉主题、图标和字体。纯内网环境先跑一个内置全部资源的小镜像docker run --name node-bootstrap -p 8850:8850 aceberg/node-bootstrap再给 WYL 加-n参数指向它界面就完全不再依赖外网docker run --name wyl \ -e IFACESeth0 -e TZAsia/Shanghai \ --networkhost \ -v ~/wyl:/data/WatchYourLAN \ aceberg/watchyourlan -n http://192.168.0.10:8850HTTP API 与社区集成想把自己的脚本接进主机清单HTTP API 覆盖得挺全/api/all拿全部主机 JSON/api/status拿在线/离线统计/api/port/地址/端口探测端口/api/wol/MAC发 Wake-on-LAN 魔法包/api/rescan触发立即重扫。完整清单见 docs/API.md启动后访问/swagger/还能在线调试。社区也已有 AUR 包、Python 客户端等基于同一套 API 的集成可以直接参考。部署跑通只是开始想理解扫描协程和主机比对逻辑可以从 backend/internal/ 下的 arp、routines、notify 模块读起文档目录里还有 API 与 VLAN 扫描的完整说明够你再折腾一阵子。【免费下载链接】WatchYourLANLightweight network IP scanner written in Go. With notifications, history, export to Grafana项目地址: https://gitcode.com/GitHub_Trending/wa/WatchYourLAN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考