Heddohon

A web music player for your Navidrome, Subsonic or Jellyfin server

  • ghcr.io/zorcerer/heddohon:0.8.0
  • v0.8.0
  • Updated 29 Oct 2026
  • port 6135
  • amd64 · arm64
  • Media
  • 7 stars

Screenshots

Heddohon screenshot 1: AlbumHeddohon screenshot 2: Listening historyHeddohon screenshot 3: LyricsHeddohon screenshot 4: RecommendationsHeddohon screenshot 5: Sharing

Open the app

Web Player

http://localhost:6135/

About Heddohon

Heddohon is a web music player you host yourself, in front of the Navidrome, Subsonic or Jellyfin server you already run. The browser only talks to Heddohon, so your music server can stay private.

Features

  • Listen together: send a link and everyone hears what you play, as you play it
  • Share a song, an album or a playlist with anyone, no account needed
  • Your play history kept on your server: top artists, listening hours, "on this day" and daily mixes
  • Original files up to FLAC 24/192, or transcoded to MP3, Opus or AAC
  • Crossfade, ReplayGain, sleep timer, equaliser with AutoEq, synced lyrics, internet radio, Chromecast and AirPlay
  • Four themes coloured by the artwork, and a keyboard command line (Ctrl+K)
  • Two-step sign-in, passkeys and single sign-on (OIDC)

How to use

  1. Open Heddohon from your dashboard.
  2. Type the setup code from the app log.
  3. Type your music server's address, like http://[ZIMAOS-IP-ADDRESS]:4533 for Navidrome.
  4. Sign in with your account on the music server and press play.

Before you install

You need a Navidrome, Subsonic or Jellyfin server with your music; Heddohon has no music of its own. Nothing has to be set before installing. After the start (a few seconds), find the setup code in the app log, open http://[ZIMAOS-IP-ADDRESS]:6135, type the code and your music server's address. The setup page makes the secret key and keeps it in the data folder. Every other setting is optional and listed in the Variables tab. To use one, add it in the app settings with your value; a setting you leave out keeps its default.

The settings in the first table are already in the app settings. To use any other one, open the app settings, add the variable with your value, save, and the app restarts with it. A setting you leave out uses its default.

In the app settings

VariableDefault valueDescription
TZ$TZYour time zone. It is filled in from your ZimaOS time zone. Leave it unless you need another.
PUID$PUIDThe user that owns the data folder. It is filled in by ZimaOS. Leave it.
PGID$PGIDThe group that owns the data folder. It is filled in by ZimaOS. Leave it.

Server

VariableDefault valueDescription
HEDDOHON_SECRET—The secret that seals stored credentials and sessions, at least 32 characters. Leave it out: the setup page makes one and keeps it in setup.json. Changing it signs everyone out.
ORIGIN—The address people open, like https://music.example.com. Leave it out: the setup page saves it from your browser, and you can change it under Settings, Storage.
HEDDOHON_COOKIE_SECUREautoauto, true or false. Set to false if sign-in doesn't stick on a plain http:// address.
HEDDOHON_SESSION_HOURS720How many hours people stay signed in.
ADDRESS_HEADER—Behind a reverse proxy: the header with the visitor's address, like X-Real-IP. Set it only when every request comes through the proxy.

Music servers

VariableDefault valueDescription
HEDDOHON_SUBSONIC_URL—Your Navidrome or Subsonic address, like http://192.168.1.20:4533. Leave it out to type it in the setup page instead.
HEDDOHON_SUBSONIC_LABELNavidromeThe name shown for that server.
HEDDOHON_JELLYFIN_URL—Your Jellyfin address, like http://192.168.1.20:8096.
HEDDOHON_JELLYFIN_LABELJellyfinThe name shown for that server.

Storage

