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

FAQ

Why Discord only? Where is the admin password?

SoundDock has no password signup. Everyone signs in with Discord (identify). The admin is SOUNDDOCK_ADMIN_DISCORD_ID in .env, applied every time the container starts. Empty admin ID means nobody is administrator.

How do I find my Discord user ID?

Enable Developer Mode in Discord (User Settings → Advanced). Right-click your avatar → Copy User ID.

Sign-in fails / redirects loop

  • Redirect URL must match exactly: {SOUNDDOCK_PUBLIC_URL}/api/v1/auth/discord/callback (no trailing slash on the public URL).
  • SOUNDDOCK_PUBLIC_URL must be the URL you actually use in the browser (scheme + host + port).
  • Behind a reverse proxy, set SOUNDDOCK_TRUSTED_PROXIES to that proxy’s CIDR and SOUNDDOCK_COOKIE_SECURE=true if you serve HTTPS.

permission_denied: write_package on GitHub Actions

The Docker workflow builds, then fails pushing ghcr.io/skila1/sounddock. Recreating the GitHub repo does not delete the old GHCR package. In GitHub Packages open sounddock → Package settings → grant this repo Write, or delete the leftover package and re-run the workflow. Also set repo Settings → Actions → General → Workflow permissions to Read and write.

Which image should I pull?

CI on this GitHub repo publishes ghcr.io/skila1/sounddock:latest. The installer default ghcr.io/sounddock/sounddock:latest only exists if that org publishes it.

export SOUNDDOCK_IMAGE=ghcr.io/skila1/sounddock:latest

The GHCR package must be public (or you must docker login ghcr.io) for other machines to pull.

How do I update?

sudo bash install.sh update

That is docker compose pull && docker compose up -d in /opt/sounddock. Re-enable profiles (--profile discord, --profile cloudflare) if update does not pass them through — check docker compose ps after.

Where is my data?

/opt/sounddock/data (and the Postgres volume). uninstall without --purge keeps it.

Can I add more administrators?

Set SOUNDDOCK_ADMIN_DISCORD_ID to a comma-separated list of snowflakes and restart. Users not on that list are demoted if the list is non-empty.

Remote Import vs playlist URLs

Remote Import accepts direct HTTP(S) media URLs only (SSRF-safe). Playlist/page URLs from Spotify, YouTube, etc. belong under Connected Services / playlist import — SoundDock does not download provider audio or circumvent DRM.

Does the Discord bot play YouTube or Spotify?

No. It searches and streams your library.

Health checks

  • API: /healthz, /readyz
  • install.sh doctor checks Docker and local http://127.0.0.1:8080/healthz

Uninstall

sudo bash install.sh uninstall          # keep data
sudo bash install.sh uninstall --purge  # delete /opt/sounddock and volumes

Clone this wiki locally