Publish curated LumaOps source from c85ee9ef8f1454f5c305398902afbb9e6738de40
Managed validation / full (push) Failing after 8s

This commit is contained in:
Public Source Publisher committed 2026-09-30 00:26:45 +00:00
1 parent 91f8b3e3c1
commit def7920856
2271 files changed
+501225 -501178

No files matched your search

+68 -76
View File
@@ -1,76 +1,68 @@
# LumaOps
LumaOps brengt al je ondersteunde RGB-hardware samen in één lokale webinterface.
Vanuit je browser beheer je apparaten, ruimtes, groepen, scènes, planningen, back-ups
en diagnostiek. Er is geen cloudaccount nodig: de toepassing, database en
hardware-engine draaien samen op je eigen Linux- of Unraid-server.
> **Release status:** 0.1.0 is een release candidate. Begin met één apparaat en een
> statische kleur op lage helderheid. RGB-protocollen zijn vaak reverse-engineered;
> directe hardwarebesturing houdt altijd een beperkt risico in.
## Wat je krijgt
- één responsieve interface voor inventaris, bediening, scènes en automatiseringen;
- lokale opslag in SQLite met controleerbare back-up en restore;
- audit- en diagnostiekfuncties zonder ruwe secrets in exports;
- OpenRGB 1.0rc3 als ingebedde hardware-engine;
- een afgeschermde interne OpenRGB SDK-verbinding op `127.0.0.1:6742`;
- expliciete USB-, HID- en I²C-device mappings in plaats van een privileged container.
Native WLED- en Home Assistant-connectors zijn nog niet inbegrepen in 0.1.0.
## Snel starten
Vereisten: Docker Compose v2, Linux/Unraid x86_64 en toegang tot de benodigde
hardware-device nodes.
```sh
cp .env.example .env
# Vervang LUMAOPS_ADMIN_TOKEN in .env door een unieke waarde:
openssl rand -base64 32
docker compose build
docker compose up -d
```
Open vervolgens `http://SERVER-IP:1223`, meld je aan met de ingestelde beheertoken
en doorloop de setupwizard. De token is standaard verplicht omdat de webinterface
op het LAN luistert. Gebruik `SECURE_COOKIES=true` zodra je LumaOps achter HTTPS
plaatst; laat dit op `false` voor rechtstreekse HTTP-toegang op een vertrouwd LAN.
Map alleen de hardware die je werkelijk nodig hebt. Voor netwerkapparaten die
broadcast, multicast of mDNS vereisen, staat een gedocumenteerde host-network
override klaar:
```sh
docker compose -f docker-compose.yml -f docker/compose.host-network.yml up -d
```
Publiceer poort `6742` nooit. Het OpenRGB SDK-protocol heeft zelf geen
authenticatie of transportbeveiliging.
## Documentatie
- [Unraid-installatie](docs/UNRAID_DEPLOYMENT.md)
- [Hardwaretoegang](docs/HARDWARE_ACCESS.md)
- [Back-up en herstel](docs/BACKUP_AND_RESTORE.md)
- [Veiligheidsmodel](docs/SECURITY.md)
- [Probleemoplossing](docs/TROUBLESHOOTING.md)
- [Testen en verificatie](docs/TESTING.md)
- [OpenRGB upstream synchroniseren](docs/OPENRGB_UPSTREAM_SYNC.md)
- [Gedocumenteerde OpenRGB-corepatches](docs/CORE_PATCHES.md)
- [Publieke releasegrens](docs/PUBLIC_RELEASE.md)
De broncode is bewust als OpenRGB-fork opgebouwd. LumaOps staat onder `lumaops/`,
de containerlaag onder `docker/` en projectdocumentatie onder `docs/`.
## OpenRGB en licentie
LumaOps bouwt op [OpenRGB](https://openrgb.org), ontwikkeld door de OpenRGB-
community. De geïmporteerde 1.0rc3-bron, oorspronkelijke copyrightvermeldingen en
licentieteksten blijven behouden. LumaOps en de gecombineerde distributie vallen
onder **GPL-2.0-or-later**. Wie images of binaries verspreidt, moet de bijbehorende
broncode en wijzigingen onder die licentie beschikbaar maken.
Zie [LICENSE](LICENSE) voor de volledige licentietekst en [CONTRIBUTING.md](CONTRIBUTING.md)
voor de upstream bijdragevoorwaarden.
# LumaOps
<p align="center"><strong>Local control for the RGB devices you own.</strong></p>
<p align="center"><a href="#interface-tour">Interface tour</a> · <a href="#what-it-does">Capabilities</a> · <a href="#quick-start">Quick start</a> · <a href="#architecture">Architecture</a> · <a href="#deployment-and-hardware">Deployment</a></p>
LumaOps brings supported RGB hardware into one self-hosted web interface. Manage devices, rooms, groups, scenes, schedules, backups and diagnostics from a browser while the application, SQLite database and hardware engine stay on your Linux or Unraid server. No cloud account is required.
> **Release stage:** 0.1.0 is a release candidate. Start with one device and a low-brightness static colour. Some RGB protocols are reverse engineered; direct hardware control carries a bounded hardware risk.
## Interface tour
![LumaOps device inventory populated with synthetic RGB hardware](docs/screenshots/devices-demo.png)
*Devices: inspect the inventory and control options before connecting hardware.*
![LumaOps scenes view populated with synthetic lighting scenes](docs/screenshots/scenes-demo.png)
*Scenes: organise reusable lighting presets for the devices and rooms you control.*
Both images show the actual frontend in test mode with synthetic API responses. They contain no real devices, accounts or operational data; they do not demonstrate hardware compatibility. Some interface labels currently remain in Dutch even when English is selected.
## What it does
| Area | Capability |
| --- | --- |
| Device inventory | Discover supported hardware and organise devices by room or group. |
| Lighting control | Apply colours, scenes and schedules through a responsive local UI. |
| Operations | Inspect diagnostics and audit records; create and restore local backups. |
| Hardware boundary | Map only required USB, HID and I²C devices into a non-privileged container. |
LumaOps embeds **OpenRGB 1.0rc3** as the hardware engine. Its SDK connection stays on `127.0.0.1:6742` inside the container. Native WLED and Home Assistant connectors are not included in 0.1.0.
## Quick start
Requirements: Docker Compose v2, Linux or Unraid x86_64, and the device nodes needed by your actual hardware. Inspect `docker-compose.yml` before starting; remove or replace example `/dev/hidraw0` and `/dev/i2c-0` mappings if your host uses different devices.
```sh
cp .env.example .env
openssl rand -base64 32 # put the result in LUMAOPS_ADMIN_TOKEN in .env
docker compose build
docker compose up -d
```
Open `http://SERVER-IP:1223`, sign in with the token you configured, and complete the setup wizard. Authentication is required because the web interface listens on the LAN by default. Keep `SECURE_COOKIES=false` for direct HTTP on a trusted LAN; set it to `true` behind HTTPS.
## Architecture
```mermaid
flowchart LR
Browser[Browser UI] --> API[LumaOps application]
API --> DB[(SQLite and app data)]
API --> SDK[Loopback OpenRGB SDK]
SDK --> Hardware[Explicitly mapped devices]
```
The container has a read-only root filesystem, only bounded writable data and configuration paths, and no privileged mode. The OpenRGB SDK is **not authenticated or encrypted**: never publish port `6742`. Only map hardware nodes the application needs.
## Deployment and hardware
Persist `appdata/openrgb/`, `appdata/lumaops/`, `data/` and `logs/`, back up the application state, and test restore before relying on schedules. Use an HTTPS reverse proxy for access beyond a trusted LAN. Hardware that requires broadcast, multicast or mDNS can use the documented host-network override:
```sh
docker compose -f docker-compose.yml -f docker/compose.host-network.yml up -d
```
For device permissions, supported controllers and Unraid setup, see [hardware access](docs/HARDWARE_ACCESS.md) and [Unraid deployment](docs/UNRAID_DEPLOYMENT.md). Operational references include [backup and restore](docs/BACKUP_AND_RESTORE.md), [security](docs/SECURITY.md), [troubleshooting](docs/TROUBLESHOOTING.md) and [testing](docs/TESTING.md).
The product application is in `lumaops/`; container integration is in `docker/`; the imported OpenRGB source and changes remain identifiable. LumaOps builds on [OpenRGB](https://openrgb.org) and is distributed under **GPL-2.0-or-later**; see [LICENSE](LICENSE) and [CONTRIBUTING.md](CONTRIBUTING.md).