Skip to content

Installation

Skila edited this page Aug 21, 2026 · 11 revisions

Installation

The one-click installer installs Docker if needed, writes /opt/sounddock, pulls the published image, and starts SoundDock. You do not need to clone the repo.

Published image: ghcr.io/skila1/sounddock:latest

Discord application (before you install)

  1. Create an app at the Discord Developer Portal.

  2. Under OAuth2 → Redirects, add:

    {PUBLIC_URL}/api/v1/auth/discord/callback

    Examples: http://127.0.0.1:8080/api/v1/auth/discord/callback or https://music.example.com/api/v1/auth/discord/callback

  3. Scope: identify only.

  4. Copy the Client ID and Client Secret.

  5. Copy your Discord user ID (Developer Mode, right-click your avatar, Copy User ID). That account is administrator (SOUNDDOCK_ADMIN_DISCORD_ID).

One-click

export SOUNDDOCK_IMAGE=ghcr.io/skila1/sounddock:latest
curl -fsSL https://raw.githubusercontent.com/Skila1/SoundDock/main/install.sh | sudo bash

You will be asked for:

Prompt What to enter
Public URL The URL you will open in a browser
Discord client ID From the Discord application
Discord client secret From the Discord application
Admin Discord user ID Your user ID (comma-separated for several admins)
Host library folder Folder on the machine mounted at /libraries (default /opt/sounddock/libraries)
Native Discord bot worker y to enable it now (see Extras)
Cloudflare Tunnel token Paste a token, or leave blank

Master key and database password are generated for you.

First sign-in

Open the public URL and Continue with Discord. There is no admin password.

Commands

Keep install.sh (or download it again). Default install prefix is /opt/sounddock (SOUNDDOCK_PREFIX to change).

sudo bash install.sh status
sudo bash install.sh logs
sudo bash install.sh update
sudo bash install.sh doctor
sudo bash install.sh uninstall          # keeps /opt/sounddock/data
sudo bash install.sh uninstall --purge  # deletes data and volumes

Compose without the installer

Copy docker-compose.yml and .env.example to .env. Set Discord values and SOUNDDOCK_IMAGE=ghcr.io/skila1/sounddock:latest, then:

docker compose pull
docker compose up -d

Run from source

PostgreSQL 16 is required. FFmpeg is optional (transcode and Discord audio).

cp .env.example .env
# set POSTGRES_PASSWORD, SOUNDDOCK_MASTER_KEY, Discord client ID/secret, SOUNDDOCK_ADMIN_DISCORD_ID
docker compose up -d --build

Or: build the web app (cd web && npm install && npm run build), then go run ./cmd/sounddock all.

Clone this wiki locally