https://github.com/aceberg/WatchYourLAN Skip to content Navigation Menu Toggle navigation Sign in * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + GitHub Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions By size + Enterprise + Teams + Startups By industry + Healthcare + Financial services + Manufacturing By use case + CI/CD & Automation + DevOps + DevSecOps * Resources Topics + AI + DevOps + Security + Software Development + View all Explore + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up Reseting focus You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} aceberg / WatchYourLAN Public * * Notifications You must be signed in to change notification settings * Fork 64 * Star 1.6k Lightweight network IP scanner. Can be used to notify about new hosts and monitor host online/offline history hub.docker.com/r/aceberg/watchyourlan License MIT license 1.6k stars 64 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 45 * Pull requests 1 * Actions * Projects 0 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Actions * Projects * Security * Insights aceberg/WatchYourLAN This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main BranchesTags Go to file Code Folders and files Last Last Name Name commit commit message date Latest commit History 180 Commits .github .github assets assets cmd/WatchYourLAN cmd/WatchYourLAN configs configs docs docs internal internal .gitignore .gitignore .goreleaser.yaml .goreleaser.yaml .version .version CHANGELOG.md CHANGELOG.md Dockerfile Dockerfile LICENSE LICENSE Makefile Makefile README.md README.md docker-compose-local.yml docker-compose-local.yml docker-compose.yml docker-compose.yml go.mod go.mod go.sum go.sum View all files Repository files navigation * README * MIT license [l] WatchYourLAN Docker Go Report Card Maintainability Docker Image Size (latest semver) Docker Pulls 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 to make a Grafana dashboard Warning This is version 2.0. Version 1.0 can be found in this brunch: v1 Caution BREAKING CHANGES! Version 2.0 is not compatible with v1.0. For now v2.0 docker images will be released under v2 tag. It will be tagged latest in a few weeks (probably, in October). Screenshot_1 More screenshots Expand Screenshot_5 Screenshot_2 Screenshot_3 Screenshot_4 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:v2 Web GUI should be at http://localhost:8840 Config Expand Configuration can be done through config file, GUI or environment variables 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 sand lowcase or additional COLOR Background color: light or dark dark NODEPATH Path to local node modules Link to any notification service supported by SHOUTRRR_URL Shoutrrr (gotify, email, telegram and others) or Generic Webhook Scan settings Variable Description Default Interfaces to scan. Could be one or more, IFACES separated by space. Currently docker0 is not supported, as arp-scan wouldn't work with it correctly TIMEOUT Time between scans (seconds) 120 Arguments for arp-scan. See man arp-scan for more. ARP_ARGS Enable debug log level to see resulting command. (Example: -r 1) LOG_LEVEL Log level: debug, info, warn or error info TRIM_HIST Remove history after (hours) 48 Store History in DB - if false, the History will be stored only in memory and will be lost on app HIST_IN_DB restart. Though, it will keep the app DB smaller false (and InfluxDB is recommended for long term History storage) USE_DB Either sqlite or postgres sqlite Address to connect to PostgreSQL. (Example: PG_CONNECT postgres://username:password@192.168.0.1:5432/ dbname?sslmode=disable). Full list of URL parameters here 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 https:// server 192.168.2.3:8086/ INFLUX_BUCKET InfluxDB2 bucket test INFLUX_ORG InfluxDB2 org home INFLUX_TOKEN Secret token, generated by InfluxDB2 Config file Expand Config file name is config_v2.yaml. Example: arp_args: "" color: dark hist_in_db: false 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" 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 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:v2 -n "http://$YOUR_IP:8850" Or use docker-compose API Expand Moved to docs/API.md Thanks Expand * All go packages listed in dependencies * Favicon and logo: Access point icons created by Freepik - Flaticon * Bootstrap * Themes: Free themes for Bootstrap About Lightweight network IP scanner. Can be used to notify about new hosts and monitor host online/offline history hub.docker.com/r/aceberg/watchyourlan Topics docker golang gui selfhosted self-hosted arp-scan Resources Readme License MIT license Activity Stars 1.6k stars Watchers 13 watching Forks 64 forks Report repository Releases 17 2.0.0 Latest Aug 31, 2024 + 16 releases Sponsor this project * https://boosty.to/aceberg/donate * https://github.com/aceberg#donate Packages 0 Contributors 3 * * * Languages * Go 44.1% * HTML 38.4% * JavaScript 15.4% * CSS 0.9% * Dockerfile 0.5% * Makefile 0.5% * Shell 0.2% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.