DocsGetting started

Installing KHUB

Download the release archive, pick a deploy target, and run one script. Docker, Podman, and Kubernetes are all included.

1

Download and extract the release archive

Grab the latest release archive and unpack it — it contains the application images' compose/manifest definitions plus the scripts/ directory that drives every deploy target.

bash
curl -LO https://khub.infanyx.com/khub.zip
unzip khub.zip
cd khub
2

Pick a deploy target

Each target has its own script under scripts/, all driven the same way. Use whichever matches how you already run infrastructure — there's no functional difference in what gets deployed.

TargetScriptRequirements
Docker./scripts/docker/deploy.shDocker Engine 24+ and the Compose plugin
Podman./scripts/podman/deploy.shPodman 4.7+ (rootless-capable)
Kubernetes./scripts/k8s/deploy.shkubectl configured against the target cluster
3

Pick a mode

Every script takes the same three mode flags, which control TLS, secret generation, and logging verbosity — not which components get deployed.

FlagMode
--selfSelf-hosted default. Generates its own secrets on first run and is the right choice for most teams running a single instance.
--prodProduction hardening. Requires a real domain and TLS certificate, disables debug logging, and refuses to start unless every secret is explicitly set rather than auto-generated.
--devLocal/dev mode. Self-signed TLS and hot-reload-friendly defaults — disposable, not for anything you care about keeping.
example — self-hosted, on Docker
./scripts/docker/deploy.sh --self

macOS: install GNU sed first#

The deploy scripts rely on GNU sed's -i and -E behavior, which macOS's built-in BSD sed doesn't support. Before running any deploy.sh on macOS, install gnu-sed (a.k.a. sed-gnu) via Homebrew and put it ahead of the system sed on your PATH — otherwise the script will fail partway through generating config.

macOS only
brew install gnu-sed
echo 'export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"' >> ~/.zshrc
exec zsh

Linux and WSL already ship GNU sed by default — nothing to install there.

Verify it's running#

The script prints the URL it bound once every container reports healthy. From the khub directory you can also check status directly:

bash
docker compose ps
docker compose logs -f api

Once every service is healthy, open the printed URL and continue with Getting started to create your first organization.