Skip to content

Environment Variables

bunqueue can be configured through environment variables.

Server Configuration

TCP_PORT

TCP server port for client connections.

TypeDefaultExample
number67896789
Terminal window
TCP_PORT=6789 bunqueue start

HTTP_PORT

HTTP server port for REST API and metrics.

TypeDefaultExample
number67906790
Terminal window
HTTP_PORT=6790 bunqueue start

HOST

Hostname to bind servers to.

TypeDefaultExample
string0.0.0.0127.0.0.1
Terminal window
# Bind to localhost only
HOST=127.0.0.1 bunqueue start
# Bind to all interfaces (default)
HOST=0.0.0.0 bunqueue start

TCP_SOCKET_PATH

Unix socket path for TCP server (alternative to TCP_PORT).

TypeDefaultExample
string(none)/var/run/bunqueue.sock
Terminal window
TCP_SOCKET_PATH=/var/run/bunqueue.sock bunqueue start

HTTP_SOCKET_PATH

Unix socket path for HTTP server (alternative to HTTP_PORT).

TypeDefaultExample
string(none)/var/run/bunqueue-http.sock
Terminal window
HTTP_SOCKET_PATH=/var/run/bunqueue-http.sock bunqueue start

DATA_PATH

Path to SQLite database file.

TypeDefaultExample
string./data/bunq.db/var/lib/queue.db
Terminal window
DATA_PATH=/var/lib/queue.db bunqueue start

AUTH_TOKENS

Comma-separated list of authentication tokens.

TypeDefaultExample
string(none)token1,token2,token3
Terminal window
AUTH_TOKENS=secret-token-1,secret-token-2 bunqueue start

When set, all TCP and HTTP requests must include a valid token:

Terminal window
# TCP client
bunqueue push emails '{"to":"test@example.com"}' --token secret-token-1
# HTTP API
curl -H "Authorization: Bearer secret-token-1" http://localhost:6790/api/queues

Logging

LOG_LEVEL

Minimum log level to output.

TypeDefaultValues
stringinfodebug, info, warn, error
Terminal window
LOG_LEVEL=debug bunqueue start

LOG_FORMAT

Log output format.

TypeDefaultValues
stringtexttext, json
Terminal window
LOG_FORMAT=json bunqueue start

JSON format output:

{"level":"info","msg":"Server started","tcp":6789,"http":6790,"ts":"2024-01-15T10:30:00Z"}

S3 Backup Configuration

S3_BACKUP_ENABLED

Enable automated S3 backups.

TypeDefaultValues
booleanfalse0, 1, false, true
Terminal window
S3_BACKUP_ENABLED=1 bunqueue start

S3_ACCESS_KEY_ID

S3 access key for authentication.

TypeDefaultAliases
string(none)AWS_ACCESS_KEY_ID
Terminal window
S3_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE bunqueue start

S3_SECRET_ACCESS_KEY

S3 secret key for authentication.

TypeDefaultAliases
string(none)AWS_SECRET_ACCESS_KEY
Terminal window
S3_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY bunqueue start

S3_BUCKET

S3 bucket name for backups.

TypeDefaultAliases
string(none)AWS_BUCKET
Terminal window
S3_BUCKET=my-bunqueue-backups bunqueue start

S3_REGION

AWS region for S3 bucket.

TypeDefaultAliases
stringus-east-1AWS_REGION
Terminal window
S3_REGION=eu-west-1 bunqueue start

S3_ENDPOINT

Custom S3 endpoint for non-AWS providers.

TypeDefaultExample
string(none)https://account.r2.cloudflarestorage.com
Terminal window
# Cloudflare R2
S3_ENDPOINT=https://abc123.r2.cloudflarestorage.com bunqueue start
# MinIO
S3_ENDPOINT=http://localhost:9000 bunqueue start
# DigitalOcean Spaces
S3_ENDPOINT=https://nyc3.digitaloceanspaces.com bunqueue start

S3_BACKUP_INTERVAL

Interval between automated backups (milliseconds).

TypeDefaultExample
number21600000 (6 hours)3600000 (1 hour)
Terminal window
S3_BACKUP_INTERVAL=3600000 bunqueue start

S3_BACKUP_RETENTION

Number of backups to keep.

TypeDefaultExample
number730
Terminal window
S3_BACKUP_RETENTION=30 bunqueue start

S3_BACKUP_PREFIX

Prefix for backup files in S3.

TypeDefaultExample
stringbackups/bunqueue/prod/
Terminal window
S3_BACKUP_PREFIX=bunqueue/production/ bunqueue start

Timeouts & Limits

SHUTDOWN_TIMEOUT_MS

Timeout for graceful shutdown in milliseconds.

TypeDefaultExample
number3000060000
Terminal window
SHUTDOWN_TIMEOUT_MS=60000 bunqueue start

STATS_INTERVAL_MS

Interval for stats logging in milliseconds.

TypeDefaultExample
number300000 (5 min)60000
Terminal window
STATS_INTERVAL_MS=60000 bunqueue start

WORKER_TIMEOUT_MS

Default timeout for job processing in milliseconds.

TypeDefaultExample
number3000060000
Terminal window
WORKER_TIMEOUT_MS=60000 bunqueue start

LOCK_TIMEOUT_MS

Timeout for acquiring internal locks in milliseconds.

TypeDefaultExample
number500010000
Terminal window
LOCK_TIMEOUT_MS=10000 bunqueue start

WORKER_CLEANUP_INTERVAL_MS

Interval for cleaning up inactive worker registrations.

TypeDefaultExample
number60000120000
Terminal window
WORKER_CLEANUP_INTERVAL_MS=120000 bunqueue start

