Wiki
Self-hosting

The installer

The guided terminal wizard that installs, configures, and updates the stack.

The installer (apps/tui) is a self-contained terminal wizard — the recommended way to install, reconfigure, and update a Wiki deployment. It needs no Node, pnpm, or Bun: it is shipped as a single binary on GitHub Releases.

Getting it

The installer operates on a checkout of this repository — it looks for docker-compose.yml in the current directory and its parents — so clone first, then download the binary for your platform from GitHub Releases into the checkout:

git clone https://github.com/lucabmn/Wiki.git && cd Wiki
curl -fsSLo installer "https://github.com/lucabmn/Wiki/releases/latest/download/nilovon-wiki-installer-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/x64/;s/aarch64/arm64/')"
chmod +x installer && ./installer

From a checkout with the dev toolchain, run the same wizard with:

pnpm dev:tui

What it does

The wizard is menu-driven. Its three main actions:

ActionWhat it does
InstallierenGenerate secrets, write .env, build images, start the stack, wait for health.
KonfigurierenChange the public URLs of an existing install and restart; secrets stay read-only.
Updatengit pull --ff-only, rebuild, restart — with the TLS overlay if the install is HTTPS.

For a public install, enter https:// / wss:// URLs plus a Let's Encrypt email in the form, and the wizard brings the stack up behind the bundled Caddy TLS proxy automatically.

The installer is the operations front door: everything it does has a documented manual docker compose equivalent, so you are never locked into the wizard.

Under the hood

The installer generates each secret from the system CSPRNG (the auth and storage secrets are equivalent to openssl rand -base64 32, the database password to openssl rand -hex 18), writes the .env files with mode 0600, and refuses to continue while a value is too short or a URL is malformed. Re-running Installieren over an existing deployment regenerates every secret — the new database password will not match the existing Postgres volume — so use Konfigurieren for installs that already run. Migrations always run inside the stack, so the installer never touches your database directly.

On this page