holzcloud

One binary, many websites — and no cookie banner.

A small CMS for a small server. Go, SQLite and htmx: one installation carries any number of websites with several domains each. Kirby wants a licence per domain — €99, and another one for every further site. WordPress can do multisite, but only after a network setup and with a plugin collection that wants updates every week. Here it is one binary and one SQLite file, under AGPL-3.0.

At runtime none of these sites loads anything from third parties — no fonts, no scripts, no embedded frames. That is why none of them needs a cookie banner; it is not a setting, it is a property. And what a page is made of is decided by the website itself: nine input types, repeatable groups, sections and conditions — without a new program version, without ACF and without a line of PHP.

One installation

The separation runs on the Host header: per website its own domains, its own design, its own content types, its own permissions.

Custom content types

Beyond page and post: product, event, recipe, animal — with their own name across the whole screen, their own overview and their own filter.

Swiss variants

de-CH, fr-CH and it-CH sit beside their base languages: no ß, «angled quotation marks», Natel instead of Handy. A Swiss browser gets them on its own.

Privacy by construction

Images and videos lose their metadata before they reach the disk — in an MP4 the box holding the location is overwritten with zeros. Two-factor is compulsory for administrators, not a plugin.

No hostage situation

A whole website out as one readable archive, and back in again. A site is not a hostage to the machine it runs on.

A way out of WordPress

Read a WXR file: pages, posts, addresses, tags. Anything unpublished arrives as a draft; shortcodes are removed rather than guessed.

In use. It runs in the cluster and already carries client sites — the same installation, different domains.

What else runs on it

This page is not the only one. Two more sites sit on the same installation — their own domains, their own design, their own content kinds, the same SQLite file.

Go

SQLite

htmx

The holzcloud-cms overview with three websites, page counts and open items per site.
Overview: three sites in one installation, with what is still open per site.
The holzcloud-cms website list with template, domain count and status per site.
Websites: template, domains and status per site.