{"id":13548326,"url":"https://github.com/aceberg/WatchYourLAN","last_synced_at":"2025-04-02T21:31:17.393Z","repository":{"id":57849045,"uuid":"524859634","full_name":"aceberg/WatchYourLAN","owner":"aceberg","description":"Lightweight network IP scanner. Can be used to notify about new hosts and monitor host online/offline history","archived":false,"fork":false,"pushed_at":"2025-03-31T09:07:11.000Z","size":9529,"stargazers_count":5574,"open_issues_count":48,"forks_count":187,"subscribers_count":31,"default_branch":"main","last_synced_at":"2025-04-01T16:07:31.750Z","etag":null,"topics":["arp-scan","arp-scanner","intrusion-detection","monitoring","network-security","self-hosted","selfhosted"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/aceberg/watchyourlan","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aceberg.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://boosty.to/aceberg/donate","https://github.com/aceberg#donate"]}},"created_at":"2022-08-15T04:58:22.000Z","updated_at":"2025-04-01T15:55:14.000Z","dependencies_parsed_at":"2024-10-15T14:40:37.850Z","dependency_job_id":"295162c7-c5b3-4aa6-876c-93d28f95aa7c","html_url":"https://github.com/aceberg/WatchYourLAN","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2FWatchYourLAN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2FWatchYourLAN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2FWatchYourLAN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aceberg%2FWatchYourLAN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aceberg","download_url":"https://codeload.github.com/aceberg/WatchYourLAN/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246895721,"owners_count":20851320,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arp-scan","arp-scanner","intrusion-detection","monitoring","network-security","self-hosted","selfhosted"],"created_at":"2024-08-01T12:01:08.852Z","updated_at":"2025-04-02T21:31:17.388Z","avatar_url":"https://github.com/aceberg.png","language":"TypeScript","readme":"\u003ch1\u003e\u003ca href=\"https://github.com/aceberg/WatchYourLAN\"\u003e\n    \u003cimg src=\"https://raw.githubusercontent.com/aceberg/WatchYourLAN/main/assets/logo.png\" width=\"20\" /\u003e\n\u003c/a\u003eWatchYourLAN\u003c/h1\u003e\n\u003cbr/\u003e\n\n[![Docker](https://github.com/aceberg/WatchYourLAN/actions/workflows/main-docker-all.yml/badge.svg)](https://github.com/aceberg/WatchYourLAN/actions/workflows/main-docker-all.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/aceberg/WatchYourLAN)](https://goreportcard.com/report/github.com/aceberg/WatchYourLAN)\n[![Docker Image Size (latest semver)](https://img.shields.io/docker/image-size/aceberg/watchyourlan)](https://hub.docker.com/r/aceberg/watchyourlan)\n[![GitHub Discussions](https://img.shields.io/github/discussions/aceberg/WatchYourLAN)](https://github.com/aceberg/WatchYourLAN/discussions)\n\n\n\nLightweight network IP scanner with web GUI. Features:\n- Send notification when new host is found\n- Monitor hosts online/offline 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![Screenshot_1](https://raw.githubusercontent.com/aceberg/WatchYourLAN/main/assets/Screenshot_1.png)  \n\n## More screenshots\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand\u003c/summary\u003e\n\n![Screenshot_5](https://raw.githubusercontent.com/aceberg/WatchYourLAN/main/assets/Screenshot_5.png)   \n![Screenshot_2](https://raw.githubusercontent.com/aceberg/WatchYourLAN/main/assets/Screenshot_2.png)   \n![Screenshot_3](https://raw.githubusercontent.com/aceberg/WatchYourLAN/main/assets/Screenshot_3.png)   \n![Screenshot_4](https://raw.githubusercontent.com/aceberg/WatchYourLAN/main/assets/Screenshot_4.png) \n\u003c/details\u003e \n\n## Quick start\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand\u003c/summary\u003e\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/wyl:/data/WatchYourLAN \\\n    aceberg/watchyourlan\n```\nWeb GUI should be at http://localhost:8840\n\n\u003c/details\u003e \n\n## Auth\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand\u003c/summary\u003e\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://github.com/aceberg/ForAuth).   \nHere is an example [docker-compose-auth.yml](https://github.com/aceberg/WatchYourLAN/blob/main/docker-compose-auth.yml).\n\n\u003e :warning:  **WARNING!**   \n\u003e 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/details\u003e \n\n## Install on Linux\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand\u003c/summary\u003e\n\nAll 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.   \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://github.com/aceberg/ppa)\n\n\u003c/details\u003e \n\n## Config\n\u003cdetails\u003e\n  \u003csummary\u003eExpand\u003c/summary\u003e\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://bootswatch.com in lowcase or [additional](https://github.com/aceberg/aceberg-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://github.com/containrrr/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://containrrr.dev/shoutrrr/v0.8/services/gotify/) | |\n\n### Scan settings\n| Variable  | Description | Default |\n| --------  | ----------- | ------- |\n| 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). | |\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/VLAN_ARP_SCAN.md](https://github.com/aceberg/WatchYourLAN/blob/main/docs/VLAN_ARP_SCAN.md). | |\n| ARP_STRS ARP_STRS_JOINED | See [docs/VLAN_ARP_SCAN.md](https://github.com/aceberg/WatchYourLAN/blob/main/docs/VLAN_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 | Store History in DB - if `false`, the History will be stored only in memory and will be lost on app restart. Though, it will keep the app DB smaller (InfluxDB or Prometheus is recommended for long-term History storage) | false |\n| USE_DB | Either `sqlite` or `postgres` | sqlite |\n| 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) | |\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://192.168.2.3:8086/ |\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 `/metrics` endpoint | false | true |\n\n\u003c/details\u003e \n\n## Config file\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand\u003c/summary\u003e\n\nConfig file name is `config_v2.yaml`. Example:\n\n```yaml\narp_args: \"\"\ncolor: dark\nhist_in_db: false\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://192.168.0.1:8083/AwQqpAae.rrl5Ob/?title=Unknown host detected\u0026DisableTLS=yes\"\ntheme: sand\ntimeout: 60\ntrim_hist: 48\nuse_db: sqlite\n```\n\n\u003c/details\u003e \n\n## Options\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand\u003c/summary\u003e\n\n| Key  | Description | Default | \n| --------  | ----------- | ------- | \n| -d | Path to config dir | /data/WatchYourLAN | \n| -n | Path to node modules (see below) | |\n\n\u003c/details\u003e \n\n## Local network only\n\u003cdetails\u003e\n  \u003csummary\u003eExpand\u003c/summary\u003e\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://github.com/aceberg/my-dockerfiles/tree/main/node-bootstrap) with all necessary modules and fonts.\nRun with Docker:\n```sh\ndocker run --name node-bootstrap          \\\n    -p 8850:8850                          \\\n    aceberg/node-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/wyl:/data/WatchYourLAN \\\n    aceberg/watchyourlan -n \"http://$YOUR_IP:8850\"\n```\nOr use [docker-compose](docker-compose.yml)\n\n\u003c/details\u003e \n\n## API \u0026 Integrations\n\n\u003cdetails\u003e\n  \u003csummary\u003eExpand\u003c/summary\u003e\n\n### API\nMoved to [docs/API.md](https://github.com/aceberg/WatchYourLAN/blob/main/docs/API.md)\n\n### Integrations\n- [ArchLinux (AUR)](https://aur.archlinux.org/packages/watch-your-lan) by `gilcu3`\n- [Python API client](https://github.com/drwahl/py-watchyourlanclient) by [drwahl](https://github.com/drwahl)\n- [Umbrel](https://apps.umbrel.com/app/watch-your-lan) by [Jasper](https://github.com/ceramicwhite)\n- [YunoHost](https://apps.yunohost.org/app/watchyourlan)\n\u003c/details\u003e \n\n## Thanks\n\u003cdetails\u003e\n  \u003csummary\u003eExpand\u003c/summary\u003e\n\n- All go packages listed in [dependencies](https://github.com/aceberg/WatchYourLAN/network/dependencies)\n- Favicon and logo: [Access point icons created by Freepik - Flaticon](https://www.flaticon.com/free-icons/access-point)\n- [Bootstrap](https://getbootstrap.com/)\n- Themes: [Free themes for Bootstrap](https://bootswatch.com)\n\n\u003c/details\u003e \n","funding_links":["https://boosty.to/aceberg/donate","https://github.com/aceberg#donate"],"categories":["Software","Go","置顶","扫描器_资产收集_子域名","self-hosted","Network"],"sub_categories":["Network Utilities","05、运维监控体系","资源传输下载","Network Reconnaissance Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faceberg%2FWatchYourLAN","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faceberg%2FWatchYourLAN","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faceberg%2FWatchYourLAN/lists"}