Skip to Content
For DevelopersEnvironment Variables

Environment Variables

This page documents all environment variables used by Auktiva. Copy .env.example to .env and configure as needed.

cp .env.example .env

Required Variables

These variables must be set for Auktiva to function.

VariableDescriptionExample
DATABASE_URLDatabase connection stringfile:./data/auktiva.db or libsql://mydb.turso.io
AUTH_SECRETSecret key for encrypting sessions. Generate with openssl rand -base64 32K7gNz... (32+ chars)
AUTH_URLBase URL of your applicationhttps://auctions.example.com

Database

VariableRequiredDescriptionExample
DATABASE_URLYesSQLite file path or Turso URLfile:./data/auktiva.db
DATABASE_AUTH_TOKENTurso onlyTurso authentication tokeneyJhbGci...

SQLite (local):

DATABASE_URL="file:./data/auktiva.db"

Turso (cloud):

DATABASE_URL="libsql://your-database.turso.io" DATABASE_AUTH_TOKEN="your-turso-auth-token"

Authentication

VariableRequiredDescriptionExample
AUTH_SECRETYesSession encryption keyopenssl rand -base64 32
AUTH_URLYesApplication base URLhttps://auctions.example.com

Always generate a unique AUTH_SECRET for production. Never use example values.

Storage

VariableRequiredDescriptionExample
STORAGE_PROVIDERNoStorage backend: local or s3local
S3_BUCKETS3 onlyS3 bucket namemy-auktiva-uploads
S3_REGIONS3 onlyAWS regionus-east-1
S3_ACCESS_KEY_IDS3 onlyAWS access keyAKIA...
S3_SECRET_ACCESS_KEYS3 onlyAWS secret keywJalr...
S3_ENDPOINTNoCustom S3 endpoint (MinIO, R2)https://s3.example.com
S3_PUBLIC_URLNoCustom public URL for fileshttps://cdn.example.com

Local storage (default):

STORAGE_PROVIDER="local"

S3 storage:

STORAGE_PROVIDER="s3" S3_BUCKET="my-auktiva-uploads" S3_REGION="us-east-1" S3_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" S3_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

Cloudflare R2:

STORAGE_PROVIDER="s3" S3_BUCKET="my-bucket" S3_REGION="auto" S3_ACCESS_KEY_ID="your-r2-access-key" S3_SECRET_ACCESS_KEY="your-r2-secret-key" S3_ENDPOINT="https://ACCOUNT_ID.r2.cloudflarestorage.com"

Email

VariableRequiredDescriptionExample
EMAIL_PROVIDERNoEmail provider: brevo or smtpbrevo
MAIL_FROMNoSender email addressnoreply@example.com
MAIL_FROM_NAMENoSender display nameAuktiva
NEXT_PUBLIC_APP_URLNoApp URL for email linkshttps://auctions.example.com
CRON_SECRETProductionSecret for cron job authenticationopenssl rand -base64 32

Brevo Provider

VariableRequiredDescriptionExample
BREVO_API_KEYBrevo onlyBrevo API key from app.brevo.com xkeysib-...
EMAIL_PROVIDER="brevo" BREVO_API_KEY="xkeysib-your-api-key" MAIL_FROM="noreply@example.com" MAIL_FROM_NAME="Auktiva"

SMTP Provider

VariableRequiredDescriptionExample
SMTP_HOSTSMTP onlySMTP server hostnamesmtp.gmail.com
SMTP_PORTSMTP onlySMTP server port587
SMTP_SECURENoUse implicit TLS (port 465)false
SMTP_USERNoSMTP usernameuser@example.com
SMTP_PASSWORDNoSMTP passwordapp-password
EMAIL_PROVIDER="smtp" SMTP_HOST="smtp.gmail.com" SMTP_PORT="587" SMTP_SECURE="false" SMTP_USER="your-email@gmail.com" SMTP_PASSWORD="your-app-password" MAIL_FROM="noreply@example.com"

OAuth Providers (Optional)

Google OAuth

VariableRequiredDescriptionExample
GOOGLE_CLIENT_IDNoGoogle OAuth client ID123456.apps.googleusercontent.com
GOOGLE_CLIENT_SECRETNoGoogle OAuth client secretGOCSPX-...

Get credentials from Google Cloud Console .

Redirect URI: https://yourdomain.com/api/auth/callback/google

Microsoft OAuth

VariableRequiredDescriptionExample
MICROSOFT_CLIENT_IDNoAzure AD application ID12345678-1234-...
MICROSOFT_CLIENT_SECRETNoAzure AD client secretabc123...

Get credentials from Azure Portal .

Redirect URI: https://yourdomain.com/api/auth/callback/azure-ad

reCAPTCHA (Optional)

VariableRequiredDescriptionExample
NEXT_PUBLIC_RECAPTCHA_SITE_KEYNoreCAPTCHA v2 site key (public)6Lc...
RECAPTCHA_SECRET_KEYNoreCAPTCHA v2 secret key6Lc...

Get keys from Google reCAPTCHA Admin .

Realtime (WebSocket)

Soketi (Self-Hosted)

