Skip to main content
Set these variables in your docker-compose.yml environment block, in a .env file at the project root, or as system environment variables.

Required

These three variables must be set before Kener starts for the first time.
VariableDescription
KENER_SECRET_KEYSecret key used for session signing and CSRF protection. Generate with openssl rand -base64 32. Never reuse across instances.
ORIGINThe public URL of your Kener instance (e.g. http://localhost:3000 or https://status.example.com). Used for CSRF validation. For subpath deployments, set this to the root origin, not the subpath.
REDIS_URLRedis connection string (e.g. redis://localhost:6379). Kener uses Redis for BullMQ queues, caching, and the scheduler.

App configuration

VariableDefaultDescription
PORT3000Port the Node.js server listens on.
KENER_BASE_PATH(empty)Set to a subpath (e.g. /status) when deploying Kener at a non-root URL. Requires the matching subpath image tag (e.g. latest-status).
NODE_ENVproductionAlready set in the Docker image. Do not change unless you know what you’re doing.
BODY_SIZE_LIMIT3MMaximum request body size for SvelteKit’s adapter-node. Increase if you need to upload larger images.

Database

Kener supports SQLite (default), PostgreSQL, and MySQL via a single DATABASE_URL variable.
VariableDefaultDescription
DATABASE_URLsqlite://./database/kener.sqlite.dbDatabase connection string. Omit to use the default SQLite path.
Connection string formats:
# SQLite (default — no extra service required)
DATABASE_URL=sqlite://./database/kener.sqlite.db

# PostgreSQL
DATABASE_URL=postgresql://user:password@postgres:5432/kener

# MySQL / MariaDB
DATABASE_URL=mysql://user:password@mysql:3306/kener
For production, use PostgreSQL or MySQL with a dedicated database service and persistent volume. See Docker deployment for example Compose configuration.

Email

Kener supports two email providers. Set one or the other — not both.

Resend

VariableDescription
RESEND_API_KEYAPI key from your Resend account.
RESEND_SENDER_EMAILSender address for outgoing emails (e.g. [email protected]).

SMTP

VariableDefaultDescription
SMTP_HOSTSMTP server hostname (e.g. smtp.mailgun.org).
SMTP_PORTSMTP port (typically 587 for TLS, 465 for SSL, 25 for unencrypted).
SMTP_USERSMTP authentication username.
SMTP_PASSWORDSMTP authentication password.
SMTP_SENDERSender address for outgoing emails.
SMTP_SECURE0Set to 1 to enable TLS. Set to 0 for STARTTLS or unencrypted.

Redis

VariableDescription
REDIS_URLRedis connection string (also listed under Required). Supports standard redis:// and rediss:// (TLS) formats.
Examples:
# Local / Docker Compose
REDIS_URL=redis://redis:6379

# Remote with password
REDIS_URL=redis://:[email protected]:6379

# TLS
REDIS_URL=rediss://:[email protected]:6380

Minimal example

The smallest valid .env to start Kener:
KENER_SECRET_KEY=some_secret_key_for_kener
REDIS_URL=redis://localhost:6379
ORIGIN=http://localhost:3000

Full example (Docker Compose)

environment:
  # Required
  KENER_SECRET_KEY: replace_me_with_a_random_string
  ORIGIN: http://localhost:3000
  REDIS_URL: redis://redis:6379

  # Database (default: SQLite)
  # DATABASE_URL: sqlite://./database/kener.sqlite.db
  # DATABASE_URL: postgresql://user:password@postgres:5432/kener
  # DATABASE_URL: mysql://user:password@mysql:3306/kener

  # Email — Resend
  # RESEND_API_KEY: re_xxxxxxxxxxxx
  # RESEND_SENDER_EMAIL: [email protected]

  # Email — SMTP
  # SMTP_HOST: smtp.mailgun.org
  # SMTP_PORT: 587
  # SMTP_USER: [email protected]
  # SMTP_PASSWORD: your_smtp_password
  # SMTP_SENDER: [email protected]
  # SMTP_SECURE: 0

  # Advanced
  # PORT: 3000
  # KENER_BASE_PATH:
  # BODY_SIZE_LIMIT: 3M

Build docs developers (and LLMs) love