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 && ./installerFrom a checkout with the dev toolchain, run the same wizard with:
pnpm dev:tuiWhat it does
The wizard is menu-driven. Its three main actions:
| Action | What it does |
|---|---|
| Installieren | Generate secrets, write .env, build images, start the stack, wait for health. |
| Konfigurieren | Change the public URLs of an existing install and restart; secrets stay read-only. |
| Updaten | git 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.