Removes mandatory UCI config dependencies from dashboard modules to allow LuCI menus to display even when backend services are not installed. This fixes 'Permission denied' errors when accessing dashboards for services that haven't been installed yet (crowdsec, netdata, netifyd, etc.). Changes: - Remove uci dependency: crowdsec-dashboard, netdata-dashboard - Remove uci dependency: netifyd-dashboard, wireguard-dashboard - Remove uci dependency: client-guardian, media-flow - Remove uci dependency: network-modes, traffic-shaper Dashboards will now gracefully handle missing backend services and can guide users to install required packages. Related: SecuBox menu organization (v0.1.2-alpha) |
||
|---|---|---|
| .. | ||
| .github/workflows | ||
| htdocs/luci-static/resources | ||
| root/usr | ||
| Makefile | ||
| README.md | ||
LuCI Netdata Dashboard
Real-time system monitoring dashboard for OpenWrt with a modern, responsive interface inspired by Netdata.
Features
📊 Real-time Monitoring
- CPU Usage: Gauge visualization with sparkline history
- Memory: Stacked bar showing used/buffers/cached/free
- Disk: Per-filesystem usage with visual bars
- Network: Interface statistics with RX/TX totals
- Temperature: Sensor readings from thermal zones
- Load Average: 1/5/15 minute load display
🖥️ System Information
- Hostname, model, kernel version
- OpenWrt version and target
- Uptime with days/hours/minutes display
- CPU cores and frequency
🌐 Network Details
- Interface list with IP addresses
- Link state and speed detection
- Connection tracking statistics
- Per-interface traffic breakdown
⚙️ Process Monitor
- Running/sleeping process counts
- Process list with PID, user, command
- Memory usage per process
- State visualization
🎨 Modern Design
- Dark theme optimized for monitoring
- Responsive grid layout
- Animated gauges and sparklines
- GitHub-inspired color palette
Screenshots
Real-time View
Network Statistics
Process Monitor
Installation
Prerequisites
- OpenWrt 21.02 or later
- LuCI web interface
From Source (Recommended)
# Clone into OpenWrt build environment
cd ~/openwrt/feeds/luci/applications/
git clone https://github.com/YOUR_USERNAME/luci-app-netdata-dashboard.git
# Update feeds and install
cd ~/openwrt
./scripts/feeds update -a
./scripts/feeds install -a
# Enable in menuconfig
make menuconfig
# Navigate to: LuCI > Applications > luci-app-netdata-dashboard
# Build package
make package/luci-app-netdata-dashboard/compile V=s
Manual Installation
# Transfer package to router
scp luci-app-netdata-dashboard_1.0.0-1_all.ipk root@192.168.1.1:/tmp/
# Install on router
ssh root@192.168.1.1
opkg install /tmp/luci-app-netdata-dashboard_1.0.0-1_all.ipk
# Restart services
/etc/init.d/rpcd restart
/etc/init.d/uhttpd restart
Usage
After installation, access the dashboard at:
Status → Netdata Dashboard
The dashboard has four tabs:
- Real-time: Overview with gauges and sparklines
- System: Detailed system information
- Network: Interface statistics
- Processes: Process monitor
Data refreshes automatically every 2 seconds.
Architecture
┌─────────────────────────────────────────────────────────┐
│ LuCI JavaScript │
│ (realtime.js, system.js, etc.) │
└───────────────────────────┬─────────────────────────────┘
│ ubus RPC
▼
┌─────────────────────────────────────────────────────────┐
│ RPCD Backend │
│ /usr/libexec/rpcd/netdata │
└───────────────────────────┬─────────────────────────────┘
│ reads
▼
┌─────────────────────────────────────────────────────────┐
│ Linux Proc/Sys │
│ /proc/stat, /proc/meminfo, /sys/class/thermal │
└─────────────────────────────────────────────────────────┘
API Endpoints
| Method | Description |
|---|---|
stats |
Quick overview (CPU%, memory%, load, etc.) |
cpu |
Detailed CPU statistics and per-core data |
memory |
Memory breakdown (total, free, buffers, cached) |
disk |
Filesystem usage and I/O statistics |
network |
Interface stats and connection tracking |
processes |
Process list and counts |
sensors |
Temperature sensor readings |
system |
System information (hostname, kernel, uptime) |
Customization
Modifying Refresh Rate
Edit the poll interval in the view files:
// In realtime.js
poll.add(L.bind(this.refresh, this), 2); // 2 seconds
Adding Custom Metrics
Extend the RPCD backend script at /usr/libexec/rpcd/netdata to add new data sources.
Requirements
- OpenWrt 21.02+
- LuCI (luci-base)
- rpcd with luci module
Dependencies
luci-baseluci-lib-jsoncrpcdrpcd-mod-luci
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Credits
- Inspired by Netdata
- Built for OpenWrt
- Developed by Gandalf @ CyberMind.fr
Related Projects
- luci-app-statistics - collectd-based statistics
- Netdata - Full Netdata agent (x86 only)
Made with ❤️ for the OpenWrt community



