All apps · 0 apps
heddohon
Docker app from zorcerer's Repository
Overview
Readme
View on GitHub
Heddohon connects to your music server from its own backend, so the browser only talks to Heddohon. Audio and artwork are proxied through it, which makes Heddohon the only host you expose and keeps upstream credentials on the server.
browser ──► Heddohon ──► Navidrome / Jellyfin
Features
- Original files by default: audio streams as it sits on disk, and the player shows the decoded format (
FLAC 24/192,MP3 320). - Optional transcoding: MP3, Opus or AAC at a chosen bitrate, toggled mid-track from the quality badge.
- Server-side rendering: pages arrive with the theme and interface scale already applied.
- Per-account state: settings and queue sync across devices.
- Cached cover art, synced lyrics and recommendations from your music server.
- Fast track handoff: the next track is pre-buffered so it starts right away. Audio covers the details.
- Accent colour sampled from the current album cover.
![]() |
![]() |
| Synced lyrics | More from the artist and recommendations |
Quick start
git clone https://github.com/zorcerer/heddohon.git && cd heddohon
cp .env.example .env
echo "HEDDOHON_SECRET=$(openssl rand -base64 48)" >> .env
echo "HEDDOHON_SUBSONIC_URL=http://10.0.0.10:4533" >> .env
docker compose up -d
Open http://localhost:13000 and sign in with your music server account.
To expose it publicly, set ORIGIN and read SECURITY.md.
Images: ghcr.io/zorcerer/heddohon or zorcererd/heddohon. An Unraid template
is in templates/heddohon.xml. To run it with Node 22+
instead of Docker: npm ci && npm run build && node build/index.js.
Documentation
- Configuration: environment variables, reverse proxy, Unraid
- Security: threat model, known gaps, reporting
- Audio: what "high-resolution" means in a browser
- Architecture · Design notes
AI disclosure
Written with assistance from Claude. The code and security posture have been reviewed by me and by AI-assisted audits, documented in SECURITY.md. A professional third-party audit has yet to be done.
License
Media gallery
1 / 3Install Heddohon on Unraid in a few clicks.
Find Heddohon in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/zorcerer/heddohon:latestRuntime arguments
- Web UI
http://[IP]:[PORT:3000]- Network
bridge- Shell
bash- Privileged
- false
- Extra Params
--user 99:100
Template configuration
Port the interface is served on.
- Target
- 3000
- Default
- 13000
- Value
- 13000
Holds the SQLite database and the cover cache.
- Target
- /data
- Default
- /mnt/user/appdata/heddohon
- Value
- /mnt/user/appdata/heddohon
Encrypts stored music-server credentials and derives session keys. Minimum 32 characters: openssl rand -base64 48. Changing it signs everyone out.
- Target
- HEDDOHON_SECRET
Base URL of your Navidrome or Subsonic server, resolved by this container rather than by the browser. Leave empty if you only use Jellyfin.
- Target
- HEDDOHON_SUBSONIC_URL
Base URL of your Jellyfin server. Leave empty if you only use Navidrome.
- Target
- HEDDOHON_JELLYFIN_URL
The address you reach Heddohon on, needed behind a reverse proxy for the CSRF origin check. For example https://music.example.com
- Target
- ORIGIN
Megabytes of cover art kept under the appdata path. The least recently used files are dropped once it is passed. 0 switches the cache off.
- Target
- HEDDOHON_COVER_CACHE_MB
- Default
- 512
- Value
- 512
How long a sign-in lasts. Capped at 72 whatever is set here, and never extended by activity.
- Target
- HEDDOHON_SESSION_HOURS
- Default
- 72
- Value
- 72
Shown on the sign-in screen and in the sidebar.
- Target
- HEDDOHON_APP_NAME
- Default
- Heddohon
- Value
- Heddohon
error, warn, info or debug. The default writes nothing while the server is working. debug times every call to the music server, for working out why a page is slow.
- Target
- HEDDOHON_LOG_LEVEL
- Default
- error
- Value
- error
auto marks the session cookie Secure. In this image that is always, whatever the scheme. Set false if you reach this over plain http on the LAN, or sign-in will not stick.
- Target
- HEDDOHON_COOKIE_SECURE
- Default
- auto
- Value
- auto
Name shown for this server on the sign-in screen.
- Target
- HEDDOHON_SUBSONIC_LABEL
- Default
- Navidrome
- Value
- Navidrome
Name shown for this server on the sign-in screen.
- Target
- HEDDOHON_JELLYFIN_LABEL
- Default
- Jellyfin
- Value
- Jellyfin
An optional line of text on the sign-in screen, for telling users which account to use.
- Target
- HEDDOHON_LOGIN_HINT
Milliseconds to wait on the music server before giving up.
- Target
- HEDDOHON_UPSTREAM_TIMEOUT_MS
- Default
- 20000
- Value
- 20000

