Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. 🫖 Status page with uptime monitoring & API monitoring as code 🫖 openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
openstatus .env.docker.example
7.2 kB · 199 lines
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200# ============================================================================# Docker Environment Configuration (Example)# ============================================================================# Copy this file to .env.docker and replace with your actual values## NOTE: Build-time placeholders are set in each service's dofigen.yml file.# Values in this file override those placeholders at runtime via docker compose.# Required values are marked with [REQUIRED]# DATABASE# ============================================================================# LibSQL database connection - points to the libsql containerDATABASE_URL=http://libsql:8080DATABASE_AUTH_TOKEN=# REDIS & QUEUE# ============================================================================# Redis (optional) - for cachingUPSTASH_REDIS_REST_URL=http://localhost:6379UPSTASH_REDIS_REST_TOKEN=placeholder# QStash (optional - for background jobs)QSTASH_CURRENT_SIGNING_KEY=QSTASH_NEXT_SIGNING_KEY=QSTASH_TOKEN=QSTASH_URL=https://qstash.upstash.io/v1/publish/# ANALYTICS# ============================================================================# Tinybird (optional - for monitor analytics and charts)# Leave empty to disable analytics features# Get from: https://www.tinybird.co# Self-hosted with the local container: tb --local info (use the `token` value;# NOT curl :7181/tokens, which returns a different workspace)TINY_BIRD_API_KEY=# Same token as TINY_BIRD_API_KEY, read by the private-location ingest server (Go).# Both must be set: the ingest server never reads TINY_BIRD_API_KEY, so leaving# this empty makes Tinybird reject every check with a 403.TINYBIRD_TOKEN=# Tinybird URL (optional - defaults to cloud API)# For local Tinybird container, set to: http://tinybird-local:7181TINYBIRD_URL=# Set to "true" to resolve every Tinybird pipe and ingest to empty instead of# calling the instance above (optional - defaults to off).TINYBIRD_NOOP=# EMAIL# ============================================================================# [REQUIRED] Resend API key for sending magic link emails# Get from: https://resend.comRESEND_API_KEY=re_your_resend_api_key_here# AUTHENTICATION# ============================================================================# [REQUIRED] NextAuth secret - generate with: openssl rand -base64 32AUTH_SECRET=your-random-secret-here-min-32-chars# [REQUIRED] Self-hosted mode - enables magic link authentication# Set to "true" to allow email login without OAuth# Note: NEXT_PUBLIC_SELF_HOST is the client-side build-time version of this flag,# baked into the Docker image at build time (see apps/dashboard/Dockerfile).# It controls UI behavior like the Telegram connection flow (QR vs manual input),# and cannot be changed via this runtime config file.SELF_HOST="true"# GitHub OAuth (optional)# Get from: https://github.com/settings/developersAUTH_GITHUB_ID=AUTH_GITHUB_SECRET=# Google OAuth (optional)# Get from: https://console.cloud.google.comAUTH_GOOGLE_ID=AUTH_GOOGLE_SECRET=# Generic OIDC SSO (optional) - works with any OIDC provider (Okta, Auth0, Entra ID, Keycloak, ...)# Setting ISSUER enables the SSO login button; NAME customizes the button label (default: "SSO")AUTH_OIDC_ISSUER=AUTH_OIDC_ID=AUTH_OIDC_SECRET=AUTH_OIDC_NAME=# GOOGLE CLOUD# ============================================================================# Google Cloud Platform (optional - for scheduled tasks)GCP_PROJECT_ID=GCP_LOCATION=GCP_CLIENT_EMAIL=GCP_PRIVATE_KEY=# Cron secret for scheduled jobs.# Also used by the private-location app to authenticate status forwards to the workflows# app (WORKFLOWS_URL, set per-service in docker-compose; defaults to the prod Fly URL).CRON_SECRET=your-random-cron-secret# API KEYS# ============================================================================# Unkey (optional - for API key management)# Get from: https://unkey.devUNKEY_API_ID=UNKEY_TOKEN=# Super admin token for privileged operationsSUPER_ADMIN_TOKEN=# Server region identifierFLY_REGION=self-hosted# STRIPE# ============================================================================# Stripe (optional - for payments)# Get from: https://stripe.com/docs/keysSTRIPE_SECRET_KEY=STRIPE_WEBHOOK_SECRET_KEY=NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=# VERCEL# ============================================================================# Vercel (optional - for custom domains)# Get from: https://vercel.comPROJECT_ID_VERCEL=TEAM_ID_VERCEL=VERCEL_AUTH_BEARER_TOKEN=# Vercel Blob storage (optional)BLOB_READ_WRITE_TOKEN=# OBSERVABILITY# ============================================================================# Sentry (optional - error tracking)# Get from: https://sentry.ioNEXT_PUBLIC_SENTRY_DSN=SENTRY_AUTH_TOKEN=# OpenPanel (optional - analytics)# Get from: https://openpanel.devNEXT_PUBLIC_OPENPANEL_CLIENT_ID=OPENPANEL_CLIENT_SECRET=# PagerDuty (optional - alerting)PAGERDUTY_APP_ID=# Slack webhook (optional)SLACK_SUPPORT_WEBHOOK_URL=# Telegram Bot (optional)TELEGRAM_BOT_TOKEN=# SERVICE CONFIGURATION# ============================================================================NODE_ENV=production# [REQUIRED] Public URL for the applicationNEXT_PUBLIC_URL=http://localhost:3002# Screenshot service (optional)SCREENSHOT_SERVICE_URL=# OAuth for the MCP server. The API server is the authorization server and the# dashboard serves the consent screen, so both need their public origins here.# With NODE_ENV=production the defaults point at openstatus Cloud, which would# send your users to app.openstatus.dev to approve a connection.OAUTH_ISSUER=http://localhost:3001DASHBOARD_URL=http://localhost:3002# NOTE: OPENSTATUS_INGEST_URL does not belong here. No service in this compose# stack reads it -- it configures the *probe* (ghcr.io/openstatushq/private-location),# which runs on whatever host you monitor from. Set it there, alongside# OPENSTATUS_KEY, pointing at this stack's private-location service on port 8081.# Docs knowledge base for the AI assistant / MCP server (optional)# The search_docs/get_doc_page and search_content/get_content_page tools query# this site's /api/search and /api/markdown endpoints. Defaults to the public openstatus.dev docs.# OPENSTATUS_WEB_BASE_URL=https://www.openstatus.dev# AI chat provider (optional). Configure ONE option to enable the assistant.# Option 1 — OpenAI-compatible endpoint (NVIDIA NIM, vLLM, Ollama, OpenRouter…).# Recommended for self-hosting; takes priority when AI_BASE_URL is set. The model# MUST support tool calling. AI_API_KEY is optional for keyless local gateways.# AI_BASE_URL=https://integrate.api.nvidia.com/v1# AI_API_KEY=nvapi-xxxxx# AI_MODEL=meta/llama-3.1-70b-instruct# Option 2 — Vercel AI Gateway (model chosen by workspace plan).# AI_GATEWAY_API_KEY=# DEVELOPMENT & TESTING# ============================================================================# Turbo build modeTURBO_ENV_MODE=loose# Playground API keys (optional)PLAYGROUND_UNKEY_API_KEY=# Workspace settings (optional)WORKSPACES_HIDE_URL=