Installing KHUB
Download the release archive, pick a deploy target, and run one script. Docker, Podman, and Kubernetes are all included.
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.
curl -LO https://khub.infanyx.com/khub.zip
unzip khub.zip
cd khubPick 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.
| Target | Script | Requirements |
|---|---|---|
| Docker | ./scripts/docker/deploy.sh | Docker Engine 24+ and the Compose plugin |
| Podman | ./scripts/podman/deploy.sh | Podman 4.7+ (rootless-capable) |
| Kubernetes | ./scripts/k8s/deploy.sh | kubectl configured against the target cluster |
Pick a mode
Every script takes the same three mode flags, which control TLS, secret generation, and logging verbosity — not which components get deployed.
| Flag | Mode |
|---|---|
--self | Self-hosted default. Generates its own secrets on first run and is the right choice for most teams running a single instance. |
--prod | Production 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. |
--dev | Local/dev mode. Self-signed TLS and hot-reload-friendly defaults — disposable, not for anything you care about keeping. |
./scripts/docker/deploy.sh --selfmacOS: 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.
brew install gnu-sed
echo 'export PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"' >> ~/.zshrc
exec zshLinux 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:
docker compose ps
docker compose logs -f apiOnce every service is healthy, open the printed URL and continue with Getting started to create your first organization.
