Configuration — Database
Buggregator uses SQLite as its database. SQLite is embedded directly into the binary — no external database server is needed.
Storage Modes
In-Memory (Default)
By default, Buggregator stores everything in memory. This is the fastest option but all data is lost when the server restarts.
database:
dsn: ":memory:"This is the default — no configuration needed.
File-Based
To persist data across restarts, specify a file path:
database:
dsn: data.dbOr via environment variable:
DATABASE_DSN=data.dbA relative path like data.db is resolved from the directory you start Buggregator in. Use an absolute path to be sure. In Docker, make sure to mount a volume:
docker run --pull always \
-p 127.0.0.1:8000:8000 \
-e DATABASE_DSN=/data/buggregator.db \
-v buggregator-data:/data \
ghcr.io/buggregator/server:latestDocker Compose Example
services:
buggregator:
image: ghcr.io/buggregator/server:latest
ports:
- 127.0.0.1:8000:8000
- 127.0.0.1:1025:1025
- 127.0.0.1:9912:9912
- 127.0.0.1:9913:9913
environment:
DATABASE_DSN: /data/buggregator.db
STORAGE_MODE: filesystem
STORAGE_PATH: /data/storage
volumes:
- buggregator-data:/data
volumes:
buggregator-data:Connection Pool
Since v2.6.0, a file database opens up to 4 SQLite connections. Reading the event list then no longer waits behind incoming events, and incoming events no longer wait behind a long list.
database:
dsn: /data/buggregator.db
max_open_conns: 4 # defaultOr DATABASE_MAX_OPEN_CONNS=4.
- Set it to
1for the behaviour before v2.6.0: one connection for everything. - An in-memory database (
:memory:) always uses one connection, whatever you set. - With more than one connection, Buggregator adds
_pragma=busy_timeout(10000)and_txlock=immediateto the DSN when they are missing, so two writes wait for each other instead of failing. - The pool pays off in SQLite's WAL mode, where reads and the write do not block each other. Buggregator does not turn WAL on for a file database; add it to the DSN yourself:
DATABASE_DSN='file:/data/buggregator.db?_pragma=journal_mode(WAL)'Attachment Storage
SMTP attachments and HTTP dump files are stored separately from the database. Two modes are available:
| Mode | Environment Variable | Description |
|---|---|---|
memory (default) | STORAGE_MODE=memory | Stored in RAM. Fast but lost on restart. |
filesystem | STORAGE_MODE=filesystem | Stored on disk in the directory specified by STORAGE_PATH. |
storage:
mode: filesystem
path: ./storageTip: If you use
DATABASE_DSN=:memory:butSTORAGE_MODE=filesystem, the event metadata will be lost on restart but the attachment files will remain on disk (orphaned). For consistency, either persist both or keep both in memory.
Migrations
Buggregator automatically creates and migrates database tables on startup. No manual migration steps are required.