Powered by NovaDocs

Environment variables

2 min readUpdated Aug 5, 2026

For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to page URLs; this page is available as Markdown.

Environment variables


Required

VariableDescription
DATABASE_URLPostgreSQL connection string. Example: postgresql://user:password@host:5432/dbname?schema=public. On Vercel/serverless, some providers recommend ?connection_limit=1.

App URL and auth

VariableDescription
APP_BASE_URLBase URL of the application (e.g. http://localhost:3002 or https://panel.example.com). Used for password reset links and Discord OAuth redirect.

Stripe (payments)

VariableDescription
STRIPE_SECRET_KEYStripe secret key (e.g. sk_test_... or sk_live_...). If not set, creating payment links in the Admin (Payments) section will return an error.

Email (password reset)

VariableDescription
SMTP_HOSTSMTP server (e.g. smtp.zoho.eu).
SMTP_PORTPort (e.g. 587 or 465).
SMTP_SECURESet to true if using port 465.
SMTP_AUTH_METHODe.g. LOGIN.
SMTP_USERSMTP username.
SMTP_PASSSMTP password.
SMTP_FROMFrom address for emails (e.g. "Your Panel <noreply@yourdomain.com>").

If SMTP is not set, the backend can still generate a reset link and print it in the server console (development only).


Discord OAuth

VariableDescription
DISCORD_CLIENT_IDDiscord application client ID.
DISCORD_CLIENT_SECRETDiscord application client secret.
DISCORD_REDIRECT_URIMust match the redirect URI in Discord Developer Portal (e.g. https://your-domain/api/auth/callback).

These can also be stored in Admin Settings in the database (AdminSettings model) and overridden at runtime.


Vercel Blob (optional, for Vercel)

VariableDescription
BLOB_READ_WRITE_TOKENVercel Blob store token. If set (e.g. on Vercel), user banner uploads are stored in Blob instead of the local filesystem. Required for banner uploads to work on Vercel because the filesystem is read-only.

Summary table

VariableRequiredUsed for
DATABASE_URLYesPostgreSQL (Prisma).
APP_BASE_URLNoReset links, Discord redirect.
STRIPE_SECRET_KEYNoCreating Stripe payment links.
SMTP_*NoSending password reset emails.
DISCORD_*NoDiscord OAuth login.
BLOB_READ_WRITE_TOKENNoUser banner uploads on Vercel.

All of these can be set in .env for local development and in the host’s environment (e.g. Vercel project settings) for production.

Was this helpful?