No description
Find a file
2025-08-08 14:41:05 +02:00
.github/workflows ci: publish to flex420/discordsoundbot-vib 2025-08-07 23:40:09 +02:00
server feat(admin): einfacher Passwort-Login (ADMIN_PWD) per Cookie; Bulk-Delete & Rename Endpoints; Frontend: Loginfeld, Checkbox-Selektion, Toolbar mit Löschen/Umbenennen 2025-08-08 14:23:18 +02:00
web feat(ui): Uhrzeit (Europe/Berlin) oben links im Header, Format HH:MM 2025-08-08 14:41:05 +02:00
.dockerignore clean: initial commit ohne Secrets 2025-08-07 23:24:56 +02:00
.env.example chore: allow and add .env.example 2025-08-07 23:35:29 +02:00
.gitignore chore: allow and add .env.example 2025-08-07 23:35:29 +02:00
docker-compose.yml chore(compose): map external 8199 to internal 8080 2025-08-08 00:16:26 +02:00
Dockerfile clean: initial commit ohne Secrets 2025-08-07 23:24:56 +02:00
README.md clean: initial commit ohne Secrets 2025-08-07 23:24:56 +02:00

Discord Soundboard (Docker)

Eine Docker-fähige Web-App mit Discord-Bot. Nutzer wählen im Web-Frontend Sound-Dateien, wählen einen Discord-Sprachkanal per Dropdown und lassen den Bot dort den Sound abspielen. Neue Sounds können dem Bot per privater Discord-Nachricht als MP3 gesendet werden; der Bot speichert sie automatisch und sie erscheinen im Frontend.

Inspiration/Referenz: davefurrer/discordsoundboard auf Docker Hub (Link).

Features

  • Schönes Web-Frontend mit Suchfeld und Buttons für Sounds
  • Dropdown-Auswahl der verfügbaren Discord-Sprachkanäle (guild-übergreifend)
  • Discord-Bot joint den gewählten Voice-Channel und spielt MP3-Sounds
  • MP3-Uploads via DM an den Bot; automatische Ablage im Backend und sofort im Frontend sichtbar
  • Einfache Installation via Docker Compose

Architektur

  • Ein Container (Node.js):
    • Express REST-API und statische Auslieferung des Frontends
    • Discord-Bot (discord.js, @discordjs/voice, ffmpeg)
    • Gemeinsames Datenverzeichnis /data/sounds für MP3s

Anforderungen

  • Docker und Docker Compose
  • Discord Bot Token mit Intents: Guilds, GuildVoiceStates, DirectMessages, MessageContent

Schnellstart

  1. .env anlegen (siehe .env.example).

  2. Docker bauen und starten:

docker compose up --build -d
  1. Öffne http://localhost:8080 im Browser.

  2. Lade dem Bot per privater Nachricht eine .mp3 hoch. Der Sound erscheint automatisch im Frontend.

Umgebungsvariablen (.env)

DISCORD_TOKEN=dein_discord_bot_token
PORT=8080
SOUNDS_DIR=/data/sounds

Optional: Du kannst die Liste der Kanäle auf bestimmte Guilds beschränken:

ALLOWED_GUILD_IDS=GUILD_ID_1,GUILD_ID_2

Endpunkte (API)

  • GET /api/health Healthcheck
  • GET /api/sounds Liste der Sounds
  • GET /api/channels Liste der Voice-Channels (mit Guild-Infos)
  • POST /api/play Body: { soundName, guildId, channelId }

Entwicklung lokal (ohne Docker)

  1. Server:
cd server
npm install
npm run dev
  1. Web:
cd web
npm install
npm run dev

Das Web-Frontend erwartet die API standardmäßig unter http://localhost:8080/api. Passe sonst VITE_API_BASE_URL an.

Veröffentlichung auf Docker Hub

  1. Image bauen:
docker build -t <dein-dockerhub-user>/discord-soundboard:latest .
  1. Einloggen und pushen:
docker login
docker push <dein-dockerhub-user>/discord-soundboard:latest
  1. Installation irgendwo:
docker pull <dein-dockerhub-user>/discord-soundboard:latest
docker run --name discord-soundboard -p 8080:8080 --env-file .env -v $(pwd)/data/sounds:/data/sounds -d <dein-dockerhub-user>/discord-soundboard:latest

Hinweis: Dieses Projekt ist eigenständig implementiert, angelehnt an die Funktionsbeschreibung von davefurrer/discordsoundboard (Link).