[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-71451":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":16,"starSnapshotCount":16,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},71451,"WatchYourLAN","aceberg\u002FWatchYourLAN","aceberg","Lightweight network IP scanner written in Go. With notifications, history, export to Grafana","https:\u002F\u002Fhub.docker.com\u002Fr\u002Faceberg\u002Fwatchyourlan",null,"Go",7029,240,30,53,0,4,14,47,12,38.15,"MIT License",false,"main",true,[27,28,29,30,31,32,33],"arp-scan","arp-scanner","intrusion-detection","monitoring","network-security","self-hosted","selfhosted","2026-06-12 02:02:52","\u003Ch1>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\">\n    \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Faceberg\u002FWatchYourLAN\u002Fmain\u002Fassets\u002Flogo.png\" width=\"20\" \u002F>\n\u003C\u002Fa>WatchYourLAN\u003C\u002Fh1>\n\u003Cbr\u002F>\n\n[![Docker](https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\u002Factions\u002Fworkflows\u002Fmain-docker-all.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\u002Factions\u002Fworkflows\u002Fmain-docker-all.yml)\n[![Go Report Card](https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN)\n[![Docker Image Size (latest semver)](https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fimage-size\u002Faceberg\u002Fwatchyourlan)](https:\u002F\u002Fhub.docker.com\u002Fr\u002Faceberg\u002Fwatchyourlan)\n[![GitHub Discussions](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdiscussions\u002Faceberg\u002FWatchYourLAN)](https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\u002Fdiscussions)   \n\n\u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F11642\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Ftrendshift.io\u002Fapi\u002Fbadge\u002Frepositories\u002F11642\" alt=\"aceberg%2FWatchYourLAN | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\nLightweight network IP scanner with web GUI. Features:\n- Send notification when new host is found\n- Monitor hosts online\u002Foffline history\n- Keep a list of all hosts in the network\n- Send data to `InfluxDB2` or `Prometheus` to make a `Grafana` dashboard \n\n> [!IMPORTANT]   \n> Please, consider making a [donation](https:\u002F\u002Fgithub.com\u002Faceberg#donate). Even $10 will make a difference to me.\n\n![Screenshot_1](https:\u002F\u002Fraw.githubusercontent.com\u002Faceberg\u002FWatchYourLAN\u002Fmain\u002Fassets\u002FScreenshot_1.png)  \n\n## More screenshots\n\n\u003Cdetails>\n  \u003Csummary>Expand\u003C\u002Fsummary>\n\n![Screenshot_5](https:\u002F\u002Fraw.githubusercontent.com\u002Faceberg\u002FWatchYourLAN\u002Fmain\u002Fassets\u002FScreenshot_5.png)   \n![Screenshot_2](https:\u002F\u002Fraw.githubusercontent.com\u002Faceberg\u002FWatchYourLAN\u002Fmain\u002Fassets\u002FScreenshot_2.png)   \n![Screenshot_3](https:\u002F\u002Fraw.githubusercontent.com\u002Faceberg\u002FWatchYourLAN\u002Fmain\u002Fassets\u002FScreenshot_3.png)   \n![Screenshot_4](https:\u002F\u002Fraw.githubusercontent.com\u002Faceberg\u002FWatchYourLAN\u002Fmain\u002Fassets\u002FScreenshot_4.png) \n\u003C\u002Fdetails> \n\n## Quick start\n\n\u003Cdetails>\n  \u003Csummary>Expand\u003C\u002Fsummary>\n\nReplace `$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:\n\n```sh\ndocker run --name wyl \\\n\t-e \"IFACES=$YOURIFACE\" \\\n\t-e \"TZ=$YOURTIMEZONE\" \\\n\t--network=\"host\" \\\n\t-v $DOCKERDATAPATH\u002Fwyl:\u002Fdata\u002FWatchYourLAN \\\n    aceberg\u002Fwatchyourlan\n```\nWeb GUI should be at http:\u002F\u002Flocalhost:8840\n\n\u003C\u002Fdetails> \n\n## Auth\n\n\u003Cdetails>\n  \u003Csummary>Expand\u003C\u002Fsummary>\n\n**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:\u002F\u002Fgithub.com\u002Faceberg\u002FForAuth).   \nHere is an example [docker-compose-auth.yml](https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\u002Fblob\u002Fmain\u002Fdocker-compose-auth.yml).\n\n> :warning:  **WARNING!**   \n> 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.   \n\n\u003C\u002Fdetails> \n\n## Install on Linux\n\n\u003Cdetails>\n  \u003Csummary>Expand\u003C\u002Fsummary>\n\nAll binary packages can be found in [latest](https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\u002Freleases\u002Flatest) release. There are `.deb`, `.rpm`, `.apk` (Alpine Linux) and `.tar.gz` files.   \n\nSupported architectures: `amd64`, `i386`, `arm_v5`, `arm_v6`, `arm_v7`, `arm64`.   \nDependencies: `arp-scan`, `tzdata`.\n\nFor `amd64` there is a `deb` repo [available](https:\u002F\u002Fgithub.com\u002Faceberg\u002Fppa)\n\n\u003C\u002Fdetails> \n\n## Config\n\u003Cdetails>\n  \u003Csummary>Expand\u003C\u002Fsummary>\n\nConfiguration can be done through config file, GUI or environment variables. Variable names is `config_v2.yaml` file are the same, but in lowcase.\n\n### Basic config\n| Variable  | Description | Default |\n| --------  | ----------- | ------- |\n| TZ | Set your timezone for correct time | |\n| HOST | Listen address | 0.0.0.0 |\n| PORT   | Port for web GUI | 8840 |\n| THEME | Any theme name from https:\u002F\u002Fbootswatch.com in lowcase or [additional](https:\u002F\u002Fgithub.com\u002Faceberg\u002Faceberg-bootswatch-fork) | sand |\n| COLOR | Background color: light or dark | dark |\n| NODEPATH | Path to local node modules |  |\n| SHOUTRRR_URL | WatchYourLAN uses [Shoutrrr](https:\u002F\u002Fgithub.com\u002Fnicholas-fedor\u002Fshoutrrr) 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:\u002F\u002Fnicholas-fedor.github.io\u002Fshoutrrr\u002F) | |\n\n### Scan settings\n| Variable  | Description | Default |\n| --------  | ----------- | ------- |\n| IFACES | Interfaces to scan. Could be one or more, separated by space. See [docs\u002FVLAN_ARP_SCAN.md](https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\u002Fblob\u002Fmain\u002Fdocs\u002FVLAN_ARP_SCAN.md). | |\n| TIMEOUT | Time between scans (seconds) | 120 |\n| ARP_ARGS | Arguments for `arp-scan`. Enable `debug` log level to see resulting command. (Example: `-r 1`). See [docs\u002FVLAN_ARP_SCAN.md](https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\u002Fblob\u002Fmain\u002Fdocs\u002FVLAN_ARP_SCAN.md). | |\n| ARP_STRS ARP_STRS_JOINED | See [docs\u002FVLAN_ARP_SCAN.md](https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\u002Fblob\u002Fmain\u002Fdocs\u002FVLAN_ARP_SCAN.md). | |\n| LOG_LEVEL | Log level: `debug`, `info`, `warn` or `error` | info |\n| TRIM_HIST | Remove history after (hours) | 48 |\n| HIST_IN_DB | DEPRECATED since 2.1.3. Now History is always stored in DB. Use TRIM_HIST to reduce DB size |  |\n| USE_DB | Either `sqlite` or `postgres` | sqlite |\n| PG_CONNECT | Address to connect to PostgreSQL. (Example: `postgres:\u002F\u002Fusername:password@192.168.0.1:5432\u002Fdbname?sslmode=disable`). Full list of URL parameters [here](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Flib\u002Fpq#hdr-Connection_String_Parameters) | |\n\n### InfluxDB2 config\nThis config matches Grafana's config for InfluxDB data source\n\n| Variable  | Description | Default | Example |\n| --------  | ----------- | ------- | ------- |\n| INFLUX_ENABLE | Enable export to InfluxDB2 | false | true |\n| INFLUX_SKIP_TLS | Skip TLS Verify | false | true |\n| INFLUX_ADDR | Address:port of InfluxDB2 server | | https:\u002F\u002F192.168.2.3:8086\u002F |\n| INFLUX_BUCKET | InfluxDB2 bucket | | test |\n| INFLUX_ORG | InfluxDB2 org | | home |\n| INFLUX_TOKEN | Secret token, generated by InfluxDB2 | | |\n\n### Prometheus config\nThis config configures the Prometheus data source\n\n| Variable  | Description | Default | Example |\n| --------  | ----------- | ------- | ------- |\n| PROMETHEUS_ENABLE | Enable the Prometheus `\u002Fmetrics` endpoint | false | true |\n\n\u003C\u002Fdetails> \n\n## Config file\n\n\u003Cdetails>\n  \u003Csummary>Expand\u003C\u002Fsummary>\n\nConfig file name is `config_v2.yaml`. Example:\n\n```yaml\narp_args: \"\"\ncolor: dark\nhost: 0.0.0.0\nifaces: enp4s0\ninflux_addr: \"\"\ninflux_bucket: \"\"\ninflux_enable: false\ninflux_org: \"\"\ninflux_skip_tls: false\ninflux_token: \"\"\nlog_level: info\nnodepath: \"\"\npg_connect: \"\"\nport: \"8840\"\nprometheus_enable: false\nshoutrrr_url: \"gotify:\u002F\u002F192.168.0.1:8083\u002FAwQqpAae.rrl5Ob\u002F?title=Unknown host detected&DisableTLS=yes\"\ntheme: sand\ntimeout: 60\ntrim_hist: 48\nuse_db: sqlite\n```\n\n\u003C\u002Fdetails> \n\n## Options\n\n\u003Cdetails>\n  \u003Csummary>Expand\u003C\u002Fsummary>\n\n| Key  | Description | Default | \n| --------  | ----------- | ------- | \n| -d | Path to config dir | \u002Fdata\u002FWatchYourLAN | \n| -n | Path to node modules (see below) | |\n\n\u003C\u002Fdetails> \n\n## Local network only\n\u003Cdetails>\n  \u003Csummary>Expand\u003C\u002Fsummary>\n\nBy 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:\u002F\u002Fgithub.com\u002Faceberg\u002Fmy-dockerfiles\u002Ftree\u002Fmain\u002Fnode-bootstrap) with all necessary modules and fonts.\nRun with Docker:\n```sh\ndocker run --name node-bootstrap          \\\n    -p 8850:8850                          \\\n    aceberg\u002Fnode-bootstrap\n```\n```sh\ndocker run --name wyl \\\n\t-e \"IFACES=$YOURIFACE\" \\\n\t-e \"TZ=$YOURTIMEZONE\" \\\n\t--network=\"host\" \\\n\t-v $DOCKERDATAPATH\u002Fwyl:\u002Fdata\u002FWatchYourLAN \\\n    aceberg\u002Fwatchyourlan -n \"http:\u002F\u002F$YOUR_IP:8850\"\n```\nOr use [docker-compose](docker-compose.yml)\n\n\u003C\u002Fdetails> \n\n## API & Integrations\n\n\u003Cdetails>\n  \u003Csummary>Expand\u003C\u002Fsummary>\n\n### API\nMoved to [docs\u002FAPI.md](https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\u002Fblob\u002Fmain\u002Fdocs\u002FAPI.md)\n\n### Integrations\n- [ArchLinux (AUR)](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fwatch-your-lan) by `gilcu3`\n- [Python API client](https:\u002F\u002Fgithub.com\u002Fdrwahl\u002Fpy-watchyourlanclient) by [drwahl](https:\u002F\u002Fgithub.com\u002Fdrwahl)\n- [Umbrel](https:\u002F\u002Fapps.umbrel.com\u002Fapp\u002Fwatch-your-lan) by [Jasper](https:\u002F\u002Fgithub.com\u002Fceramicwhite)\n- [YunoHost](https:\u002F\u002Fapps.yunohost.org\u002Fapp\u002Fwatchyourlan)\n\u003C\u002Fdetails> \n\n## Thanks\n\u003Cdetails>\n  \u003Csummary>Expand\u003C\u002Fsummary>\n\n- All go packages listed in [dependencies](https:\u002F\u002Fgithub.com\u002Faceberg\u002FWatchYourLAN\u002Fnetwork\u002Fdependencies)\n- Favicon and logo: [Access point icons created by Freepik - Flaticon](https:\u002F\u002Fwww.flaticon.com\u002Ffree-icons\u002Faccess-point)\n- [Bootstrap](https:\u002F\u002Fgetbootstrap.com\u002F)\n- Themes: [Free themes for Bootstrap](https:\u002F\u002Fbootswatch.com)\n\n\u003C\u002Fdetails> \n","WatchYourLAN 是一个轻量级的网络IP扫描工具，使用Go语言编写。它具有发送新主机发现通知、监控主机在线\u002F离线历史记录、维护网络中所有主机列表以及将数据发送到InfluxDB2或Prometheus以创建Grafana仪表板等功能。该工具非常适合需要进行网络监控和安全检查的场景，如企业内部网络管理、家庭网络监控等。通过简洁的Web界面，用户可以轻松查看网络状态，并结合外部认证工具增强安全性。",2,"2026-06-11 03:37:48","high_star"]