A lightweight Flask-based dashboard for scanning and monitoring LAN devices
Project description
UbuntuWebServer - Flask Network Scanner
A modern, lightweight network device scanner built with Flask and Python. This dashboard detects all devices on your local network, identifies them by MAC/IP/hostname/vendor, optionally detects OS, and offers admin-editable notes for known devices.
=====================================
✅ Project Goal
Create a web-based dashboard on your Ubuntu server (or Proxmox VM) that:
- Scans the network for connected devices (IP, MAC, hostname, vendor, OS)
- Logs and displays results in a web UI
- Allows tagging/notes for known hosts
- Optionally alerts on new/unknown devices
- Runs continuously with auto-refresh and deep scan automation
=====================================
🛠 Tools & Technologies
| Task | Tool |
|---|---|
| Web Server | Apache2 (optional) / Flask |
| Backend | Python (Flask) |
| Network Scanning | nmap, mac-vendor-lookup |
| Frontend | HTML/CSS/JS (Bootstrap) |
| Storage | SQLite |
| Scheduling | cron |
| Startup Automation | systemd |
=====================================
🧱 Architecture
[Ubuntu Server / Proxmox VM] | [Flask App - app.py] | [Nmap Scans + Deep Scan (cron)] | [SQLite Database + MAC Vendor DB] | [Bootstrap Web UI w/ Auto Refresh]
=====================================
🧪 Installation Instructions
- Clone and Setup
git clone https://github.com/yourusername/UbuntuWebServer.git cd UbuntuWebServer python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
- Install Dependencies
sudo apt update sudo apt install nmap sqlite3 -y
- Initialize the Database
bash init_db.sh
- Start the Flask App
bash run_flask.sh
Then visit: http://:5000
=====================================
🔁 Sync & Restart from GitHub
bash sync_from_github.sh
This will:
- Pull the latest code
- Ensure sqlite3 is installed
- Initialize the DB if needed
- Restart the Flask app
=====================================
🔂 Automate Deep OS Scan
bash install_cron.sh
This sets up a cron job to run every 30 minutes: */30 * * * * /usr/bin/python3 /home/tim2/UbuntuWebServer/deep_scan.py
=====================================
🚀 Enable on Boot (systemd)
sudo cp flaskscanner.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable flaskscanner sudo systemctl start flaskscanner
=====================================
🧾 Add/Edit Known Hosts
python insert_known_host.py
This will prompt for:
- MAC
- IP
- Hostname
- Vendor
- OS
- Notes
=====================================
📁 Project Layout
| File | Purpose |
|---|---|
| app.py | Flask app, runs network scan |
| deep_scan.py | OS detection, cron-based |
| insert_known_host.py | CLI insert for known host DB |
| templates/ | HTML UI (scan_results.html) |
| known_hosts.db | SQLite DB for persistent host info |
| sync_to_github.sh | Push code from Ubuntu → GitHub |
| sync_from_github.sh | Pull updates from GitHub and restart |
| init_db.sh | Creates the known_hosts table |
| flask.log, app_errors.log | Log files |
=====================================
🌐 Web UI Features
- Auto-refresh every 15s
- Manual refresh button
- Search/filter box (IP, MAC, Vendor, Hostname)
- Color badges by vendor
- OS info from deep scans
- Notes from DB
- Responsive Bootstrap layout
=====================================
🩺 Troubleshooting
- Ensure nmap is installed: sudo apt install nmap
- If port 5000 fails, run: lsof -i :5000
- Run with debug=True in development
- For Windows compatibility, use WSL or Python 3.10+
=====================================
⚠️ Security Notice
This tool is for use on trusted private networks only. There is no authentication or encryption by default. Do not expose to the public internet.
=====================================
📸 Screenshots
(Add a screenshot named dashboard_screenshot.png in /static/)
=====================================
📄 License
MIT License
=====================================
🙋♂️ Author
Timothy Johnson II Hosted PBX Engineer, 123NET GitHub: https://github.com/tjohnsonII
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ubuntuwebscanner-1.0.15.tar.gz.
File metadata
- Download URL: ubuntuwebscanner-1.0.15.tar.gz
- Upload date:
- Size: 82.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
85d66edafec283f6b3fc6255e126ed57b2834f4a2ff0731ffd589fd1d3157b08
|
|
| MD5 |
601a739b52ead252f27bf31c89f722cd
|
|
| BLAKE2b-256 |
a984eadd9fa31b7bda765cad6f494a03ec8f4fd6d863316be72b54bf933a81bc
|
File details
Details for the file ubuntuwebscanner-1.0.15-py3-none-any.whl.
File metadata
- Download URL: ubuntuwebscanner-1.0.15-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec98c60ad4f7ed4f29564272d3f7511d4c9c051346d2c03a66058f50c4850d54
|
|
| MD5 |
d69f7979f3255d77ad965b600e137ea0
|
|
| BLAKE2b-256 |
807548c87498e363f6723fd1e1305c32a14d4996500e661207c634bb2d7d1712
|