VariableRequiredDescriptionExample
NEXT_PUBLIC_REALTIME_DRIVERNoRealtime driversoketi
NEXT_PUBLIC_SOKETI_APP_KEYSoketiPublic app keyopenssl rand -hex 16
NEXT_PUBLIC_SOKETI_HOSTSoketiPublic hostname for browser connectionsauctions.example.com
NEXT_PUBLIC_SOKETI_PORTNoWebSocket port6001
NEXT_PUBLIC_SOKETI_USE_TLSNoUse WSS (secure WebSocket)true
SOKETI_APP_IDSoketiApp ID for serverauktiva
SOKETI_APP_SECRETSoketiSecret for signing (server-only)openssl rand -hex 32
SOKETI_HOSTNoInternal host for server connections127.0.0.1
NEXT_PUBLIC_REALTIME_DRIVER="soketi" NEXT_PUBLIC_SOKETI_APP_KEY="a1b2c3d4e5f6g7h8" NEXT_PUBLIC_SOKETI_HOST="auctions.example.com" NEXT_PUBLIC_SOKETI_PORT="6001" NEXT_PUBLIC_SOKETI_USE_TLS="true" SOKETI_APP_ID="auktiva" SOKETI_APP_SECRET="your-secret-key-here" SOKETI_HOST="127.0.0.1"

SOKETI_HOST is for server-side connections (internal). NEXT_PUBLIC_SOKETI_HOST is for browser connections (must be publicly accessible).

Pusher (Cloud)

VariableRequiredDescriptionExample
NEXT_PUBLIC_REALTIME_DRIVERNoRealtime driverpusher
NEXT_PUBLIC_PUSHER_KEYPusherPusher app keyabc123...
NEXT_PUBLIC_PUSHER_CLUSTERPusherPusher clustereu
PUSHER_APP_IDPusherPusher app ID123456
PUSHER_SECRETPusherPusher secretxyz789...
NEXT_PUBLIC_REALTIME_DRIVER="pusher" NEXT_PUBLIC_PUSHER_KEY="your-pusher-key" NEXT_PUBLIC_PUSHER_CLUSTER="eu" PUSHER_APP_ID="123456" PUSHER_SECRET="your-pusher-secret"

Get credentials from Pusher Dashboard .

Feature Flags

VariableRequiredDefaultDescription
ALLOW_OPEN_AUCTIONSNofalseAllow users to create public auctions
MAINTENANCE_MODENofalseShow maintenance page to all users
ALLOW_OPEN_AUCTIONS="true" MAINTENANCE_MODE="false"

Complete Example

Development (SQLite + Local Storage)

DATABASE_URL="file:./data/auktiva.db" AUTH_SECRET="dev-secret-change-in-production" AUTH_URL="http://localhost:3000" STORAGE_PROVIDER="local" ALLOW_OPEN_AUCTIONS="true"

Production (Docker with Soketi)

# Database DATABASE_URL="file:./data/auktiva.db" # Authentication AUTH_SECRET="K7gNzX9p2mQ4vR8sT1wY6bC3dF5hJ0kL" AUTH_URL="https://auctions.example.com" # Storage STORAGE_PROVIDER="local" # Email EMAIL_PROVIDER="brevo" BREVO_API_KEY="xkeysib-your-api-key" MAIL_FROM="noreply@example.com" MAIL_FROM_NAME="Auktiva" NEXT_PUBLIC_APP_URL="https://auctions.example.com" CRON_SECRET="your-cron-secret" # Realtime NEXT_PUBLIC_REALTIME_DRIVER="soketi" NEXT_PUBLIC_SOKETI_APP_KEY="a1b2c3d4e5f6g7h8" NEXT_PUBLIC_SOKETI_HOST="auctions.example.com" NEXT_PUBLIC_SOKETI_PORT="6001" NEXT_PUBLIC_SOKETI_USE_TLS="true" SOKETI_APP_ID="auktiva" SOKETI_APP_SECRET="your-soketi-secret" SOKETI_HOST="soketi" # Features ALLOW_OPEN_AUCTIONS="false"

Production (Vercel with Turso + S3)

# Database (Turso) DATABASE_URL="libsql://myapp.turso.io" DATABASE_AUTH_TOKEN="eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9..." # Authentication AUTH_SECRET="K7gNzX9p2mQ4vR8sT1wY6bC3dF5hJ0kL" AUTH_URL="https://auctions.example.com" # Storage (S3) STORAGE_PROVIDER="s3" S3_BUCKET="my-auktiva-uploads" S3_REGION="us-east-1" S3_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" S3_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" # Email EMAIL_PROVIDER="brevo" BREVO_API_KEY="xkeysib-your-api-key" MAIL_FROM="noreply@example.com" NEXT_PUBLIC_APP_URL="https://auctions.example.com" CRON_SECRET="your-cron-secret" # Realtime (Pusher for serverless) NEXT_PUBLIC_REALTIME_DRIVER="pusher" NEXT_PUBLIC_PUSHER_KEY="your-pusher-key" NEXT_PUBLIC_PUSHER_CLUSTER="eu" PUSHER_APP_ID="123456" PUSHER_SECRET="your-pusher-secret" # Features ALLOW_OPEN_AUCTIONS="false"

Generating Secrets

# Generate AUTH_SECRET or CRON_SECRET openssl rand -base64 32 # Generate Soketi app key openssl rand -hex 16 # Generate Soketi app secret openssl rand -hex 32
Last updated on