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 -dThat 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, thendocker compose up -d --build. Migrations only ever add before they remove, so upgrading is safe. - Health. The bot serves
GET /healthon port8080(per subsystem: database, shard leases, gateway), plusGET /diagnosticsfor 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_IDto 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.