Docs, self-hosting

Yours to run, forever.

This is the exact code we host, under AGPL-3.0, with every feature included and nothing held back. Self-hosting is the default now, so there is no special mode to flip on. If you have Docker and a bot token, you are about ten minutes from a running server.

What you need

  • Docker and Docker Compose. The compose file runs the bot and Postgres together, so there is nothing else to install.
  • A Discord application and bot token. Free, and it takes a couple of minutes to set up in the next section.

Create your Discord app

Head to the Discord Developer Portal and create a new application. Under Bot, grab the token. That becomes your DISCORD_TOKEN. The application id on the General Information page is your CLIENT_ID.

While you are there, turn on the two privileged intents: Server Members and Presence. It is a one-time toggle. The Presence intent is what lets game-aware names (like @@game_name@@) see what your members are playing. Without it, those templates cannot do their thing.

Configure and launch

git clone https://github.com/GregZaal/avc
cd avc
cp .env.example .env
# edit .env: set DISCORD_TOKEN and CLIENT_ID
docker compose up -d

That is the whole setup. The default DATABASE_URL in .env.example already matches the Postgres that compose starts, so the only two values you fill in are your token and client id. On boot, database migrations run automatically and slash commands register themselves. No manual steps, no registration scripts.

Config is checked at startup, so if something is missing or malformed the process stops right away with a clear message instead of limping along.

Day two

  • Updates. Run git pull, then docker compose up -d --build. Migrations only ever add before they remove, so upgrading is safe.
  • Health. The bot serves GET /health on port 8080 (per subsystem: database, shard leases, gateway), plus GET /diagnostics for live state.
  • Backups. Everything lives in Postgres, so back up that volume and you have backed up the whole bot.
  • Testing tip. Set DEV_GUILD_ID to a test server id and slash commands appear there instantly. Global registration can take up to an hour. Leave it blank in production.

The fine print

Auto Voice Channels is licensed AGPL-3.0. In plain terms, you can run it, change it, and build on it. If you distribute it (including running a modified version as a service for others), you share your changes under the same license. That is the deal that keeps the project open for everyone.

The hosted service is here for convenience, the same code with zero ops, and it is what funds development of the open-source project. If running it yourself is not your idea of a good time, take a look at pricing. Every feature is free on every tier either way.