secubox-openwrt/package/secubox/luci-app-crowdsec-dashboard
CyberMind-FR aefc6e5265 fix: Read status from data parameter in wizard step 1 (v0.6.0-r5)
Fix Next button remaining disabled despite correct status:
- Change renderStep1 to read from data parameter instead of wizardData
- Read status.crowdsec and status.lapi_status from passed data
- Ensures button state reflects actual API response

Issue: Next button not clickable even with LAPI available
Cause: renderStep1 reading from stale wizardData instead of fresh data
Solution: Read from data parameter passed by render()

Frontend Changes:
- htdocs/luci-static/resources/view/crowdsec-dashboard/wizard.js
  - renderStep1: Read from data.status instead of this.wizardData
  - Extract crowdsecRunning and lapiAvailable from data parameter

Version: 0.6.0-5

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-07 09:05:34 +01:00
..
.github/workflows feat(structure): reorganize luci-app packages into package/secubox/ + appstore migration 2026-01-01 14:59:38 +01:00
htdocs/luci-static/resources fix: Read status from data parameter in wizard step 1 (v0.6.0-r5) 2026-01-07 09:05:34 +01:00
po/templates feat(structure): reorganize luci-app packages into package/secubox/ + appstore migration 2026-01-01 14:59:38 +01:00
root/usr fix: Add LAPI status check to wizard prerequisites (v0.6.0-r3) 2026-01-07 08:58:54 +01:00
.gitignore feat(structure): reorganize luci-app packages into package/secubox/ + appstore migration 2026-01-01 14:59:38 +01:00
LICENSE feat(structure): reorganize luci-app packages into package/secubox/ + appstore migration 2026-01-01 14:59:38 +01:00
Makefile fix: Read status from data parameter in wizard step 1 (v0.6.0-r5) 2026-01-07 09:05:34 +01:00
README.md feat(structure): reorganize luci-app packages into package/secubox/ + appstore migration 2026-01-01 14:59:38 +01:00

🛡️ LuCI CrowdSec Dashboard

Version: 0.4.0
Last Updated: 2025-12-28
Status: Active

A modern, responsive, and dynamic dashboard for monitoring CrowdSec security on OpenWrt routers.

License OpenWrt CrowdSec

Dashboard Overview

Features

  • Real-time Overview - Monitor active bans, alerts, and bouncer status at a glance
  • Decision Management - View, search, filter, and manage IP bans directly from the interface
  • Alert History - Browse and analyze security alerts with detailed event information
  • Metrics Dashboard - Comprehensive view of CrowdSec engine metrics, parsers, and scenarios
  • Responsive Design - Works perfectly on desktop, tablet, and mobile devices
  • Auto-refresh - Data updates automatically every 30-60 seconds
  • Dark Theme - Industrial cybersecurity aesthetic optimized for low-light environments

📦 Installation

opkg update
opkg install luci-app-crowdsec-dashboard

Manual Installation

  1. Download the latest release from the Releases page

  2. Transfer to your OpenWrt device:

scp luci-app-crowdsec-dashboard_*.ipk root@router:/tmp/
  1. Install the package:
opkg install /tmp/luci-app-crowdsec-dashboard_*.ipk
  1. Restart uhttpd:
/etc/init.d/uhttpd restart
/etc/init.d/rpcd restart

Building from Source

  1. Clone into your OpenWrt build environment:
cd ~/openwrt/feeds/luci/applications/
git clone https://github.com/YOUR_USERNAME/luci-app-crowdsec-dashboard.git
  1. Update feeds and select the package:
cd ~/openwrt
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
# Navigate to LuCI → Applications → luci-app-crowdsec-dashboard
  1. Build:
make package/luci-app-crowdsec-dashboard/compile V=s

🔧 Requirements

  • OpenWrt 21.02 or later
  • CrowdSec Security Engine installed and running
  • CrowdSec Firewall Bouncer (recommended)
  • LuCI web interface
opkg install crowdsec crowdsec-firewall-bouncer

📱 Screenshots

Overview Dashboard

Real-time stats, top scenarios, and countries visualization.

Decisions Manager

Full-featured table with search, sort, bulk actions, and manual ban capability.

Alert History

Chronological view of all security events with filtering options.

Metrics View

Detailed engine metrics, bouncer status, and hub components.

🏗️ Architecture

luci-app-crowdsec-dashboard/
├── Makefile                          # OpenWrt build instructions
├── htdocs/
│   └── luci-static/resources/
│       ├── crowdsec-dashboard/
│       │   ├── api.js               # RPC API module
│       │   └── dashboard.css        # Cybersecurity theme styles
│       └── view/crowdsec-dashboard/
│           ├── overview.js          # Main dashboard view
│           ├── decisions.js         # Decisions management
│           ├── alerts.js            # Alerts history
│           └── metrics.js           # Metrics display
├── root/
│   ├── usr/libexec/rpcd/
│   │   └── crowdsec                 # RPCD backend (shell script)
│   └── usr/share/
│       ├── luci/menu.d/             # Menu configuration
│       └── rpcd/acl.d/              # ACL permissions
└── po/                              # Translations

🔌 API Endpoints

The dashboard uses ubus RPC calls through the crowdsec RPCD module:

Method Description
decisions Get all active decisions
alerts Get alert history with limit
metrics Get Prometheus metrics
bouncers List registered bouncers
machines List registered machines
hub Get hub status (collections, parsers, scenarios)
status Get service status
stats Get aggregated dashboard statistics
ban Add manual IP ban
unban Remove IP ban

🎨 Customization

Changing the Theme

Edit /htdocs/luci-static/resources/crowdsec-dashboard/dashboard.css:

:root {
    --cs-bg-primary: #0a0e14;
    --cs-accent-green: #00d4aa;
    /* ... modify colors as needed */
}

Adding New Metrics

  1. Add RPC method in /root/usr/libexec/rpcd/crowdsec
  2. Declare RPC call in /htdocs/luci-static/resources/crowdsec-dashboard/api.js
  3. Create UI component in the appropriate view file

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

🙏 Acknowledgments

  • CrowdSec - The open-source security engine
  • OpenWrt - The freedom to make your network your own
  • LuCI - OpenWrt Configuration Interface

📬 Contact

Gandalf - CyberMind.fr


Made with ❤️ for the OpenWrt and CrowdSec communities