Comma commentare
Dal 31 marzo 2024 muut cessa il servizio e sempre in quella data i commenti sul blog di Lucio Bragagnolo non saranno più gestibili con quella piattaforma.
Si impone un cambiamento in brevissimo tempo e il motore da scegliere deve rispondere a questa richiesta
Sarebbe bella una soluzione self-hosted, su cui avere il controllo e, certo, l’onere della manutenzione e del supporto. Cose che non serve avere con soluzioni esterne come era Muut, peraltro esposte a rischi come una chiusura improvvisa, indipendente dalla nostra volontà.
Per cominciare ho dato un’occhiata alla pagina dedicata di hugo, in cui sono presentate diverse soluzioni. Escludendo i programmi commerciali, ho ristretto il campo di ricerca.
Comments ¶
Comments is a federated comment system built on Matrix. It respects your privacy, and puts you in control. The entire thing is completely free and open source.
Può essere self-hosted su un proprio server Matrix.
Comentario ¶
Comentario is an open-source web comment engine, which adds discussion functionality to plain, boring web pages.
Necessita di due componenti fondamentali:
- Database SQLite o PostgreSQL (meglio il secondo)
- Server con funzioni di backend su architettura linux_amd64, linux_arm64
Il database può girare sulla stessa macchina, altre macchine virtuali o nel cloud
Se si potesse avere il tutto su una immagine docker o simili forse si semplifica il deployment e il mantenimento.
Per un esempio di configurazione vedi qui.
Comma ¶
Comma: a super simple comment server for static websites, in go.
Questo sembra abbastanza facile da implementare. Qualche aggiustamento al file di configurazione e un partial che sostituisce l’attuale muut.html, documentazione all’osso, ma sufficiente. È scritto in golang, come hugo, e all’inizio serve avere go installato su una macchina.
Giscus ¶
A comments system powered by GitHub Discussions. Let visitors leave comments and reactions on your website via GitHub! Heavily inspired by utterances.
Remark42 ¶
Remark42 allows you to have a self-hosted, lightweight, and simple (yet functional) comment engine, which doesn’t spy on users. It can be embedded into blogs, articles or any other place where readers add comments.
È istallabile via Docker ma c’è da smanettare un bel po'.
Staticman ¶
Anche questo si appoggia a GitHub Pages. Lo eviterei.
Talkyard ¶
È open source e istallabile con Docker. La macchina virtuale deve essere Debian 11 o 12 con almeno 2 GB RAM. Il modello di business è quello di usare i loro server a pagamento oppure può essere gestito su una propria macchina, ma potrebbero fare qualche scherzo, cito
You should be familiar with Linux, Bash and Git. Otherwise you might run into problems. For example, there might be Git edit conflicts, if you and we change the same file then you need to know how to resolve those edit conflicts.
Non è decisamente il mio favorito.
utterances ¶
Vedi Giscus.
Dopo qualche riflessione ho suggerito Comma e ho iniziato le prove in locale seguendo questi passi
- ho istallato con homebrew golang
- ho clonato la repo di Comma
- ho istallato sul Mac l’applicazione comma entrando nella directory src
go install .
L’eseguibile comma finisce nella directory ~/go/bin/
I passi ulteriori si sono svolti all’interno dei file di configurazione del blog. Ho aggiunto il css per i commenti e creato un partial commenti.html da usare nei singoli post. L’uso dei partial è ben documentato sul sito di hugo.
Il funzionamento base di Comma consiste nel far partire un servizio server che si occupa della gestione dei commenti al quale punta il server web del blog. Per far comunicare i due sistemi nel file toml di configurazione del blog ho aggiunto questa riga: commentServer = “http://localhost:5888/comments”.
Dimenticavo una delle caratteristiche forti: i commenti sono conservati in una cartella decisa da chi amministra il blog e posizionata dove vuole. Basterà passare il parametro giusto all’eseguibile comma. Per le prove in locale ho creato una directory commenti, grande fantasia.
Fatti tutti passi propedeutici è arrivato il momento di provare il funzionamento del marchingegno. Così in una finestra del terminale ho lanciato il server locale del blog e in un’altra il server comma con il comando go/bin/comma ~/commenti localhost:5888
.
In fondo ai post è comparsa la sezione per i commenti e ho cominciato a scrivere qualcosa. Man mano che procedevo la cartella commenti si popolava di file corrispondenti ai singoli commenti. Evviva.
Una spiegazione dei campi da riempire è dovuta. Il primo è autoesplicativo. Il secondo richiede un indirizzo e-mail che non verrà esposto pubblicamente, ma solo visibile nel file associato al commento cui ha accesso chi amministra il blog. Il terzo campo, facoltativo, permette di linkare il nome del commentatore al proprio sito web. Il quarto è un campo di controllo che accetta valori predefiniti nella configurazione. L’ultimo non vale la pena di commentarlo.
Adesso, se Lucio approva, sarà da vedere se tutto funzionerà in produzione. Sulla macchina virtuale in cui gira il blog dovrà partire un demone sempre attivo per la gestione di comma. Per fortuna un esempio è fornito dallo stesso Autore del programma.
In Linux, un file systemd ben formato segue tipicamente queste convenzioni:
- Il file deve essere posizionato sotto
/etc/systemd/system/
o/usr/lib/systemd/system/
per i servizi definiti dall’utente, e sotto/lib/systemd/system/
per i servizi definiti dal sistema. - Il nome del file dovrebbe avere estensione .service. Ad esempio,
myservice.service
. - Il file deve essere in formato testo semplice e contenere direttive Systemd valide racchiuse tra parentesi quadre (
[...]
). - La prima riga del file dovrebbe contenere l’intestazione
[Service]
seguita da una descrizione del servizio nella direttivaDescription=
. - Le righe successive definiscono varie impostazioni per il servizio, come modalità di avvio, proprietà utente e gruppo, dipendenze, variabili d’ambiente, directory di lavoro, ecc. Ad esempio:
[Unit]
Description=comma backend
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/home/dieter/comma /home/dieter/<comments directory> :<port> [form value for "special" form fields]
Restart=always
RestartSec=1
User=dieter
Group=dieter
[Install]
WantedBy=graphical.target
- Per abilitare o avviare il servizio, usare il comando
systemctl
:- Per abilitare il servizio per l’avvio automatico al boot:
sudo systemctl enable myservice.service
- Per avviare immediatamente il servizio:
sudo systemctl start myservice.service
- Per abilitare il servizio per l’avvio automatico al boot:
E speriamo bene.