Nuovo sito - Parte 2
Nuovo sito 2026
Seconda parte
Con questo articolo proseguiamo la serie relativa al restyling del sito che ho effettuato quest'anno.
Vi invito a leggere la prima parte se ancora non lo avete fatto.
Nel frattempo ho continuato a lavorare su altre funzionalità, che vi presenterò adesso.
Zola
Eravamo rimasti su Zola che vi ricordo essere un motore per creare siti statici, dove gli articoli (o pagine) vengono scritti in linguaggio Markdown e attraverso un unico binario eseguibile vengono trasformati in pagine HTML.
Innanzitutto la prima cosa che mi è piaciuta di Zola è che si tratta di un solo eseguibile da installare, e quindi molto semplice da gestire. La seconda cosa è stato l'uso di Markdown come linguaggio di scrittura, e la terza il supporto a molti temi, grazie ai quali personalizzare e diversificare il proprio sito.
Dato che il sito generato è statico, è per sua definizione sicuro, dimenticate le vulnerabilità di WordPress e software simili.
Versionamento e automatismi
Torniamo un attimo alle pagine del sito scritte in Markdown. Ho deciso di versionarle con Git sulla mia istanza selfhosted di Forgejo e usare le sue actions per compilare ed effettuare il deploy automatico del sito attraverso le actions. Ho anche un'istanza di test del sito, in modo da poter visualizzare e testare prima le nuove modifiche.
La pipeline di build e deploy ha superato le 200 righe! Succede quando mi faccio prendere la mano dalle novità e voglio sempre introdurre nuove funzionalità alla ricerca della perfezione (che non arriverà mai, c'è sempre qualcosa da migliorare).
Limiti
Dopo aver elogiato i vantaggi di Zola, arriviamo ai suoi limiti, che sono intrinsechi a tutti i generatori di pagine statiche. Scegliendo questa soluzione, dovremmo teoricamente rinunciare a commenti e statistiche sul sito. Ma ecco come ho girato intorno al problema: ho aggiunto queste funzionalità tramite JavaScript eseguito lato client.
Entrambi i software che seguono sono stati configurati per rispondere solo in locale (127.0.0.1) perché ho configurato il mio webserver in modo da agire come reverse proxy.
Commenti
Ho usato il software Isso, che ho installato con docker-compose:
root@tex:/opt/isso# cat docker-compose.yml
services:
isso:
image: ghcr.io/isso-comments/isso:release
ports:
- "127.0.0.1:8085:8080"
volumes:
- ./data/config:/config
- ./data/db:/db
Ho scelto Isso perché non ha pubblicità, non traccia gli utenti ed è leggero.
Statistiche
Ho usato un software molto semplice, di nome GoatCounter. L'interfaccia è molto spartana, ma per quelle che sono le mie esigenze va più che bene! Alla fine a me interessa vedere quali sono gli argomenti più seguiti o le pagine più lette, non ho bisogno di funzionalità avanzate, ma soprattutto perché GoatCounter rispetta la privacy, non richiede banner dei cookie invasivi ed è infinitamente più leggero di Matomo.
Installato con docker-compose, semplicemente così:
services:
goatcounter:
image: arp242/goatcounter
ports:
- "127.0.0.1:8086:8080"
volumes:
- ./data:/home/goatcounter/goatcounter-data
environment:
- GOATCOUNTER_TLS=http
- GOATCOUNTER_SMTP=smtps://${SMTP_USER}:${SMTP_PASS}@${SMTP_HOST}
- GOATCOUNTER_EMAIL-FROM=${GC_EMAIL_FROM}
- GOATCOUNTER_ERRORS=mailto:${GC_ERRORS}
- GOATCOUNTER_DB=sqlite+./goatcounter-data/db.sqlite3
E un banale file .env come questo:
# Credenziali SMTP
SMTP_USER=me@email.com
SMTP_PASS=VerySecure
SMTP_HOST=smtp.mysite.com:465
# Configurazione GoatCounter
GC_EMAIL_FROM=me@email.com
GC_ERRORS=me@email.com
Ho configurato SMTP perché ricevo una notifica per ogni nuovo commento, quindi se avete letto fino a qui, adesso dovete per forza lasciarmene uno sotto questo articolo!
Anticipazioni
Nella terza (e ultima) parte di questa serie approfondirò:
- Galleria Immagini: come ho implementato le immagini che trovate sul sito? (le immagini vengono pescate da Nextcloud!)
- Form della pagina contatti: sì, un form in un sito statico
- Immagine Docker custom: la mia immagine Docker personalizzata che uso per compilare il sito nella CI/CD di Forgejo