Skip to main content

Configuration

Configure MeetBot for your environment.

Environment Variables

Required Variables

VariableDescriptionExample
DATABASE_URLPostgreSQL connection stringpostgresql://user:pass@host:5432/db
JWT_SECRET_KEYSecret for JWT token signingRandom 32+ char string
AWS_ACCESS_KEY_IDS3/MinIO access keyminioadmin
AWS_SECRET_ACCESS_KEYS3/MinIO secret keyminioadmin
AWS_BUCKET_NAMES3 bucket for recordingsmeetbot-recordings

Optional Variables

VariableDescriptionDefault
S3_ENDPOINTCustom S3 endpoint (for MinIO)None (uses AWS)
AWS_REGIONAWS regionus-east-1
CORS_ORIGINSAllowed CORS origins*
LOG_LEVELLogging levelINFO

OAuth Configuration

VariableDescription
GITHUB_CLIENT_IDGitHub OAuth app client ID
GITHUB_CLIENT_SECRETGitHub OAuth app secret
GOOGLE_CLIENT_IDGoogle OAuth client ID
GOOGLE_CLIENT_SECRETGoogle OAuth client secret

Docker Configuration

docker-compose.yml

Key configuration options:

services:
server:
environment:
# Database
DATABASE_URL: postgresql+asyncpg://postgres:postgres@postgres:5432/meetbot

# JWT
JWT_SECRET_KEY: ${JWT_SECRET_KEY:-change-me-in-production}

# Storage
S3_ENDPOINT: http://minio:9000
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-minioadmin}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-minioadmin}
AWS_BUCKET_NAME: ${AWS_BUCKET_NAME:-meetbot-recordings}

# Bot deployment
BOT_CALLBACK_URL: http://server:8000/api/v1/bot-callbacks
DOCKER_NETWORK: meetbot-network

Storage Configuration

Using MinIO (Local/Self-Hosted)

minio:
image: minio/minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
volumes:
- minio-data:/data

Using AWS S3

# Remove S3_ENDPOINT to use AWS S3
AWS_ACCESS_KEY_ID=your-aws-access-key
AWS_SECRET_ACCESS_KEY=your-aws-secret-key
AWS_BUCKET_NAME=your-bucket-name
AWS_REGION=us-east-1

Bot Configuration

Default Bot Settings

Configure default settings for all bots:

# apps/server/app/config.py

class Settings:
# Default bot display name
DEFAULT_BOT_NAME: str = "MeetBot"

# Heartbeat interval (ms)
DEFAULT_HEARTBEAT_INTERVAL: int = 5000

# Automatic leave timeouts (seconds)
DEFAULT_WAITING_ROOM_TIMEOUT: int = 300
DEFAULT_NO_ONE_JOINED_TIMEOUT: int = 300
DEFAULT_EVERYONE_LEFT_TIMEOUT: int = 60

Per-Bot Configuration

Each bot can override defaults:

{
"botDisplayName": "Custom Name",
"heartbeatInterval": 10000,
"automaticLeave": {
"waitingRoomTimeout": 600,
"noOneJoinedTimeout": 120,
"everyoneLeftTimeout": 30
}
}

Security Settings

JWT Configuration

# Token expiration times
ACCESS_TOKEN_EXPIRE_MINUTES=30
REFRESH_TOKEN_EXPIRE_DAYS=7

Rate Limiting

Configure in app/core/security.py:

RATE_LIMIT_PER_MINUTE = 60
RATE_LIMIT_PER_HOUR = 1000

CORS

# Comma-separated list of allowed origins
CORS_ORIGINS=http://localhost:3000,https://app.meetbot.dev

Logging

Log Levels

LOG_LEVEL=INFO  # DEBUG, INFO, WARNING, ERROR, CRITICAL

Structured Logging

# Enable JSON logging for production
LOG_FORMAT=json

Production Recommendations

  1. Generate secure secrets:

    openssl rand -hex 32  # For JWT_SECRET_KEY
  2. Use managed database:

    • AWS RDS
    • Google Cloud SQL
    • Supabase
  3. Use managed storage:

    • AWS S3
    • Google Cloud Storage
    • Cloudflare R2
  4. Enable HTTPS:

    • Use a reverse proxy (nginx, Traefik)
    • Or a managed load balancer
  5. Monitor and alert:

    • Set up health checks
    • Configure log aggregation
    • Set up error tracking (Sentry)