"Configuration" throughout the documentation and codebase refers to these variables which are statically set when the process launches. Changing them requires a restart, however they don't need to be changed much once set.

Configuration is done via environment variables. The following variables are available:

Core parameters

These settings are necessary to customise for pretty much all production installations.


default: false

Used for logging and switching some behaviour to use mocks instead of real services.

When true:

  • logs will be output in JSON.
  • emails will be sent instead of logged.
  • SMS messages will be sent instead of logged.


default: a SQLite file located at ./data/data.db

This specifies the primary database Storyden will persist all its main data in. It can accept Postgres or SQLite URL-style strings.



The interface bind address. Usually you won't ever need to change this.


default: localhost

This is important as it affects the ability for users to authenticate. It's used for both cookies and WebAuthn.

Warning: Changing this will break WebAuthn/Passkey sessions. There's a planned workaround coming but currently it's not recommended you switch domains if you allow users to authenticate with WebAuthn/Passkey.


default: 0000000000000000

An encryption key for secure cookies. Do not leave this as the default value for production installations. Changing this value will invalidate all active sessions.

Changing the session key will invalidate all existing sessions and force all users to log in again. It's best to set this once and only change it if you believe the key has been compromised.


default: http://localhost:3000

The public address for the frontend application. Change this to your production frontend URL with which you access the web application from via a browser. In production it should not have a port number and should use https.



default: empty string - local filesystem storage

When unset, all persistent storage of files (avatars, uploads, assets, etc) will use the local filesystem.

When set to s3, the other S3_ prefixed variables are required and all persistent storage of files will use S3.


When ASSET_STORAGE_TYPE specifies local file storage, this variable controls where the files are stored.

S3 Configuration

The following variables are required when ASSET_STORAGE_TYPE is set to s3.



These are often used during development of Storyden itself, plugins or frontends and rarely need to be set by end-users.


default: info

See zapcore.Level (opens in a new tab).


default: (empty)

Internal or advanced use only. A directory path that, when non-empty, be used to run the frontend Next.js app from.

The all-in-one Docker image uses this to ensure the frontend process is a child process of the backend process and they start/stop together. If you're self-hosting outside of Docker, you should not need to use this because it's simpler to use your preferred job management solution (such as systemd) to manage both processes independently.