Skip to content

Installation

Skila edited this page Aug 21, 2026 · 11 revisions

Installation

Recommended path: the one-click installer. It installs Docker if needed, writes /opt/sounddock, pulls the published image, and starts Compose. No git clone.

Discord app (do this first)

  1. Create an application at Discord Developer Portal.

  2. 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 Client ID and Client Secret.

  5. Copy your Discord user snowflake (Developer Mode → right-click your avatar → Copy User ID). That account is administrator on every container start (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

The installer asks for:

Prompt What to enter
Public URL How you will open SoundDock (http://127.0.0.1:8080 or your HTTPS URL)
Discord client ID From the Discord application
Discord client secret From the Discord application
Admin Discord user ID Your snowflake (comma-separated if several admins)
Host library folder Folder on the host mounted read-only at /libraries (default /opt/sounddock/libraries)
Native Discord bot worker y to enable the discord Compose profile (see Extras)
Cloudflare Tunnel token Paste a tunnel token to enable cloudflare, or leave blank

Secrets (SOUNDDOCK_MASTER_KEY, Postgres password) are generated for you. Existing /opt/sounddock/.env is kept; Discord fields are updated.

After install

Open the public URL and Continue with Discord. There is no first-run password.

sudo bash /opt/sounddock/../install.sh

Keep a copy of install.sh (or re-download it). Control commands:

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

Default prefix: /opt/sounddock (SOUNDDOCK_PREFIX to change).

Manual (no installer)

Copy docker-compose.yml and .env.example.env from the repo. Set Discord IDs/secrets, SOUNDDOCK_IMAGE=ghcr.io/skila1/sounddock:latest, then:

docker compose pull
docker compose up -d

Development (this repo)

PostgreSQL 16 is required. FFmpeg is optional (transcode + Discord PCM).

cp .env.example .env
docker compose up -d --build

Clone this wiki locally