-
Notifications
You must be signed in to change notification settings - Fork 0
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
-
Create an app at the Discord Developer Portal.
-
Under OAuth2 → Redirects, add:
{PUBLIC_URL}/api/v1/auth/discord/callbackExamples:
http://127.0.0.1:8080/api/v1/auth/discord/callbackorhttps://music.example.com/api/v1/auth/discord/callback -
Scope:
identify. If you later whitelist a server or role in Admin, users will also grantguildsandguilds.members.read. -
Copy the Client ID and Client Secret.
-
Optionally copy your Discord user ID (Developer Mode, right-click your avatar, Copy User ID) for
SD_ADMIN_DISCORD_ID.
export SD_IMAGE=ghcr.io/skila1/sounddock:latest
curl -fsSL https://raw.githubusercontent.com/Skila1/SoundDock/main/install.sh | sudo bashYou will be asked for:
| Prompt | What to enter |
|---|---|
| Public URL | The URL you will open in a browser |
| Host library folder | Folder on the machine mounted at /libraries (default /opt/sounddock/libraries) |
| Enable Discord sign-in |
Y (default) or n to skip Discord entirely, including Discord admin |
| Discord client ID / secret | Required only if Discord is on |
| Admin Discord user ID | Optional snowflake(s). Applied as Administrator on every start |
| Native Discord bot worker | Asked only if Discord is on. y to enable it (see Extras) |
| Cloudflare Tunnel token | Paste a token, or leave blank |
Master key and database password are generated for you. SD_DISCORD_ENABLED is written true or false.
- Discord on: Continue with Discord. You can also use a username and password if an administrator created one.
- Discord off: create the first administrator in the web UI, then sign in with that account.
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.
Keep install.sh (or download it again). Default install prefix is /opt/sounddock (SD_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 volumesCopy docker-compose.yml and .env.example to .env. Set SD_IMAGE=ghcr.io/skila1/sounddock:latest. For Discord, set SD_DISCORD_ENABLED=true and the client values. For local admin only, set SD_DISCORD_ENABLED=false.
docker compose pull
docker compose up -dPostgreSQL 16 is required. FFmpeg is optional (transcode and Discord audio).
cp .env.example .env
# set POSTGRES_PASSWORD, SD_MASTER_KEY
# optional: SD_DISCORD_ENABLED, SD_DISCORD_CLIENT_ID, SD_DISCORD_CLIENT_SECRET, SD_ADMIN_DISCORD_ID
docker compose up -d --buildOr: build the web app (cd web && npm install && npm run build), then go run ./cmd/sounddock all.