Files
FernandoJVideiraandClaude Sonnet 5.5 02b7db1813 Docs: say plainly that only the bot is open source; the dashboard and API are proprietary
- README, license section and architecture no longer point to the dashboard repositories
- schema.sql is the schema for contributors; database changes only need schema.sql and a note in the PR
- self-hosting: settings without a dashboard (SQL for security thresholds, beta settings, opted-in servers)
- beta features, deployment and troubleshooting reworded for people who don't have the dashboard

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
2026-10-23 01:54:08 +01:00

2.2 KiB

Deployment

Docker

The Dockerfile is a two-stage build: it compiles a static binary with Go, then copies it into a small Alpine image (with CA certificates and timezone data, which /timezone and scheduling need).

docker build -t velox-bot .
docker run --env-file .env velox-bot

The container reads its configuration from environment variables, exactly like a local run. See Getting started.

Docker Compose

docker-compose.yml defines two services:

  • db: PostgreSQL 16 with a named volume (velox_pgdata) and a health check.
  • bot: the bot, built from this directory, started after the database is healthy. It takes .env through env_file, and defaults DB_HOST to the db service and LAVALINK_HOST to ws://lavalink:2333 if you have not set them.
docker compose up -d        # database and bot
docker compose logs -f bot

Compose does not include Lavalink. Run it separately (or add a service) if you want music.

Change the default database password (velox_pwd) before exposing PostgreSQL to anything other than your own machine, and remove the published 5432 port if only the bot needs it.

Database changes

The bot does not run migrations. When a release adds tables, load schema.sql again before restarting the bot (it only creates what is missing, and is safe to repeat). A release that changes an existing table says so in its notes.

Updating

git pull
docker compose build bot
docker compose up -d bot

Slash commands are re-registered on every start, so new and changed commands appear after a restart. Commands you removed from the code are not deleted from Discord automatically, except for the beta server (see Beta features).

Backups

All state is in PostgreSQL. Back it up with pg_dump:

pg_dump "postgres://velox:velox_pwd@localhost:5432/velox" > velox-backup.sql

Raid mode, quarantines, lockdowns and ticket state live in the database, so the bot picks them up again after a restart.

Shutting down

Send SIGINT or SIGTERM (Docker does on docker stop). Slash commands stay registered in Discord while the bot is down, and are registered again (updated in place) on the next start.