Skip to main content

Configuration

All runtime configuration is done through environment variables passed to the app container.

Environment variables

VariableRequiredDefaultDescription
SECRET_KEY_BASEKey used to sign cookies and tokens. Must be at least 64 characters. Generate with openssl rand -base64 48
DATABASE_URLFull Ecto/PostgreSQL connection string, e.g. ecto://user:pass@host/db
PHX_HOSTlocalhostPublic hostname of the application. Used to build absolute URLs
PORT4000Port that the application listens on inside the container
POSTGRES_PASSWORDkinkeepPassword for the kinkeep PostgreSQL user (used by the db service)
POOL_SIZE10Number of database connections in the pool

Persistent volumes

VolumeContents
db_dataPostgreSQL data directory
uploadsPhotos and logos uploaded by users

Back up both volumes regularly if you care about your data.

Running behind a reverse proxy

If you put Kinkeep behind Nginx, Caddy, or Traefik:

  1. Set PHX_HOST to your public domain.
  2. Forward port 4000 from the container.
  3. Make sure the proxy passes the X-Forwarded-For and X-Forwarded-Proto headers so that Phoenix can reconstruct the correct base URL.

Example Caddy snippet:

kinkeep.example.org {
reverse_proxy localhost:4000
}