Webhooks

WEBHOOK_MAX_RETRIES

Maximum retry attempts for webhook deliveries.

TypeDefaultExample
number35
Terminal window
WEBHOOK_MAX_RETRIES=5 bunqueue start

WEBHOOK_RETRY_DELAY_MS

Delay between webhook retry attempts in milliseconds.

TypeDefaultExample
number10005000
Terminal window
WEBHOOK_RETRY_DELAY_MS=5000 bunqueue start

Rate Limiting (Server)

RATE_LIMIT_MAX_REQUESTS

Maximum TCP requests per client within the rate limit window. Disabled when not set.

TypeDefaultExample
number(none)1000
Terminal window
RATE_LIMIT_MAX_REQUESTS=1000 bunqueue start

RATE_LIMIT_WINDOW_MS

Time window for rate limiting in milliseconds.

TypeDefaultExample
number6000030000
Terminal window
RATE_LIMIT_WINDOW_MS=30000 bunqueue start

RATE_LIMIT_CLEANUP_MS

Interval for cleaning up rate limit tracking data.

TypeDefaultExample
number60000120000
Terminal window
RATE_LIMIT_CLEANUP_MS=120000 bunqueue start

Security & Access

METRICS_AUTH

Require authentication for metrics endpoints.

TypeDefaultValues
booleanfalsetrue, false
Terminal window
METRICS_AUTH=true bunqueue start

CORS_ALLOW_ORIGIN

Comma-separated list of allowed CORS origins.

TypeDefaultExample
string*https://app.example.com
Terminal window
CORS_ALLOW_ORIGIN=https://app.example.com,https://admin.example.com bunqueue start

Client & CLI

BUNQUEUE_EMBEDDED

Force embedded mode for client library.

TypeDefaultValues
string(none)1
Terminal window
BUNQUEUE_EMBEDDED=1 bun run worker.ts

SQLITE_PATH

Legacy alias for DATA_PATH.

TypeDefaultExample
string(none)./data/queue.db
Terminal window
SQLITE_PATH=./data/queue.db bunqueue start

NO_COLOR

Disable colored output in CLI.

TypeDefaultValues
string(none)1
Terminal window
NO_COLOR=1 bunqueue stats

Complete Examples

Development

.env.development
TCP_PORT=6789
HTTP_PORT=6790
DATA_PATH=./data/dev.db
LOG_LEVEL=debug
LOG_FORMAT=text

Production

.env.production
TCP_PORT=6789
HTTP_PORT=6790
DATA_PATH=/var/lib/production.db
LOG_LEVEL=info
LOG_FORMAT=json
AUTH_TOKENS=prod-token-abc123,prod-token-xyz789
# S3 Backup
S3_BACKUP_ENABLED=1
S3_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
S3_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
S3_BUCKET=company-bunqueue-backups
S3_REGION=us-east-1
S3_BACKUP_INTERVAL=3600000
S3_BACKUP_RETENTION=30
S3_BACKUP_PREFIX=production/

Docker Compose

version: '3.8'
services:
bunqueue:
image: bunqueue:latest
ports:
- "6789:6789"
- "6790:6790"
volumes:
- bunqueue-data:/data
environment:
- TCP_PORT=6789
- HTTP_PORT=6790
- DATA_PATH=/data/queue.db
- LOG_LEVEL=info
- LOG_FORMAT=json
- AUTH_TOKENS=${AUTH_TOKENS}
- S3_BACKUP_ENABLED=1
- S3_ACCESS_KEY_ID=${S3_ACCESS_KEY_ID}
- S3_SECRET_ACCESS_KEY=${S3_SECRET_ACCESS_KEY}
- S3_BUCKET=${S3_BUCKET}
- S3_REGION=${S3_REGION}
- S3_BACKUP_INTERVAL=21600000
- S3_BACKUP_RETENTION=7
volumes:
bunqueue-data:

Kubernetes

apiVersion: v1
kind: ConfigMap
metadata:
name: bunqueue-config
data:
TCP_PORT: "6789"
HTTP_PORT: "6790"
DATA_PATH: "/data/queue.db"
LOG_LEVEL: "info"
LOG_FORMAT: "json"
S3_BACKUP_ENABLED: "1"
S3_REGION: "us-east-1"
S3_BACKUP_INTERVAL: "21600000"
S3_BACKUP_RETENTION: "7"
S3_BACKUP_PREFIX: "kubernetes/"
---
apiVersion: v1
kind: Secret
metadata:
name: bunqueue-secrets
type: Opaque
stringData:
AUTH_TOKENS: "your-production-token"
S3_ACCESS_KEY_ID: "your-access-key"
S3_SECRET_ACCESS_KEY: "your-secret-key"
S3_BUCKET: "your-bucket"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: bunqueue
spec:
replicas: 1
selector:
matchLabels:
app: bunqueue
template:
metadata:
labels:
app: bunqueue
spec:
containers:
- name: bunqueue
image: bunqueue:latest
ports:
- containerPort: 6789
- containerPort: 6790
envFrom:
- configMapRef:
name: bunqueue-config
- secretRef:
name: bunqueue-secrets
volumeMounts:
- name: data
mountPath: /data
volumes:
- name: data
persistentVolumeClaim:
claimName: bunqueue-pvc

Precedence

Environment variables take precedence in this order:

  1. Command-line arguments (highest)
  2. Environment variables
  3. Configuration file
  4. Default values (lowest)
Terminal window
# Command-line wins
TCP_PORT=6789 bunqueue start --tcp-port 7000
# Uses port 7000