Hi,
I'm Michele from NINUX Basilicata, a community network in southern
Italy. We manage our OpenWrt routers with OpenWISP. We built two small
projects that might be useful to others, and we'd like your opinion on
whether they fit OpenWISP.
1. luci-theme-ninux: a LuCI theme with Basic and Advanced modes
https://github.com/mikysal78/luci-theme-ninux
A lightweight LuCI theme for OpenWrt 24.10 and 25.12, with a menu bar at
the top and a Basic/Advanced switch in the header.
- Basic mode is meant for non-technical users, a bit like consumer
routers. It shows only overview, Wi-Fi, interfaces, password,
backup/firmware and reboot, and hides expert options: device and global
network settings, add/delete buttons, advanced tabs of the edit dialogs.
On the overview, RAM and storage show just the total size and usage
percentage.
- Advanced mode is the full LuCI.
- Logo, name and accent colors are read from UCI (luci.ninux).
- It is added next to Bootstrap and does not replace it.
- Releases ship .ipk and .apk packages, built by CI with the official
OpenWrt SDK.
2. openwisp-luci-theme: per-organization theme settings in OpenWISP
https://github.com/mikysal78/openwisp-luci-theme
A Django app for openwisp-controller, tested with 1.3.2, that adds a
"LuCI theme of the routers" box to the organization admin page.
- Each organization can upload its logo (SVG, PNG, JPEG, WebP or GIF)
and set name, colors, initial mode and whether the switch is shown.
- The values reach the devices through Config.register_context_function.
Empty fields fall back to the global context, and device variables still
win.
- Saving the box recomputes the configuration checksums of the
organization's devices, using the same task OpenWISP uses for
organization variables, so routers pick up the change at their next check.
- The logo travels inside the device configuration as a data: URI, so it
shows even when the user's browser can't reach the Internet or the
OpenWISP server.
- It includes permissions for the default Administrator and Operator
groups, an Italian translation, and an integration test suite that runs
inside the openwisp-controller test project.
Documentation (English)
Both projects are part of a step-by-step guide to rebuild our whole
infrastructure:
- Overview:
https://mikysal78.github.io/ninux-basilicata-infra/en/
- LuCI theme, variables and template:
https://mikysal78.github.io/ninux-basilicata-infra/en/openwisp/#3-first-login
- The OpenWISP module:
https://mikysal78.github.io/ninux-basilicata-infra/en/moduli/#openwisp-luci-theme
- Firmware build (the theme is included for all devices except x86):
https://mikysal78.github.io/ninux-basilicata-infra/en/firmware/
Questions for you
1. Would something like this be welcome in OpenWISP, for example as an
optional module?
2. Today the module writes the settings of our theme. Would you prefer a
more generic form, such as LuCI branding not tied to one theme?
3. If you adopt it, would you prefer a different name, for example
luci-theme-openwisp under the OpenWISP organization? We are happy to
rename it and adapt it to your conventions.
Both projects run in production on our network. Feedback is very welcome.
Thanks,
Michele Salerno