Install and run Quilzo in production
Get the program, check it came from this project, and run it the way it is meant to be run.
Quilzo is one static binary with no dependencies to install. It runs as two processes from the same store: quilzo serve, the admin, which belongs on loopback; and quilzo site, the public site, which has no editing surface at all.
Get the program
No release is published yet. Build it from source, or build the container image from the source.
Build it
Go 1.27 and nothing else:
go.modrequires no module.git clone https://github.com/Quilzo/Quilzo && cd Quilzo go build -o quilzo ./cmd/quilzo sudo install -m 0755 quilzo /usr/local/bin/quilzoOr build the container
Built on
gcr.io/distroless/static-debian12:nonroot: the binary, CA certificates and a passwd entry. No shell and no package manager.docker build -t quilzo . docker run --rm -v quilzo:/srv quilzo --root /srv/store init docker run -p 8081:8081 -v quilzo:/srv quilzo --root /srv/store site --addr 0.0.0.0:8081
Each release will publish signed binaries for Linux, macOS and Windows on amd64 and arm64, and a container image. INSTALL says how to check them: the checksum, and the build provenance that proves this project's release workflow built the file from a tag.
Run it for real
Keep the admin on loopback
quilzo servelistens on127.0.0.1:8080by default. Reach it through your own authenticating proxy or a VPN, and set its public address so sign-in flows and connected apps know where they are:quilzo config set admin.base_url https://quilzo.example.comPut the site on the internet, behind TLS
quilzo site --addr 0.0.0.0:8081 --base-url https://example.orgTerminate TLS in front of both processes.
--base-urlis needed for the sitemap and feeds.Write the audit log as its own account
quilzo logdruns the log writer as a separate user the content platform cannot impersonate;quilzo logd statussays whether the separation is in force.Encrypt what is stored
quilzo vault enable # prints the key once quilzo vault rotate # a new key from now on quilzo vault rewrap # move existing objects onto itThe key comes from
QUILZO_KEY,QUILZO_KEY_FILEorQUILZO_KEY_COMMAND.Read the posture scan
Assurance › Security or
quilzo posture scanreads this deployment and lists what is thin, with the reason and the fix (see Security posture).
Back up and upgrade
The store directory is the only state Quilzo has. Back it up and you have backed up content, history, policy, credentials, agents and the audit log; quilzo verify re-hashes every object after a restore. To upgrade, replace the binary and restart both processes. The full operations guide is INSTALL.