
Un CMS pour un petit serveur. Pas de JavaScript, rien de chez des tiers, autant de sites que l’on veut dans un seul programme.

Sans JavaScript
Ni les sites ni l’administration n’en ont besoin.
Rien d’ailleurs
Pas de CDN, pas de polices web, pas de suivi, donc pas de bannière de cookies.
IA via MCP
Claude ou ChatGPT gèrent le contenu, avec environ 140 outils.
Un seul programme
Un binaire Go, un fichier SQLite, autant de sites que l’on veut.
Bêta 0.1.0 : holzcloud-CMS peut être exploité tant que l’on fait des sauvegardes, mais l’ensemble des fonctions n’est pas encore figé. Fonctions, réglages et contrat des modèles peuvent changer ou disparaître à chaque version ; le schéma et les migrations ne sont pas promis stables. Sauvegardez avant une mise à jour et lisez les notes de version.
holzcloud-CMS, c’est un programme Go et un fichier SQLite. Pas de PHP, pas de serveur de base de données, pas de Node. Une installation porte autant de sites que l’on veut, chacun avec plusieurs domaines, son propre design et ses propres rédacteurs.
Sans JavaScript, rien d’ailleurs
- Les sites n’envoient aucun JavaScript. Les thèmes importés non plus : une archive avec un script, un
onclickou un lienjavascript:est refusée. - L’administration marche aussi sans JavaScript. Chaque action est un formulaire ordinaire. htmx ne fait que l’accélérer.
- Rien n’est chargé chez des tiers à l’exécution. Les polices sont intégrées, chaque réponse porte la Content-Security-Policy
default-src 'self'. Des connexions sortantes n’existent que là où on les configure soi-même : son propre serveur de messagerie et, dans la boutique, Payrexx.
Un tel site est rapide sur n’importe quel téléphone, continue de marcher quand le service d’un autre tombe, et n’a pas besoin de bannière de cookies.
IA via MCP
Sous /ai, holzcloud-CMS parle le Model Context Protocol. Claude, ChatGPT ou un éditeur peuvent écrire des pages, téléverser des images, ordonner des menus et traduire sans se connecter à l’interface web. Dans Claude ou ChatGPT, il suffit d’indiquer l’adresse et d’accepter une fois (OAuth). Les clés existent en trois niveaux (read, content, admin) et se limitent à certains sites et à une durée. Les nouvelles pages sont toujours des brouillons, chaque modification reste conservée comme version. Le serveur n’appelle jamais lui-même une IA. Plus dans la doc de l’accès IA. Ce site est géré ainsi.
Version 0.1.0 — version sur GitHub. Tourne dans le cluster et porte trois sites : celui-ci et deux sites clients, une installation, des domaines différents.
Fonctions

Des pages en blocs
Texte, image, galerie, cartes, citation ou appel à l’action s’empilent et se déplacent, avec l’aperçu dans le vrai design à côté. On peut créer ses propres types de blocs par site.

Huit thèmes, réglables
Fond, couleur du texte, accent, police et arrondi des coins se règlent par site. Le contraste est vérifié tout de suite selon WCAG.

Multilingue
Jusqu’à huit autres langues par site, avec hreflang et sélecteur de langue. Une matrice montre quelle page manque dans quelle langue, un clic crée la version.

Boutique avec TVA suisse
Produits, stock et commandes, avec facture et bon de livraison. Prix en CHF avec 8,1, 2,6 et 3,8 %. Paiement sur facture, par avance ou en ligne avec TWINT, PostFinance ou carte via Payrexx. Panier et caisse sont des formulaires ordinaires.

Contrôle SEO dans l’éditeur
L’onglet « SEO » dit ce qui manque à la page enregistrée : description trop courte, un deuxième H1, images sans description. Rien n’est bloqué. S’y ajoutent un rapport pour tout le site, un plan du site avec images et /llms.txt.




En plus : une médiathèque avec albums (données d’appareil et GPS supprimées à l’envoi), versions avec comparaison et restauration, types de contenu personnalisés avec 16 sortes de champs, formulaires avec quarantaine anti-spam sans stockage d’IP, deux facteurs obligatoire pour les administrateurs, plugins en WebAssembly dans un bac à sable, export en archive lisible ou en HTML statique, import depuis WordPress et CSV. L’administration fonctionne jusque sur téléphone (390 px).
Installation
Télécharger holzcloud-linux-amd64 depuis la dernière version, comparer avec le fichier .sha256, le rendre exécutable et le lancer. Ouvrir ensuite /admin : à la première visite, on crée le compte administrateur, puis le second facteur. Un conteneur existe sous ghcr.io/holzcloud/holzcloud-cms ; pour compiler soi-même, Go 1.26 suffit. Unité systemd, Caddyfile et script de sauvegarde se trouvent dans le guide d’exploitation.
Qui tourne aussi dessus
Deux autres sites tournent sur la même installation, avec leurs propres domaines, design et types de contenu.

Kinder und Bauernhof – Seehof
Une petite ferme de la biodiversité à Seewen SO : brebis laitières de Frise orientale, cochons laineux, poules et chèvres. La boutique de la ferme fonctionne sur demande plutôt qu’avec des prix.

Delnahida
Élevage de chiens Löwchen et Perro de Agua Español. Vingt pages, quatre-vingt-cinq images, du même binaire.
Autres projets
holzkube-manager, le gestionnaire de clusters Kubernetes sur Talos, holzBar, le gestionnaire de barre des menus pour macOS, et holzWave, le terminal écrit en Rust. Retour à l’accueil.