✨ Features
🚀 Production-ready, no coding required
📺 Request channel feature for seamless music experience
🎶 Support for YouTube, Spotify, SoundCloud, and direct files
🤖 Run multiple bot instances for different voice channels
⚡ Smart audio pre-caching for smoother playback
🍪 Built-in Google login via Puppeteer for cookie management
📋 Requirements
Node.js version 20.0.0 or higher
Discord Bot Token (get from Discord Developer Portal)
Optional: FFmpeg for audio processing on standard (non-Docker) installs — Docker images include FFmpeg
💻 Standard Setup (Node.js)
Download and install the prerequisites above
Clone or download this repository
Copy .env.example to .env and fill in the required values (at minimum: DISCORD_TOKEN)
Install dependencies: pnpm install
Build the project: pnpm run build
Start the bot: pnpm start
(Optional) After the bot is online, set up a dedicated music channel:
<prefix>requestchannel <#channel>
# Example: !requestchannel #music-requests🐳 Docker Setup (Recommended)
Using Docker Compose
Create a .env file with your configuration (copy from .env.example)
(Optional) Create dev.env from dev.env.example for additional settings
Create a docker-compose.yaml file (see example below)
Start the bot: docker compose up -d
View logs: docker logs -f rawon-bot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
services:
rawon:
image: ghcr.io/stegripe/rawon:latest
container_name: rawon-bot
restart: unless-stopped
env_file:
- .env
- dev.env
ports:
- "${DEVTOOLS_PORT:-3000}:${DEVTOOLS_PORT:-3000}"
volumes:
- rawon:/app/cache
volumes:
rawon:Using Docker Run
docker run -d \
--name rawon-bot \
--env-file .env \
-p "${DEVTOOLS_PORT:-3000}:${DEVTOOLS_PORT:-3000}" \
-v rawon:/app/cache \
--restart unless-stopped \
ghcr.io/stegripe/rawon:latest📁 Volume Information
The /app/cache volume stores:
yt-dlp binary for audio streaming
data.* for persistent settings (request channels, player states)
Cached audio files (if audio caching is enabled)
Cookie file and profile data from Google login (see Cookies Setup)
🔌 Port information
DEVTOOLS_PORT (default: 3000) is used for the Chrome DevTools remote debugging proxy. This is required for !login start when you connect from another machine. Set DEVTOOLS_PORT in dev.env to use a different port, and map it in Docker Compose or docker run.
🍪 Cookies: quick fix on hosting
On cloud hosts (AWS, GCP, Azure, Railway, etc.) you may see "Sign in to confirm you're not a bot". Use the built-in login flow:
Run !login start in Discord
Open the DevTools URL the bot sends you and complete Google login in the remote browser
Use !login status to check cookies, or !login logout then !login start to refresh
💡 Use a throwaway Google account, not your main account. See the full Cookies Setup guide for details.