Installation

Self-host Rawon with Node.js or Docker.

On this page

Prerequisites

Note

Docker users don’t need to install FFmpeg. The Docker image includes it.

Using Docker Compose

  1. Create a .env file with your configuration (copy from .env.example).
  2. Create dev.env from dev.env.example, or remove the dev.env line from env_file.
  3. Create a docker-compose.yaml file:
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:
  1. Start the bot:
docker compose up -d
  1. View logs:
docker logs -f rawon-bot

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:

  • the yt-dlp binary for audio streaming
  • data.* for persistent settings (request channels, player states)
  • cached audio files (if audio caching is enabled)
  • the 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. It is required for !login start to work from a remote machine. Set it in dev.env to use a different port.

Standard setup (Node.js)

  1. Download and install the prerequisites above.
  2. Clone or download the repository.
  3. Copy .env.example to .env and fill in the required values. DISCORD_TOKEN is required to start.
  4. Install dependencies:
pnpm install
  1. Build the project:
pnpm run build
  1. Start the bot:
pnpm start

After the bot is online

Optionally set up a dedicated music channel:

!requestchannel set #music-requests

Tip

See Configuration for every environment variable, and Commands for everything the bot can do.

Type to search the documentation.