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

Extras

Optional pieces: Cloudflare Tunnel is a systemd service. The Discord bot is a Compose profile started later. Redis and Meilisearch are in the repo compose file only.

Work from the sounddock folder the installer created (from home: ~/sounddock).

Discord bot

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

After install:

  1. Paste the bot token in Admin → Discord.

  2. Add discord to COMPOSE_PROFILES in .env, then:

    cd ~/sounddock
    docker compose 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. Cloudflared runs as a systemd service on the host (not Docker), so http://localhost:8080 is the published SoundDock port.

  1. Create a tunnel in Cloudflare Zero Trust. Set the origin to http://localhost:8080. Copy the token.

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

    sudo cloudflared service install <token>
    sudo systemctl enable --now cloudflared
    sudo systemctl status cloudflared
  3. Discord OAuth redirect (after you enable Discord in Admin): https://your-hostname/api/v1/auth/discord/callback.

Music folder on the host

Default: libraries next to docker-compose.yml (for example ~/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 SD_LIBRARY_HOST in .env and run docker compose up -d from that directory.

Redis

Only in the repo docker-compose.yml:

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

docker compose --profile redis up -d

Meilisearch

Only in the repo docker-compose.yml:

# .env
SD_MEILISEARCH_URL=http://meilisearch:7700
SD_MEILISEARCH_KEY=a-long-random-key

docker compose --profile search up -d

Metrics

SD_METRICS_ENABLED=true
SD_METRICS_TOKEN=...

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

Discord bot and tunnel together

Tunnel is systemd (cloudflared). For the bot:

cd ~/sounddock
docker compose --profile discord up -d

Clone this wiki locally