rawon.jpg

rawon

Getting Started

Get Rawon up and running in minutes with our step-by-step guide.

✨ 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)

  1. Download and install the prerequisites above

  2. Clone or download this repository

  3. Copy .env.example to .env and fill in the required values (at minimum: DISCORD_TOKEN)

  4. Install dependencies: pnpm install

  5. Build the project: pnpm run build

  6. 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

  1. Create a .env file with your configuration (copy from .env.example)

  2. (Optional) Create dev.env from dev.env.example for additional settings

  3. Create a docker-compose.yaml file (see example below)

  4. Start the bot: docker compose up -d

  5. 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:

  1. Run !login start in Discord

  2. Open the DevTools URL the bot sends you and complete Google login in the remote browser

  3. 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.