rackthing-demo-public.mp4
RackThing repurposes a discontinued Spotify Car Thing as a compact, touch-first dashboard for a homelab rack. A Nocturne connector serves the interface and bridges Spotify playback, Home Assistant state, OPNsense telemetry, and optional website statistics to the Car Thing display.
This repository is an early source release extracted from a working personal installation. Expect some setup work: integrations and entity names vary between homelabs.
- Touch-oriented Spotify now-playing controls and queue
- Rack overview with live OPNsense telemetry through Home Assistant
- Home Assistant-powered night mode
- Optional website statistics from Apache access logs
- Ambient mode with locally supplied media
- Chromium watchdog that restores the dashboard after disconnects
Home Assistant ─┐
OPNsense ───────┼─> Nocturne connector ──USB network──> Spotify Car Thing
Apache logs ────┘ Python + static web UI Chromium
The supplied defaults assume the common connector-side USB address
172.16.42.1, Car Thing address 172.16.42.2, and HTTP port 8088. Override
host-specific settings with the environment variables documented below.
- A Spotify Car Thing with Nocturne 4.0.0 or later installed
- A supported Raspberry Pi running Nocturne Connector
- A USB data cable connecting the Pi and Car Thing
Those are the only required devices. Home Assistant, OPNsense, Proxmox, a game server, website statistics, and custom wallpapers are optional.
RackThing does not replace the initial Nocturne installation. Nocturne runs on the Car Thing, while Nocturne Connector runs on the Raspberry Pi. RackThing then installs its dashboard files on that Connector Pi.
If your Car Thing and Connector Pi already work together in Nocturne, skip to step 2. Otherwise:
- Follow the official Nocturne installation guide to install Nocturne 4.0.0 or later on the Car Thing.
- Download the current Connector image from Nocturne Connector releases.
- Flash that image to the Pi's SD card using Raspberry Pi Imager or balenaEtcher.
- Boot the Pi, visit
http://nocturne-connector.local, and finish its on-screen Wi-Fi and Spotify setup. - Connect the Car Thing to the Pi with a USB data cable and confirm ordinary Nocturne works before installing RackThing.
From PowerShell, Terminal, or another computer on the same network, run:
ssh root@nocturne-connector.localIf that hostname does not resolve, find the Pi's IP address in your router and
use ssh root@PI_ADDRESS. Use the SSH credentials configured for your Connector
image.
The Connector image may not include Git, so this download method uses wget and
tar:
cd /tmp
wget -O rackthing-main.tar.gz https://github.com/hdog27/RackThing/archive/refs/heads/main.tar.gz
tar -xzf rackthing-main.tar.gz
cd RackThing-mainIf Git is installed, git clone https://github.com/hdog27/RackThing.git works
too.
Run the dry-run first. It lists what will be copied without changing anything:
./install.sh --dry-run
./install.shThe installer defaults to /data/rackthing, backs up an existing UI, preserves
existing configuration and credentials, and creates starter files on a clean
installation. Use --target PATH to choose another location.
RackThing includes a real, safe-default config.json. The
installer copies it to /data/rackthing/config.json on a new installation and
preserves it during later updates.
Edit it on the Connector Pi:
vi /data/rackthing/config.jsonUse it to change the displayed weather/location values, Proxmox and game-server labels, website label, Home Assistant night-mode entity, and OPNsense sensor entities. Leaving a feature unconfigured displays a neutral placeholder instead of somebody else's location or server data.
Home Assistant credentials are deliberately kept out of config.json. If you
want the Home Assistant or OPNsense features, edit the private secrets file:
vi /data/rackthing/secrets.envAdd your own HA_URL and a dedicated Home Assistant long-lived access token.
Never post or commit that file.
/data/rackthing/start.shThe dashboard should now be served from http://172.16.42.1:8088/ on the
Connector's USB network.
This is a one-time change on the Car Thing. From the Connector Pi, SSH into the Car Thing:
ssh root@172.16.42.2Nocturne's current development documentation lists nocturne as the default
password. Follow Nocturne's official
Displaying your local changes on the Car Thing
instructions to remount the root filesystem read/write and edit the Chromium
--app= URL. Set that URL to:
http://172.16.42.1:8088/
Then remount read-only, sync, and restart Chromium as described in the Nocturne guide. Nocturne releases may change the location of their Chromium configuration, so use their current instructions rather than blindly editing an old path.
RackThing's optional watchdog assumes that the Connector can SSH to the Car
Thing at 172.16.42.2. Advanced users can place a dedicated key at
/data/rackthing/ssh/carthing_key and its host entry in
/data/rackthing/ssh/known_hosts.
After installation, your important local files are:
/data/rackthing/config.json— public, non-secret display and entity settings/data/rackthing/secrets.env— private Home Assistant URL and token/data/rackthing/ssh/— private SSH material for optional device automation/data/rackthing/wallpapers/— optional user-supplied media
Do not blindly run these scripts on a production system. Review the paths, addresses, entities, and SSH permissions first.
| Variable | Default | Purpose |
|---|---|---|
RACKTHING_ROOT |
/data/rackthing |
Application and generated-data directory |
RACKTHING_TZ |
UTC |
POSIX timezone string used by the clock |
RACKTHING_URL |
http://172.16.42.1:8088/ |
Dashboard URL loaded on Car Thing |
RACKTHING_CARTHING_HOST |
172.16.42.2 |
Car Thing host used by the watchdog |
RACKTHING_CARTHING_SSH_HOST |
root@172.16.42.2 |
SSH target used by night mode |
RACKTHING_CARTHING_SSH_KEY |
$RACKTHING_ROOT/ssh/carthing_key |
Private key path; never commit it |
RACKTHING_KNOWN_HOSTS |
$RACKTHING_ROOT/ssh/known_hosts |
Dedicated SSH known-hosts file |
RACKTHING_NIGHT_MODE_ENTITY |
input_boolean.rack_night_mode |
Home Assistant night-mode entity |
RACKTHING_WEBSITE_SSH_HOST |
unset | Enables optional Apache-log statistics |
RACKTHING_WEBSITE_SSH_KEY |
$RACKTHING_ROOT/ssh/apache_key |
Optional web-server SSH key |
Wallpaper Engine and Steam Workshop media are not included. A Workshop subscription grants access for personal use; it does not automatically grant permission to redistribute a creator's files in this repository. Supply your own media, use assets with a compatible license, or obtain permission from each creator. Record attribution and license information for every bundled asset.
The optional website integration processes visitor IP addresses. Keep its JSON feed on a trusted network, disclose logging where required, and follow applicable privacy rules.
RackThing currently reflects one working homelab installation. Contributions that make configuration, installation, and hardware compatibility more portable are welcome.
The weather, Proxmox, and game-server panels are currently UI placeholders, not portable data integrations. They intentionally show unconfigured values in the public release. Spotify, Home Assistant night mode, OPNsense telemetry, and the optional Apache statistics bridge contain the current live integration code.
The first public release uses the MIT License. Third-party visual components are
documented separately in ASSETS.md.
RackThing is an independent community project. It is not affiliated with, endorsed by, or sponsored by Spotify. Spotify, Car Thing, Steam, Wallpaper Engine, Home Assistant, OPNsense, and other names are trademarks of their respective owners.
RackThing's original code is available under the MIT License. Third-party
assets remain subject to their respective licenses; see ASSETS.md.