DusicBox is a self-hosted Discord music bot for small private deployments. It uses TypeScript, Discord.js, Lavalink, PostgreSQL, and Redis. One capable host can support up to 25 Discord servers and 10 active players.
Features include YouTube search, private result menus, queues, playback controls, playlists, favorites, settings, playback history, English and Vietnamese translations, health checks, and Prometheus metrics.
- A 64-bit Linux host with at least 4 GB of memory
- Docker Engine 29 or later with Docker Compose
- A Discord application and bot token
- A Discord server where you have Manage Server permission
YouTube is the only end-user music provider. Playback is experimental and may stop working without notice, especially from cloud provider addresses. DusicBox does not use cookies, account tokens, proof tokens, proxies, CAPTCHA services, or IP rotation. See provider behavior for details.
Follow the full installation guide before using production credentials.
git clone https://github.com/logm1lo/dusicbox.git
cd dusicbox
cp .env.example .env
chmod 600 .envSet the Discord values and independent secrets in .env, then run:
docker compose config --quiet
docker compose build --pull
docker compose up -d postgres redis
docker compose --profile migration run --rm migrate
docker compose up -d lavalink bot
docker compose run --rm --no-deps --entrypoint node bot \
apps/bot/dist/deploy-commands.js guild
docker compose psIn Discord, run /diagnose, /search, and /play. The setup passes only when you can hear the
selected track.
- Installation
- Raspberry Pi Lavalink node
- Operations and backups
- Security
- Provider behavior
- Architecture
- Known risks
- Dependency decisions
- DAVE acceptance checklist
- Oracle IPv6 experiment
Use Node.js 24.19.0 and pnpm 11.22.0.
pnpm install --frozen-lockfile
pnpm format:check
pnpm lint
pnpm typecheck
pnpm test
pnpm build
pnpm test:integration
pnpm db:checkMIT. See LICENSE.