Installation
Install Durabull for self-hosted use with a clear first-run checklist and validation steps.
This guide gives you a practical installation path for self-hosted Durabull.
If you are unsure which mode to pick first, start with Self Hosting Setup.
Option A: Quick Install with Docker (Recommended)
- Create a Docker network and start Redis:
docker network create durabull
docker run -d --name durabull-redis --network durabull redis:8-alpine
- Run Durabull with the published image:
docker run --rm -p 3000:3000 --network durabull \
-e DURABULL_AUTHLESS=true \
-e DURABULL_ENV_CONNECTIONS=true \
-e DURABULL_REDIS_URL_MAIN=redis://durabull-redis:6379 \
-e DURABULL_REDIS_URL_MAIN_ENVIRONMENT=development \
-e DURABULL_REDIS_URL_DEFAULT=MAIN \
-e APP_BASE_URL=http://localhost:3000 \
-e VITE_PUBLIC_APP_URL=http://localhost:3000 \
ghcr.io/durabullhq/durabull:latest
- Open
http://localhost:3000.
For a full Compose setup and persistence notes, see Docker Image and Compose.
Option B: Install from Source
- Install dependencies:
bun install
- Pick your mode in
.env:
DURABULL_AUTHLESS=true
DURABULL_ENV_CONNECTIONS=true
DURABULL_REDIS_URL_MAIN=redis://localhost:6379
DURABULL_REDIS_URL_MAIN_ENVIRONMENT=development
DURABULL_REDIS_URL_DEFAULT=MAIN
APP_BASE_URL=http://localhost:5173
VITE_PUBLIC_APP_URL=http://localhost:5173
- Start services:
bun run dev:authless
For full local infrastructure, seeded data, and contributor workflows, see Local Development.
First-Run Validation Checklist
GET /api/healthreturnsstatus: okGET /api/modematches expected auth, connection, and persistence mode- Queues load in the dashboard for your selected connection
- Job details, scheduled jobs, and workers pages load without API errors
Next Steps After Install
- Read How to Use Durabull.
- Configure Connection Management.
- Standardize naming with Queue and Scheduled Job Naming Best Practices.
- Adopt structured logs with Log Formatting and Highlighting.