Documentation menu

Self-hosting

What running your own copy of Aurora involves: requirements, configuration names, containers, intents and where the operator documentation lives.

Aurora is a Node.js application with a PostgreSQL database and an optional Redis cache. If you run your own copy, the operator documentation in the repository (DEPLOYMENT.md, DATABASE.md, SECURITY.md) is the source of truth. This page is a summary.

Requirements#

  • Node.js 24 LTS, or the provided Docker images

  • PostgreSQL 16 (Redis 7 is required only if you run more than one process)

  • A Discord application with a bot user, and for the dashboard an OAuth2 redirect URI

Configuration#

Configuration comes from environment variables. The required ones are the bot token, the application id, the database URL and the environment name. The dashboard additionally needs the OAuth client secret, its public base URL and a random session secret of at least 32 characters. Keep these out of version control and out of logs. Aurora refuses to start with a missing or invalid value and names the variable, never the value.

Containers#

Aurora ships as a Docker image plus a Compose file. The container applies pending database migrations and then starts the bot. The dashboard is a second image that shares the database. Both listen only on the local machine and expect a reverse proxy with TLS in front.

Privileged intents#

AutoMod message rules need the Message Content intent and anti-raid join tracking needs Server Members. Enable them in the Discord Developer Portal first, then switch them on in Aurora's configuration. If a flag is on while the intent is not enabled, Discord refuses the login.

Backups and updates#

Back up the PostgreSQL database regularly. After restoring a backup, clear the dashboard sessions table so old sessions cannot be reused. Update by pulling the new version, rebuilding the images and restarting; migrations run on start.