Skip to main content

Installation via docker compose

Docker compose is the recommended install method.

Step 1: Clone the files​

At the moment, the only way to download the app is to clone it with git.

git clone https://github.com/konditori/kondis.git

Then enter the directory

cd kondis

Step 2: Populate the env file​

Next, setup the environment file docker/.env. You can begin by copying the sample env file

cp docker/example.env docker/.env

Then edit the file to suit your needs. Here are the most important variables:

KONDIS_DATA_LOCATION is the host directory for application data. PostgreSQL uses a Docker-managed volume, which avoids filesystem compatibility problems on macOS and Windows.

Default environmental variable content
# Copy this file to docker/.env and edit it to get started

# The host location where application data is stored.
# PostgreSQL data is kept in a Docker-managed volume. PostgreSQL 18 creates
# its version-specific data directory inside this volume.
KONDIS_DATA_LOCATION=./data

# By default we disallow public registration for security reasons.
# Only set this to true if you understand the implications.
# KONDIS_REGISTRATION_ENABLED=false
# KONDIS_TRUST_PROXY_HEADERS=false

# Optional fixed initial-setup secret (32-512 characters). If omitted, Kondis
# securely generates one and prints it once. Generate a value with:
# openssl rand -hex 32
# KONDIS_SETUP_TOKEN=
# Cloud Node deployments set both values to use Worker/Durable Object realtime.
# Without them, the self-hosted Node EventRepository remains active.
# KONDIS_REALTIME_PUBLISH_URL=https://api.example.com/api/v1/_internal/realtime-publish
# KONDIS_REALTIME_PUBLISH_TOKEN=

# This is the database password, please change it to a random alphanumeric string
KONDIS_DB_PASSWORD=postgres

# These values can likely be kept as-is
KONDIS_DB_USERNAME=kondis
KONDIS_DB_DATABASE_NAME=kondis

Step 3: Start the containers​

Use the mise script to start the containers.

mise dev-update

This should start the database, server backend, and frontend. If successful, continue to the setup phase.