Barazo Docker Compose templates for self-hosting
barazo.forum
1# Configuration Reference
2
3All Barazo environment variables with descriptions, defaults, and examples.
4
5## Community Identity
6
7| Variable | Required | Default | Description |
8|----------|----------|---------|-------------|
9| `COMMUNITY_NAME` | Yes | `"My Community"` | Display name for your forum |
10| `COMMUNITY_DOMAIN` | Yes | -- | Domain name (e.g., `forum.example.com`). Used by Caddy for SSL. |
11| `COMMUNITY_DID` | No | -- | AT Protocol DID. Created automatically during first setup. |
12| `COMMUNITY_MODE` | No | `single` | `single` for one community, `global` for aggregator mode |
13| `HOSTING_MODE` | No | `selfhosted` | `selfhosted`, `saas` |
14
15## Database (PostgreSQL)
16
17| Variable | Required | Default | Description |
18|----------|----------|---------|-------------|
19| `POSTGRES_USER` | Yes | -- | PostgreSQL superuser name |
20| `POSTGRES_PASSWORD` | Yes | -- | PostgreSQL superuser password |
21| `POSTGRES_DB` | Yes | -- | Database name |
22| `POSTGRES_PORT` | No | `5432` | Host port mapping (dev compose only) |
23| `DATABASE_URL` | Yes | -- | Connection string for the API. Format: `postgresql://user:pass@postgres:5432/dbname` |
24| `MIGRATION_DATABASE_URL` | No | -- | Connection string for schema changes (DDL role, if using role separation). Reserved for beta -- not used in alpha. |
25
26## Cache (Valkey)
27
28| Variable | Required | Default | Description |
29|----------|----------|---------|-------------|
30| `VALKEY_PASSWORD` | Prod: Yes | -- | Valkey authentication password. Dangerous commands are disabled. |
31| `VALKEY_PORT` | No | `6379` | Host port mapping (dev compose only) |
32| `VALKEY_URL` | No | Auto | Connection URL for the API. Auto-constructed in compose. |
33
34## AT Protocol
35
36| Variable | Required | Default | Description |
37|----------|----------|---------|-------------|
38| `RELAY_URL` | No | `wss://bsky.network` | Bluesky relay URL for firehose |
39| `TAP_ADMIN_PASSWORD` | Yes | -- | Tap admin API password |
40| `TAP_PORT` | No | `2480` | Host port mapping (dev compose only) |
41| `OAUTH_CLIENT_ID` | Yes | -- | Your forum's public URL (e.g., `https://forum.example.com`) |
42| `OAUTH_REDIRECT_URI` | Yes | -- | OAuth callback URL (e.g., `https://forum.example.com/api/auth/callback`) |
43
44## Frontend
45
46| Variable | Required | Default | Description |
47|----------|----------|---------|-------------|
48| `API_INTERNAL_URL` | No | `http://localhost:3000` | Internal API URL for server-side rendering. Set to `http://barazo-api:3000` in Docker. |
49| `NEXT_PUBLIC_SITE_URL` | Yes | -- | Public site URL (e.g., `https://forum.example.com`) |
50
51## Image Versions
52
53| Variable | Required | Default | Description |
54|----------|----------|---------|-------------|
55| `BARAZO_API_VERSION` | No | `latest` | API Docker image tag. Pin to a specific version in production (e.g., `1.2.3`). |
56| `BARAZO_WEB_VERSION` | No | `latest` | Web Docker image tag. Pin to a specific version in production. |
57
58## Search
59
60| Variable | Required | Default | Description |
61|----------|----------|---------|-------------|
62| `EMBEDDING_URL` | No | -- | Enables hybrid semantic search. Example: `http://ollama:11434/api/embeddings` |
63| `AI_EMBEDDING_DIMENSIONS` | No | `768` | Vector dimensions (must match your embedding model) |
64
65## Encryption
66
67| Variable | Required | Default | Description |
68|----------|----------|---------|-------------|
69| `AI_ENCRYPTION_KEY` | Conditional | -- | AES-256-GCM key for encrypting BYOK API keys at rest. Required if BYOK features are used. Generate: `openssl rand -base64 32` |
70
71## Cross-Posting
72
73| Variable | Required | Default | Description |
74|----------|----------|---------|-------------|
75| `FEATURE_CROSSPOST_FRONTPAGE` | No | `false` | Enable Frontpage cross-posting (Bluesky cross-posting is always available) |
76
77## Plugins
78
79| Variable | Required | Default | Description |
80|----------|----------|---------|-------------|
81| `PLUGINS_ENABLED` | No | `true` | Set to `false` to disable all plugins |
82| `PLUGIN_REGISTRY_URL` | No | `https://registry.npmjs.org` | npm registry URL for plugin installation |
83
84## Monitoring
85
86| Variable | Required | Default | Description |
87|----------|----------|---------|-------------|
88| `GLITCHTIP_DSN` | No | -- | GlitchTip/Sentry DSN for error reporting |
89| `LOG_LEVEL` | No | `info` | Pino log level: `trace`, `debug`, `info`, `warn`, `error`, `fatal` |
90
91## Backups
92
93| Variable | Required | Default | Description |
94|----------|----------|---------|-------------|
95| `BACKUP_PUBLIC_KEY` | No | -- | age public key for encrypting backups. Generate: `age-keygen -o key.txt` |
96| `BACKUP_DIR` | No | `./backups` | Directory for backup files |
97| `BACKUP_RETAIN_DAYS` | No | `7` | Days to keep old backups before cleanup |