Skip to content

Installation

Skila edited this page Aug 21, 2026 · 11 revisions

Installation

One command. A whiptail TUI (same idea as Proxmox helper scripts) collects options, installs Docker if needed, writes /opt/sounddock, pulls the published image, and starts SoundDock. You do not need to clone the repo. Do not apt install docker (Debian's docker package is not Docker Engine).

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

sudo bash -c "$(curl -fsSL https://raw.githubusercontent.com/Skila1/SoundDock/main/install.sh)"

Use Tab and Enter. Use Spacebar on checklists. Cancel aborts. The wizard asks for public URL, library folder, Discord sign-in, optional bot token, and optional Cloudflare Tunnel.

sudo sounddock status
sudo sounddock update
sudo sounddock logs
sudo sounddock doctor
sudo sounddock uninstall          # keeps /opt/sounddock/data
sudo sounddock uninstall --purge

Unattended (defaults / env, no TUI):

sudo env SD_UNATTENDED=1 SD_PUBLIC_URL=https://music.example.com bash -c "$(curl -fsSL https://raw.githubusercontent.com/Skila1/SoundDock/main/install.sh)"

Discord OAuth redirect: {PUBLIC_URL}/api/v1/auth/discord/callback. Scopes: identify, plus guilds / guilds.members.read if you later whitelist a server or role.

Discord application (only if you want Discord sign-in)

  1. Create an app at the Discord Developer Portal.
  2. Under OAuth2 → Redirects, add {PUBLIC_URL}/api/v1/auth/discord/callback.
  3. Copy the client ID and secret. Optionally copy your Discord user ID for SD_ADMIN_DISCORD_ID.
  4. Enable Discord in the installer TUI, or later in Admin → Discord.

Who may register with Discord

In Admin → Discord, two independent toggles:

  • Require Discord server (server ID)
  • Require Discord role (role ID in that server)

New Discord accounts must pass the enabled checks. Existing accounts and IDs in SD_ADMIN_DISCORD_ID can always sign in. Invite the bot to the server if you require a role.

Compose without the installer

Copy docker-compose.yml and .env.example to .env. Set SD_IMAGE=ghcr.io/skila1/sounddock:latest. For local admin only, SD_DISCORD_ENABLED=false.

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
docker compose up -d --build

Clone this wiki locally