VariableDefault valueDescription
HEDDOHON_COVER_CACHE_MB2048Most space the album cover cache may use, in MB.
HEDDOHON_UPSTREAM_TIMEOUT_MS20000How long to wait for the music server, in milliseconds.
HEDDOHON_DATABASE_URL—A PostgreSQL server instead of the built-in SQLite, like postgres://192.168.1.20:5432/heddohon. Use it with HEDDOHON_DATABASE_USER and HEDDOHON_DATABASE_PASSWORD.
HEDDOHON_DATABASE_USER—The PostgreSQL user.
HEDDOHON_DATABASE_PASSWORD—The PostgreSQL password.

Features

VariableDefault valueDescription
HEDDOHON_SHARINGtrueSet to false to turn off share links.
HEDDOHON_DOWNLOADStrueSet to false to turn off downloads.
HEDDOHON_FOLDERStrueSet to false to hide the folder view.
HEDDOHON_DEFAULT_THEMEterminalThe theme a new account starts in: terminal, liquid, paper or phosphor.
HEDDOHON_RADIOtrueSet to false to turn off internet radio.
HEDDOHON_REMOTE_CONTROLtrueSet to false so one browser can't control another.
HEDDOHON_LISTENERStrueSet to false so accounts can't see what each other is playing.
HEDDOHON_PROFILEStrueSet to false to turn off profile pages.
HEDDOHON_MCP—Set to true to let accounts connect an AI assistant (MCP) to their library, or false to block it. Leave it out to decide under Settings, AI.

Sign-in

VariableDefault valueDescription
HEDDOHON_REQUIRE_TWO_FACTOR—Set to true so every account must use an authenticator app or a passkey. Leave it out to let each account decide.
HEDDOHON_OIDC_ISSUER—Your OpenID Connect provider, like https://auth.example.com. Register Heddohon there with the redirect address <your address>/login/oidc/callback.
HEDDOHON_OIDC_CLIENT_ID—The client ID from your provider.
HEDDOHON_OIDC_CLIENT_SECRET—The client secret from your provider. Leave it out for a public client.
HEDDOHON_OIDC_LABELsingle sign-onThe name on the "Sign in with" button.
HEDDOHON_LOGIN_HINT—A line shown on the sign-in page, like "Use your Navidrome login."
HEDDOHON_APP_NAMEHeddohonThe name shown on the sign-in page.

Online services

VariableDefault valueDescription
HEDDOHON_LYRICS_LRCLIB—Set to true to fetch lyrics from lrclib.net.
HEDDOHON_AUTOEQ—Set to true to fetch AutoEq headphone corrections.
HEDDOHON_NEW_RELEASES—Set to true to look up new releases on MusicBrainz.
HEDDOHON_DISCORD—Set to true to allow Discord sharing.
HEDDOHON_LISTENBRAINZ—Set to true to allow scrobbling to ListenBrainz.
HEDDOHON_NAVIDROME_PLUGIN_TOKEN—Turns on the Heddohon plugin for Navidrome. At least 32 characters, not the same as HEDDOHON_SECRET. The plugin takes the same value.

Logs

VariableDefault valueDescription
HEDDOHON_LOG_LEVELerrorerror, warn, info or debug.
HEDDOHON_LOG_FORMAT—Set to json for machine-readable logs.
docker-compose.yml
name: heddohon

