Skip to content

Environment Variables

Complete reference for all Quackback configuration options. Copy .env.example to .env and fill in your values.

Required Variables

These variables must be set for Quackback to run.

VariableDescriptionExample
DATABASE_URLPostgreSQL connection stringpostgresql://postgres:password@localhost:5432/quackback
SECRET_KEYSecret key for authentication and encryption (32+ chars). Used for session signing and deriving encryption keys.openssl rand -base64 32
BASE_URLPublic URL for your instance (used for auth, emails, and OAuth callbacks)https://feedback.example.com
REDIS_URLRedis/Dragonfly connection for background job queue (BullMQ). Dragonfly is included in docker-compose.redis://localhost:6379

Email Configuration

Configure email delivery for OTP codes, notifications, and invitations.

If email is not configured, OTP codes and other emails are printed to the console. This is useful for local development.

Priority order: SMTP (if configured) > Resend (if configured) > Console logging.

SMTP

VariableDescriptionExample
EMAIL_SMTP_HOSTSMTP server hostnamesmtp.sendgrid.net
EMAIL_SMTP_PORTSMTP port587
EMAIL_SMTP_USERSMTP usernameapikey
EMAIL_SMTP_PASSSMTP passwordSG.xxxx
EMAIL_SMTP_SECUREUse TLS (for port 465)true
EMAIL_FROMSender email addressQuackback <feedback@example.com>

Resend

VariableDescriptionExample
EMAIL_RESEND_API_KEYResend API keyre_xxxxxxxxxxxx
EMAIL_FROMSender email addressQuackback <feedback@example.com>

OAuth Providers

Enable social login for portal users and team members.

GitHub

VariableDescription
GITHUB_CLIENT_IDGitHub OAuth App client ID
GITHUB_CLIENT_SECRETGitHub OAuth App client secret

Create at: GitHub Developer Settings

Callback URL: https://your-domain.com/api/auth/callback/github

Google

VariableDescription
GOOGLE_CLIENT_IDGoogle OAuth client ID
GOOGLE_CLIENT_SECRETGoogle OAuth client secret

Create at: Google Cloud Console

Callback URL: https://your-domain.com/api/auth/callback/google

Integration credentials (Slack, Microsoft Teams, Linear, etc.) are configured through the admin UI and stored securely in the database, not as environment variables.

AI

Enable AI features like auto-categorization and summarization.

VariableDescriptionExample
OPENAI_API_KEYOpenAI API keysk-...
OPENAI_BASE_URLCustom endpoint (e.g., Azure OpenAI, Cloudflare AI Gateway)https://your-endpoint.com/v1

File Storage

S3-compatible storage for image uploads in changelogs and rich text content. Supports AWS S3, Cloudflare R2, Backblaze B2, MinIO, and other S3-compatible services.

If not configured, image upload is disabled in the rich text editor. For local development, MinIO is included in docker-compose and configured by default. Run bun run setup to start it.

VariableDescriptionExample
S3_ENDPOINTS3 endpoint URL (leave empty for AWS S3)http://localhost:9000
S3_BUCKETS3 bucket namequackback
S3_REGIONS3 regionus-east-1
S3_ACCESS_KEY_IDS3 access keyminioadmin
S3_SECRET_ACCESS_KEYS3 secret keyminioadmin
S3_FORCE_PATH_STYLEUse path-style URLs (required for MinIO, R2)true
S3_PUBLIC_URLPublic URL for uploaded files (optional)https://cdn.example.com

Telemetry

Anonymous usage statistics help improve Quackback. Telemetry is enabled by default and can be disabled via environment variable.

VariableDescriptionExample
DISABLE_TELEMETRYSet to "true" to disable anonymous usage statisticstrue

Complete Example

# ===================
# Required
# ===================
DATABASE_URL="postgresql://postgres:password@localhost:5432/quackback"
SECRET_KEY="your-32-character-minimum-secret-key-here"
BASE_URL="https://feedback.yourcompany.com"
REDIS_URL="redis://localhost:6379"
 
# ===================
# Email (choose one)
# ===================
# SMTP
EMAIL_SMTP_HOST="smtp.sendgrid.net"
EMAIL_SMTP_PORT="587"
EMAIL_SMTP_USER="apikey"
EMAIL_SMTP_PASS="SG.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
EMAIL_FROM="Quackback <feedback@yourcompany.com>"
 
# Or Resend
# EMAIL_RESEND_API_KEY="re_xxxxxxxxxxxx"
# EMAIL_FROM="Quackback <feedback@yourcompany.com>"
 
# ===================
# OAuth (optional)
# ===================
GITHUB_CLIENT_ID="your-github-client-id"
GITHUB_CLIENT_SECRET="your-github-client-secret"
 
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"
 
# ===================
# Telemetry (optional)
# ===================
# DISABLE_TELEMETRY="true"
 

Validation

Quackback validates required variables on startup. Missing variables will cause the application to fail with a clear error message indicating which variables are missing.