Skip to content
Skila edited this page Aug 21, 2026 · 9 revisions

Extras

Optional pieces are Docker Compose profiles. The installer asks about the Discord bot and Cloudflare Tunnel. Redis and Meilisearch are in the repo compose file only; add them yourself on a one-click host if you need them.

Work from /opt/sounddock after install.

Discord bot

The bot plays from your SoundDock library. It does not play YouTube or Spotify.

During install: answer y when asked to enable the worker. You can paste a bot token then, or set it later.

After install:

  1. Set SOUNDDOCK_DISCORD_BOT_TOKEN in /opt/sounddock/.env, or paste the token in Admin → Integrations → Discord.

  2. Start it:

    cd /opt/sounddock
    docker compose --profile discord up -d
  3. In the web UI, use Invite SoundDock Bot. Do not invent OAuth URLs by hand.

  4. In Discord, run /link and finish the challenge in the web UI. Never type SoundDock credentials into Discord.

Cloudflare Tunnel

Use this to publish SoundDock without opening a port on the host.

  1. Create a tunnel in Cloudflare Zero Trust and copy the token.

  2. During install, paste the token when asked, or later add to .env:

    CLOUDFLARE_TUNNEL_TOKEN=...
    SOUNDDOCK_PUBLIC_URL=https://your-hostname
    SOUNDDOCK_COOKIE_SECURE=true
    
  3. Start it:

    cd /opt/sounddock
    docker compose --profile cloudflare up -d
  4. Point the tunnel at port 8080. Update the Discord OAuth redirect to https://your-hostname/api/v1/auth/discord/callback.

Music folder on the host

Default: /opt/sounddock/libraries, mounted read-only at /libraries.

Put files in that folder, then add a library in the UI that points at /libraries (or a subfolder). To change the host path, set SOUNDDOCK_LIBRARY_HOST when running Compose, or edit the volume in docker-compose.yml.

Redis

Only in the repo docker-compose.yml:

# .env
SOUNDDOCK_REDIS_URL=redis://redis:6379/0

docker compose --profile redis up -d

Meilisearch

Only in the repo docker-compose.yml:

# .env
SOUNDDOCK_MEILISEARCH_URL=http://meilisearch:7700
SOUNDDOCK_MEILISEARCH_KEY=a-long-random-key

docker compose --profile search up -d

Metrics

SOUNDDOCK_METRICS_ENABLED=true
SOUNDDOCK_METRICS_TOKEN=...

Scrape /metrics. Send Authorization: Bearer <token> when a token is set.

Discord bot and tunnel together

cd /opt/sounddock
docker compose --profile discord --profile cloudflare up -d

Clone this wiki locally