Skip to content
Trackr beta
esc
Type to search. Use ↑ ↓ to move, ↵ to open.
Self-hosting

Configuration

Every knob is an environment variable in the repo-root .env, shared by docker compose, the web app and the Go services.

Updated 1 Sept 2026 beta 1 min read

Database #

VariableDefaultNotes
DATABASE_URLFull connection string. Leave empty in production to build it from the parts below.
POSTGRES_USER POSTGRES_PASSWORD POSTGRES_DBtrackrCompose provisions the db service from these.
POSTGRES_HOST POSTGRES_PORTlocalhost 5432Compose overrides the host to db.

Routing and auth #

VariableDefaultNotes
ORIGINunsetKeep unset behind a proxy that sets forwarded headers.
PROTOCOL_HEADER HOST_HEADERx-forwarded-proto x-forwarded-hostHeader names the app trusts.
XFF_DEPTH1Number of proxies in front.
BETTER_AUTH_SECRETRequired. 32+ characters.
ROOT_EMAIL ROOT_PASSWORD ROOT_NAMESeeded superadmin account.

Email #

VariableDefault
EMAIL_FROM
SMTP_HOSTempty = log to console
SMTP_PORT587
SMTP_SECUREfalse
SMTP_USER SMTP_PASS

Storage #

See Docker Compose → Storage for the STORAGE_* and S3_* variables.

Worker #

VariableDefaultNotes
WORKER_CONCURRENCY4Parallel jobs per worker.
WORKER_JOB_TIMEOUT4mPer-job deadline.
WORKER_POLL_INTERVAL1sFallback poll; LISTEN/NOTIFY wakes it instantly.
WORKER_NOTIFYtrueSet to false to disable LISTEN/NOTIFY.
WORKER_HEARTBEAT WORKER_REAP_AFTER30s 5mStale jobs are re-queued after the reap window.
WORKER_BACKOFF_BASE WORKER_BACKOFF_CAP10s 10mExponential retry backoff.
WORKER_JOB_TYPESallComma-separated list to pin a worker to some job types.
WORKER_IDhostnameShown in the jobs monitor.

Scheduler #

VariableDefault
SCHEDULER_POLL_INTERVAL5s
SCHEDULER_BATCH_SIZE100
SCHEDULER_IDhostname

Webhooks and push #

VariableDefaultNotes
WEBHOOKS_ENABLEDtrue
WEBHOOK_TIMEOUT10s
WEBHOOK_ALLOW_PRIVATE_URLSfalseDevelopment only.
PUSH_ENABLEDfalseEnables APNs delivery.
APNS_KEY APNS_KEY_ID APNS_TEAM_ID APNS_BUNDLE_ID APNS_ENVAPNs credentials for the iOS app.
Edit this page on GitHub