Configuration

Complete reference for all environment variables.

Required Variables

Database

VariableDescriptionExample
DATABASE_URLPostgreSQL connection stringpostgresql://user:pass@host:5432/db

Redis

VariableDescriptionExample
REDIS_URLRedis connection stringredis://localhost:6379/0

Security

VariableDescription
JWT_SECRETSecret for JWT signing (min 32 bytes) - generate with: openssl rand -base64 32

AI Services

VariableDescription
AZURE_OPENAI_API_KEYAzure OpenAI API key
AZURE_OPENAI_ENDPOINTAzure OpenAI endpoint
AZURE_OPENAI_API_VERSIONAPI version (e.g., 2024-02-01)
AZURE_DEPLOYMENT_NAMEChat model deployment
AZURE_EMBEDDING_DEPLOYMENT_NAMEEmbedding deployment

Storage

VariableDescription
S3_ENDPOINTS3-compatible endpoint
S3_BUCKETBucket name
S3_ACCESS_KEY_IDAccess key
S3_SECRET_ACCESS_KEYSecret key
S3_REGIONRegion (for R2 use auto)
S3_PUBLIC_URLPublic URL for files

Optional Variables

Application

VariableDefaultDescription
ADMIN_API_KEY-Admin API key for system operations
LOG_LEVELINFOLogging level
WIDGET_TOKEN_EXPIRE_SECONDS86400Widget token TTL (24 hours)

Rate Limiting

VariableDefaultDescription
RATE_LIMIT_REQUESTS_PER_MINUTE60General request limit
RATE_LIMIT_TOKENS_PER_MINUTE100000Token limit per minute
RATE_LIMIT_CHAT_PER_MINUTE60Chat request limit

File Processing

VariableDefaultDescription
MAX_FILE_SIZE_MB50Maximum upload size
MAX_PDF_PAGES1000Maximum PDF pages

Example .env File

# Database
DATABASE_URL="postgresql://chatbot:password@localhost:5432/chatbot"

# Redis
REDIS_URL="redis://localhost:6379/0"

# Security
JWT_SECRET="your-32-byte-secret-key-here-minimum"

# Azure OpenAI
AZURE_OPENAI_API_KEY="your-azure-key"
AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/"
AZURE_OPENAI_API_VERSION="2024-02-01"
AZURE_DEPLOYMENT_NAME="gpt-4"
AZURE_EMBEDDING_DEPLOYMENT_NAME="text-embedding-3-small"

# S3 Storage
S3_ENDPOINT="https://r2.cloudflarestorage.com"
S3_REGION="auto"
S3_BUCKET="chatbot-files"
S3_ACCESS_KEY_ID="your-key"
S3_SECRET_ACCESS_KEY="your-secret"
S3_PUBLIC_URL="https://files.example.com"

# Application
LOG_LEVEL="INFO"

Generating Secrets

# Generate JWT secret (32+ bytes)
openssl rand -base64 32

# Generate database password
openssl rand -base64 24