📦aceberg / WatchYourLAN
← 返回首页
Lightweight network IP scanner written in Go. With notifications, history, export to Grafana
⚖️ MIT#arp-scan#self-hosted#selfhosted#arp-scanner#monitoring🌐 hub.docker.com📅 创建于 2022-08-15🔄 更新于 2025-09-10

📄 仓库 README

在 GitHub 查看 ↗
来自 GitHub 仓库自述文件 · 版权归原作者所有

WatchYourLAN


Docker Go Report Card Docker Image Size (latest semver) GitHub Discussions

aceberg%2FWatchYourLAN | Trendshift

Lightweight network IP scanner with web GUI. Features: - Send notification when new host is found - Monitor hosts online/offline history - Keep a list of all hosts in the network - Send data to InfluxDB2 or Prometheus to make a Grafana dashboard

[!IMPORTANT]
Please, consider making a donation. Even $10 will make a difference to me.

Screenshot_1

More screenshots

Expand ![Screenshot_5](https://raw.githubusercontent.com/aceberg/WatchYourLAN/main/assets/Screenshot_5.png) ![Screenshot_2](https://raw.githubusercontent.com/aceberg/WatchYourLAN/main/assets/Screenshot_2.png) ![Screenshot_3](https://raw.githubusercontent.com/aceberg/WatchYourLAN/main/assets/Screenshot_3.png) ![Screenshot_4](https://raw.githubusercontent.com/aceberg/WatchYourLAN/main/assets/Screenshot_4.png)

Quick start

Expand Replace `$YOURTIMEZONE` with correct time zone and `$YOURIFACE` with network interface you want to scan. Network mode must be `host`. Set `$DOCKERDATAPATH` for container to save data:
docker run --name wyl \
    -e "IFACES=$YOURIFACE" \
    -e "TZ=$YOURTIMEZONE" \
    --network="host" \
    -v $DOCKERDATAPATH/wyl:/data/WatchYourLAN \
    aceberg/watchyourlan
Web GUI should be at http://localhost:8840

Auth

Expand **WatchYourLAN** does not have built-in auth option. But you can use it with SSO tools like Authelia, or my simple auth app [ForAuth](https://github.com/aceberg/ForAuth). Here is an example [docker-compose-auth.yml](https://github.com/aceberg/WatchYourLAN/blob/main/docker-compose-auth.yml). > :warning: **WARNING!** > Please, don't forget that WYL needs `host` network mode to work. So, WYL port will be exposed in this setup. You need to limit access to it with firewall or other measures.

Install on Linux

Expand All binary packages can be found in [latest](https://github.com/aceberg/WatchYourLAN/releases/latest) release. There are `.deb`, `.rpm`, `.apk` (Alpine Linux) and `.tar.gz` files. Supported architectures: `amd64`, `i386`, `arm_v5`, `arm_v6`, `arm_v7`, `arm64`. Dependencies: `arp-scan`, `tzdata`. For `amd64` there is a `deb` repo [available](https://github.com/aceberg/ppa)

Config

Expand Configuration can be done through config file, GUI or environment variables. Variable names is `config_v2.yaml` file are the same, but in lowcase. ### Basic config | Variable | Description | Default | | -------- | ----------- | ------- | | TZ | Set your timezone for correct time | | | HOST | Listen address | 0.0.0.0 | | PORT | Port for web GUI | 8840 | | THEME | Any theme name from https://bootswatch.com in lowcase or [additional](https://github.com/aceberg/aceberg-bootswatch-fork) | sand | | COLOR | Background color: light or dark | dark | | NODEPATH | Path to local node modules | | | SHOUTRRR_URL | WatchYourLAN uses [Shoutrrr](https://github.com/nicholas-fedor/shoutrrr) to send notifications. It is already integrated, just needs a correct URL. Examples for Discord, Email, Gotify, Matrix, Ntfy, Pushover, Slack, Telegram, Generic Webhook and etc are [here](https://nicholas-fedor.github.io/shoutrrr/) | | ### Scan settings | Variable | Description | Default | | -------- | ----------- | ------- | | IFACES | Interfaces to scan. Could be one or more, separated by space. See [docs/VLAN_ARP_SCAN.md](https://github.com/aceberg/WatchYourLAN/blob/main/docs/VLAN_ARP_SCAN.md). | | | TIMEOUT | Time between scans (seconds) | 120 | | ARP_ARGS | Arguments for `arp-scan`. Enable `debug` log level to see resulting command. (Example: `-r 1`). See [docs/VLAN_ARP_SCAN.md](https://github.com/aceberg/WatchYourLAN/blob/main/docs/VLAN_ARP_SCAN.md). | | | ARP_STRS ARP_STRS_JOINED | See [docs/VLAN_ARP_SCAN.md](https://github.com/aceberg/WatchYourLAN/blob/main/docs/VLAN_ARP_SCAN.md). | | | LOG_LEVEL | Log level: `debug`, `info`, `warn` or `error` | info | | TRIM_HIST | Remove history after (hours) | 48 | | HIST_IN_DB | DEPRECATED since 2.1.3. Now History is always stored in DB. Use TRIM_HIST to reduce DB size | | | USE_DB | Either `sqlite` or `postgres` | sqlite | | PG_CONNECT | Address to connect to PostgreSQL. (Example: `postgres://username:password@192.168.0.1:5432/dbname?sslmode=disable`). Full list of URL parameters [here](https://pkg.go.dev/github.com/lib/pq#hdr-Connection_String_Parameters) | | ### InfluxDB2 config This config matches Grafana's config for InfluxDB data source | Variable | Description | Default | Example | | -------- | ----------- | ------- | ------- | | INFLUX_ENABLE | Enable export to InfluxDB2 | false | true | | INFLUX_SKIP_TLS | Skip TLS Verify | false | true | | INFLUX_ADDR | Address:port of InfluxDB2 server | | https://192.168.2.3:8086/ | | INFLUX_BUCKET | InfluxDB2 bucket | | test | | INFLUX_ORG | InfluxDB2 org | | home | | INFLUX_TOKEN | Secret token, generated by InfluxDB2 | | | ### Prometheus config This config configures the Prometheus data source | Variable | Description | Default | Example | | -------- | ----------- | ------- | ------- | | PROMETHEUS_ENABLE | Enable the Prometheus `/metrics` endpoint | false | true |

Config file

Expand Config file name is `config_v2.yaml`. Example:
arp_args: ""
color: dark
host: 0.0.0.0
ifaces: enp4s0
influx_addr: ""
influx_bucket: ""
influx_enable: false
influx_org: ""
influx_skip_tls: false
influx_token: ""
log_level: info
nodepath: ""
pg_connect: ""
port: "8840"
prometheus_enable: false
shoutrrr_url: "gotify://192.168.0.1:8083/AwQqpAae.rrl5Ob/?title=Unknown host detected&DisableTLS=yes"
theme: sand
timeout: 60
trim_hist: 48
use_db: sqlite

Options

Expand | Key | Description | Default | | -------- | ----------- | ------- | | -d | Path to config dir | /data/WatchYourLAN | | -n | Path to node modules (see below) | |

Local network only

Expand By default, this app pulls themes, icons and fonts from the internet. But, in some cases, it may be useful to have an independent from global network setup. I created a separate [image](https://github.com/aceberg/my-dockerfiles/tree/main/node-bootstrap) with all necessary modules and fonts. Run with Docker:
docker run --name node-bootstrap          \
    -p 8850:8850                          \
    aceberg/node-bootstrap
docker run --name wyl \
    -e "IFACES=$YOURIFACE" \
    -e "TZ=$YOURTIMEZONE" \
    --network="host" \
    -v $DOCKERDATAPATH/wyl:/data/WatchYourLAN \
    aceberg/watchyourlan -n "http://$YOUR_IP:8850"
Or use [docker-compose](https://github.com/aceberg/WatchYourLAN/blob/HEAD/docker-compose.yml)

API & Integrations

Expand ### API Moved to [docs/API.md](https://github.com/aceberg/WatchYourLAN/blob/main/docs/API.md) ### Integrations - [ArchLinux (AUR)](https://aur.archlinux.org/packages/watch-your-lan) by `gilcu3` - [Python API client](https://github.com/drwahl/py-watchyourlanclient) by [drwahl](https://github.com/drwahl) - [Umbrel](https://apps.umbrel.com/app/watch-your-lan) by [Jasper](https://github.com/ceramicwhite) - [YunoHost](https://apps.yunohost.org/app/watchyourlan)

Thanks

Expand - All go packages listed in [dependencies](https://github.com/aceberg/WatchYourLAN/network/dependencies) - Favicon and logo: [Access point icons created by Freepik - Flaticon](https://www.flaticon.com/free-icons/access-point) - [Bootstrap](https://getbootstrap.com/) - Themes: [Free themes for Bootstrap](https://bootswatch.com)

📈 近 7 天 Star 趋势

每日新增 Star(柱)与累计 Star(线)· 数据来自 GitHub

🏆 排名变化趋势

在各榜单中的排名历史(数字越小越靠前)

📋 历史上榜记录

每次快照的详细数据
日期 榜单 排名 周期新增 总 STAR