A Blazor Server dashboard for controlling Nanoleaf panels from a browser on your local network.
- Turns panels on and off
- Adjusts brightness with a debounced slider
- Selects scenes/effects from the device effect list
- Sets a solid color via hue/saturation
- Shows a live SVG panel layout preview based on the Nanoleaf panel map
- Polls the controller every 5 seconds to keep UI state in sync
- .NET Blazor Server
- Nanoleaf OpenAPI over local HTTP
- Container image published to GitHub Container Registry
The app reads these settings from configuration (appsettings or environment variables):
Nanoleaf:IpAddressNanoleaf:AuthToken
Environment variable equivalents:
Nanoleaf__IpAddressNanoleaf__AuthToken
Example appsettings.json section:
"Nanoleaf": {
"IpAddress": "192.168.1.100",
"AuthToken": "your-token"
}Prerequisites:
- .NET 10 SDK
- Network access to your Nanoleaf controller
From src/:
dotnet runBy default (launch profile http) the app runs on:
http://0.0.0.0:5009
Use the published image:
docker run --rm -it \
-p 8080:8080 \
-e Nanoleaf__IpAddress="YOUR_IP" \
-e Nanoleaf__AuthToken="YOUR_TOKEN" \
ghcr.io/mitchfen/nanoleaf-controller:latestThen open http://localhost:8080.
From src/:
dotnet workload restore
dotnet publish nanoleaf-controller.csproj -c Release -o ./app
docker build -t ghcr.io/mitchfen/nanoleaf-controller:latest .- Base64-encode your Nanoleaf values and update
kubernetes/secrets.yaml. - Create namespace:
kubectl create namespace nanoleaf-controller- Apply secret:
kubectl apply -f kubernetes/secrets.yaml -n nanoleaf-controller- Apply deployment/service/ingress:
kubectl apply -f kubernetes/manifest.yaml -n nanoleaf-controllerThe provided ingress host is nanoleaf-controller.home and is configured for Traefik TLS entrypoint websecure.
- This app is intended for trusted local network use.
- The Nanoleaf API calls are made over HTTP to port
16021on the controller.
