.env.example79 lines · main
1# briven self-host — copy to `.env` and fill in.
2# Generate secrets with `openssl rand -hex 32`.
3#
4# Post ADR-0002 the platform runs on TWO database engines, so there are
5# TWO distinct database passwords below — do not reuse one for the other.
6
7# ─── Domain ──────────────────────────────────────────────────────────────
8# Domain you own. The compose creates Traefik routes for:
9# ${BRIVEN_DOMAIN} — dashboard (web)
10# api.${BRIVEN_DOMAIN} — control plane (api)
11# realtime.${BRIVEN_DOMAIN} — realtime websocket/poll service
12# docs.${BRIVEN_DOMAIN} — docs
13# status.${BRIVEN_DOMAIN} — status page (same container as docs)
14# s3.${BRIVEN_DOMAIN} — public MinIO S3 endpoint
15BRIVEN_DOMAIN=briven.example.com
16
17# ─── Required secrets — 32+ chars each ──────────────────────────────────
18BRIVEN_BETTER_AUTH_SECRET=__set_me__32_plus_chars__
19BRIVEN_AUDIT_IP_PEPPER=__set_me__32_plus_chars__
20BRIVEN_ENCRYPTION_KEY=__set_me__32_plus_chars__
21BRIVEN_RUNTIME_SHARED_SECRET=__set_me__32_plus_chars__
22
23# ─── Database passwords (TWO engines, two passwords) ────────────────────
24# Control plane — stock Postgres (pgvector image). Holds users, orgs,
25# projects, billing, secrets, auth. Used in BRIVEN_DATABASE_URL.
26BRIVEN_POSTGRES_PASSWORD=__set_me_strong__
27
28# Data plane — DoltGres (git-for-data, Postgres-wire). One database per
29# customer project. Used in BRIVEN_DATA_PLANE_URL (api/runtime/realtime).
30BRIVEN_DOLTGRES_PASSWORD=__set_me_strong__
31
32# ─── Object storage (MinIO) ─────────────────────────────────────────────
33# MinIO root password = the S3 secret key the api signs upload URLs with.
34BRIVEN_MINIO_ROOT_PASSWORD=__set_me_strong__
35# Optional — bucket name + region (defaults shown).
36# BRIVEN_MINIO_BUCKET=briven
37# BRIVEN_MINIO_REGION=us-east-1
38
39# ─── Data-plane backup ──────────────────────────────────────────────────
40# How often the dolt-backup sidecar snapshots every DoltGres database into
41# the doltgres_backups volume (seconds). Default = once a day.
42# BRIVEN_BACKUP_INTERVAL_SECONDS=86400
43
44# ─── mittera.eu transactional email (optional) ──────────────────────────
45# API_URL + API_KEY are required for outbound POST /api/v1/emails (Bearer).
46# WEBHOOK_SECRET only needed if mittera posts delivery/bounce events back.
47# Until set, magic-link emails print to the api container stdout.
48# Webhook URL to register on mittera: https://api.${BRIVEN_DOMAIN}/mittera-webhook
49# BRIVEN_MITTERA_API_URL=https://api.mittera.eu
50# BRIVEN_MITTERA_API_KEY=...
51# BRIVEN_MITTERA_WEBHOOK_SECRET=whsec_...
52
53# ─── OAuth sign-in (all optional) ───────────────────────────────────────
54# Each provider's button only shows in the UI when its CLIENT_ID is set.
55# Google: redirect URI https://api.${BRIVEN_DOMAIN}/v1/auth/callback/google
56# BRIVEN_GOOGLE_CLIENT_ID=...
57# BRIVEN_GOOGLE_CLIENT_SECRET=...
58# BRIVEN_GITHUB_CLIENT_ID=...
59# BRIVEN_GITHUB_CLIENT_SECRET=...
60# BRIVEN_KONNOS_CLIENT_ID=...
61# BRIVEN_KONNOS_CLIENT_SECRET=...
62# BRIVEN_KONNOS_ISSUER=https://code.konnos.org
63# BRIVEN_DISCORD_CLIENT_ID=...
64# BRIVEN_DISCORD_CLIENT_SECRET=...
65
66# ─── In-platform LLM (optional, Ollama-compatible) ──────────────────────
67# BRIVEN_OLLAMA_URL=
68# BRIVEN_OLLAMA_API_KEY=
69# BRIVEN_OLLAMA_MODEL=qwen2.5-coder:32b
70
71# ─── Billing (Polar — optional, skip for self-host) ─────────────────────
72# BRIVEN_POLAR_ACCESS_TOKEN=...
73# BRIVEN_POLAR_WEBHOOK_SECRET=...
74# BRIVEN_POLAR_PRO_PRODUCT_ID=...
75# BRIVEN_POLAR_TEAM_PRODUCT_ID=...
76
77# ─── Public open signups ────────────────────────────────────────────────
78# Default false = invite-only. Flip to true for a fully public instance.
79BRIVEN_OPEN_SIGNUPS=false