holzcloud
Menu
holzcloud-CMS: una nuvola con anelli di crescita su un asse di legno, accanto il nome, «A self-hosted CMS that needs no JavaScript and loads nothing from anywhere else.» e le parole chiave Zero JavaScript, No external dependencies, Single binary, Many websites

Beta

Senza JavaScript

AGPL-3.0

Un CMS per un piccolo server. Niente JavaScript, niente da terzi, tutti i siti che si vogliono in un solo programma.

Editor a blocchi con un blocco immagine e testo a sinistra e l’anteprima dal vivo a destra

Senza JavaScript

Né i siti né l’amministrazione ne hanno bisogno.

Niente da altrove

Niente CDN, niente web font, niente tracciamento, quindi niente banner dei cookie.

IA tramite MCP

Claude o ChatGPT curano i contenuti, con circa 140 strumenti.

Un solo programma

Un binario Go, un file SQLite, tutti i siti che si vogliono.

Beta 0.1.0: holzcloud-CMS si può far girare con i backup, ma l’insieme delle funzioni non è ancora congelato. Funzioni, impostazioni e contratto dei template possono cambiare o sparire a ogni versione; schema e migrazioni non sono promessi stabili. Prima di aggiornare fate un backup e leggete le note di rilascio.

holzcloud-CMS è un programma Go e un file SQLite. Niente PHP, niente server di database, niente Node. Un’installazione regge tutti i siti che si vogliono, ognuno con più domini, un proprio design e propri redattori.

Senza JavaScript, niente da altrove

  • I siti non inviano alcun JavaScript. Nemmeno i temi caricati: un archivio con uno script, un onclick o un link javascript: viene rifiutato.
  • Anche l’amministrazione funziona senza JavaScript. Ogni azione è un normale modulo. htmx la rende solo più veloce.
  • In esecuzione non si carica nulla da terzi. I caratteri sono compilati dentro, ogni risposta porta la Content-Security-Policy default-src 'self'. Connessioni verso l’esterno ci sono solo dove le si configura da sé: il proprio server di posta e, nel negozio, Payrexx.

Un sito così è veloce su qualsiasi telefono, continua a funzionare quando cade il servizio di qualcun altro e non ha bisogno di un banner dei cookie.

IA tramite MCP

Sotto /ai, holzcloud-CMS parla il Model Context Protocol. Claude, ChatGPT o un editor possono scrivere pagine, caricare immagini, ordinare menu e tradurre senza accedere all’interfaccia web. In Claude o ChatGPT basta inserire l’indirizzo e acconsentire una volta (OAuth). Le chiavi hanno tre livelli (read, content, admin) e si limitano a singoli siti e a una durata. Le nuove pagine sono sempre bozze, ogni modifica resta come versione. Il server non chiama mai da sé un’IA. Di più nella documentazione sull’accesso IA. Questo sito viene curato così.

Versione 0.1.0 — release su GitHub. Gira nel cluster e porta tre siti: questo e due siti di clienti, un’installazione, domini diversi.

Funzioni

Editor a blocchi con un blocco immagine e testo a sinistra e l’anteprima dal vivo a destra

Pagine a blocchi

Testo, immagine, galleria, schede, citazione o invito all’azione si impilano e si spostano, con l’anteprima nel design vero accanto. Si possono creare tipi di blocco propri per ogni sito.

Impostazioni del design con il modello attivo, colori e carattere a sinistra e anteprima dal vivo del sito a destra

Otto temi, regolabili

Sfondo, colore del testo, accento, carattere e arrotondamento degli angoli si impostano per sito. Il contrasto viene controllato subito secondo WCAG.

Matrice delle traduzioni con una riga per pagina, colonne per inglese e francese e un pulsante di creazione per ogni versione mancante

Multilingue

Fino a otto altre lingue per sito, con hreflang e selettore di lingua. Una matrice mostra quale pagina manca in quale lingua, un clic crea la versione.

Panoramica del negozio con fatturato del mese, ordini aperti, prodotti quasi esauriti, elenco di compiti e grafico del fatturato per settimana

Negozio con IVA svizzera

Prodotti, scorte e ordini, con fattura e bolla di consegna. Prezzi in CHF con 8,1, 2,6 e 3,8 %. Si paga su fattura, in anticipo o online con TWINT, PostFinance o carta tramite Payrexx. Carrello e cassa sono normali moduli.

Editor di pagina con la scheda SEO aperta: un elenco di rilievi come descrizione troppo corta, titolo di livello 1 nel testo e nessuna immagine di anteprima

Controllo SEO nell’editor

La scheda «SEO» dice cosa manca alla pagina salvata: descrizione troppo corta, un secondo H1, immagini senza descrizione. Non si blocca nulla. In più c’è un rapporto per l’intero sito, una sitemap con le immagini e /llms.txt.

Mediateca con area di caricamento, barra laterale con filtri e album e una griglia di immagini
Mediateca con album e filtri
Confronto di due versioni di una pagina, righe rimosse in rosso e righe nuove in verde
Versioni di una pagina a confronto
Mediateca con area di caricamento, barra laterale con filtri e album e una griglia di immagini
Mediateca con album e filtri
Confronto di due versioni di una pagina, righe rimosse in rosso e righe nuove in verde
Versioni di una pagina a confronto

Inoltre: una mediateca con album (dati della fotocamera e GPS rimossi al caricamento), versioni con confronto e ripristino, tipi di contenuto propri con 16 tipi di campo, moduli con quarantena antispam senza salvare IP, doppio fattore obbligatorio per gli amministratori, plugin in WebAssembly in una sandbox, esportazione come archivio leggibile o HTML statico, importazione da WordPress e CSV. L’amministrazione funziona fino al telefono (390 px).

Installazione

Scaricare holzcloud-linux-amd64 dall’ultima release, confrontarlo con il file .sha256, renderlo eseguibile e avviarlo. Poi aprire /admin: alla prima visita si crea l’account amministratore, poi il secondo fattore. Come container c’è ghcr.io/holzcloud/holzcloud-cms; per compilare da sé basta Go 1.26. Unit systemd, Caddyfile e script di backup sono nella guida all’esercizio.

Chi altro ci gira

Sulla stessa installazione girano altri due siti, con domini, design e tipi di contenuto propri.

Altri progetti

holzkube-manager, il gestore di cluster Kubernetes su Talos, holzBar, il gestore della barra dei menu per macOS, e holzWave, il terminale scritto in Rust. Torna alla home.