services:
  heddohon:
    image: ghcr.io/zorcerer/heddohon:0.8.0
    container_name: heddohon
    restart: unless-stopped
    stop_grace_period: 20s
    network_mode: bridge
    environment:
      - TZ=$TZ
      - PUID=$PUID
      - PGID=$PGID
    ports:
      - target: 3000
        published: "6135"
        protocol: tcp
    volumes:
      - type: bind
        source: /DATA/AppData/$AppID/data
        target: /data
        bind:
          create_host_path: true
    healthcheck:
      test: ["CMD", "curl", "-fsS", "http://127.0.0.1:3000/healthz"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 20s
    deploy:
      resources:
        limits:
          cpus: "1.00"
          memory: 768M
        reservations:
          cpus: "0.00"
          memory: 128M
    labels:
      icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/heddohon/icon.png
    x-casaos:
      id: com.icestore.heddohon
      envs:
        - container: TZ
          description:
            en_US: >-
              Your time zone. It is filled in from your ZimaOS time zone.
              Leave it unless you need another.
        - container: PUID
          description:
            en_US: >-
              The user that owns the data folder. It is filled in by ZimaOS.
              Leave it.
        - container: PGID
          description:
            en_US: >-
              The group that owns the data folder. It is filled in by ZimaOS.
              Leave it.
      ports:
        - container: "3000"
          description:
            en_US: Heddohon web player, published on host as 6135
      volumes:
        - container: /data
          description:
            en_US: >-
              The SQLite database, setup.json (with the secret the setup page
              makes), play history, sessions and the cover cache. Back this
              folder up.

x-casaos:
  id: com.icestore.heddohon
  architectures:
    - amd64
    - arm64
  main: heddohon
  author: HSinghHira
  category: Media
  developer: zorcerer
  icon: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/heddohon/icon.png
  thumbnail: https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/heddohon/screenshot-1.jpg
  screenshot_link:
    - https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/heddohon/screenshot-1.jpg
    - https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/heddohon/screenshot-2.jpg
    - https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/heddohon/screenshot-3.jpg
    - https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/heddohon/screenshot-4.jpg
    - https://cdn.jsdelivr.net/gh/HSinghHira/IceStore@main/Apps/heddohon/screenshot-5.jpg
  title:
    en_US: Heddohon
  tagline:
    en_US: A web music player for your Navidrome, Subsonic or Jellyfin server
  description:
    en_US: >-
      Heddohon is a web music player you host yourself, in front of the
      Navidrome, Subsonic or Jellyfin server you already run. The browser only
      talks to Heddohon, so your music server can stay private.


      **Features**


      - Listen together: send a link and everyone hears what you play, as you
        play it

      - Share a song, an album or a playlist with anyone, no account needed

      - Your play history kept on your server: top artists, listening hours,
        "on this day" and daily mixes

      - Original files up to FLAC 24/192, or transcoded to MP3, Opus or AAC

      - Crossfade, ReplayGain, sleep timer, equaliser with AutoEq, synced
        lyrics, internet radio, Chromecast and AirPlay

      - Four themes coloured by the artwork, and a keyboard command line
        (Ctrl+K)

      - Two-step sign-in, passkeys and single sign-on (OIDC)


      **How to use?**


      1. Open Heddohon from the Zima OS dashboard.

      2. Type the setup code from the app log.

      3. Type your music server's address, like http://[ZIMAOS-IP-ADDRESS]:4533
         for Navidrome.

      4. Sign in with your account on the music server and press play.
  tips:
    before_install:
      en_US: >-
        1. You need a Navidrome, Subsonic or Jellyfin server with your music.
           Heddohon plays music from it.


        2. Start the installation. It is ready in a few seconds.


        3. Open the app log. Find the setup code.


        4. Open http://[ZIMAOS-IP-ADDRESS]:6135 and type the setup code.


        5. Type your music server's address, like
           http://192.168.1.20:4533 for Navidrome or http://192.168.1.20:8096
           for Jellyfin. Keep the other choices as they are.


        6. Sign in with your music server account.


        7. More settings, like single sign-on, lyrics and log level, are
           listed on the Heddohon page at
           https://icestore.hsinghhira.me/app/heddohon/ (Variables tab). You
           can add them now or later in the app settings.
  index: /
  port_map: "6135"
  scheme: http
  is_uncontrolled: false
  version: "0.8.0"
  update_at: "2026-10-29"
  release_notes:
    en_US: |-
      - First version in IceStore, on port 6135
      - ghcr.io/zorcerer/heddohon 0.8.0, as upstream ships it
      - SQLite in the data folder; the setup page makes the secret on first start
  repo: "https://github.com/zorcerer/heddohon"
  support: "https://github.com/zorcerer/heddohon/issues"
  docs: "https://github.com/zorcerer/heddohon/wiki/Configuration"

Install Heddohon

Something not working with Heddohon? Report a problem or request another app.

More Media apps

See all