Sto testando Ghost e la prima cosa che ho notato è che questo CMS non ha un proprio sistema di commenti. Ho cercato alcune strade, ho configurato Disqus e dopo aver visto la mole di dati che voleva ottenere, l’ho completamente rimosso.

Cercavo qualcosa di semplice e completamente user-friendly per non avere ogni volta la rottura di loggarsi per lasciare un commento sotto un post. W l’internet libero!

Dopo molte ricerche, mi sono trovato davanti ad un sistema chiamato ISSO.

ISSO è un semplice sistema di gestione di commenti, completamente personalizzabile, self-hosted, orientato alla privacy e facile da usare, soprattutto dagli utenti. Non richiede nessun login o autenticazione per lasciare un commento. E’ sviluppato da una community su GitHub e questa è la pagina ufficiale.

Per questa guida, installeremo ISSO in un sottodominio. Quindi dovrete create un record di tipo A (e AAAA se usate un IPv6) o CNAME per far puntare il sottodominio isso.vostroserver.com al vostro server principale (IP o Cloudflare tunnel ID).

Installare Isso

# Installare le dipendenze
sudo apt-get install python-dev python-pip sqlite3 build-essential
# Installare isso
sudo pip install isso

Dovrete creare un utente che verrà utilizzato dal sistema per far girare il servizio. Durante la sua creazione vi verrà richiesto di fornire delle informazioni sull’utente. Il “Full Name” sarà l’informazione più importante, dato che sarà il Display Name delle emails di notifica di nuovi commenti. Le altre informazioni possono anche essere vuote.

sudo adduser isso --disabled-login

Create una password per l’utente “isso”

sudo passwd isso

Create un file di configurazione in /etc/isso.d/isso.cfg

sudo nano /etc/isso.d/isso.cfg
# Se la cartella isso.d non dovesse esistere..
sudo mkdir /etc/isso.d
[general]
name = stefanosn
dbpath = /var/lib/isso/comments.db
host =
    http://stefanosn.com
    https://stefanosn.com
max-age = 15m
notify = smtp
log-file = /var/log/isso.log
gravatar = true
gravatar-url = https://www.gravatar.com/avatar/{}?d=identicon
reply-notification = true

[moderation]
enabled = false

[guard]
enabled = true
ratelimit = 1
direct-reply = 3
reply-to-self = true
require-author = false
require-email = false

[smtp]
username = isso
password = # Password utente isso
host = # smtp host
port = # smtp port
security = # dipende dall'host scelto
to = # indirizzo email destinatario
from = # isso@dominio (e.g.: [email protected])
timeout = 10

[admin]
enabled = true
password = TOP_SECRET_PASSWORD

[server]
listen = http://localhost:8080
reload = off
profile = off
public-endpoint = https://isso.stefanosn.com/

l mio server principale Ubuntu sarà dietro un reverse proxy all’indirizzo https://isso.stefanosn.com

Tutte le altre possibili configurazioni lato server (il file qui in alto), sono disponibili direttamente sul sito dello sviluppatore

Date i permessi all’utente isso per scrivere sui seguenti files:

# Create un file isso.log
sudo touch /var/log/isso.log
# Date i privilegi proprietari
sudo chown isso: /var/log/isso.log
# Create una cartella isso in /var/lib
sudo mkdir /var/lib/isso
# Date i privilegi proprietari
sudo chown: isso /var/lib/isso
# Create un file 
sudo touch /var/lib/isso/comments.db
# Date i privilegi proprietari
sudo chown isso: /var/lib/isso/comments.db

Testate la configurazione

# Login da linea di comando come utente isso
su - isso
# Avviate il servizio isso per testarlo
/usr/local/bin/isso -c /etc/isso.d/isso.cfg run

Se non vedete nessun log, tutto funziona correttamente.
CTRL+C per interromperlo.

Create un servizio nella cartella system in modo che isso si avvii automaticamente

sudo nano /etc/systemd/system/isso.service

e incollate la seguente configurazione

[Unit]
Description=lightweight Disqus alternative

[Service]
User=isso
Environment="ISSO_SETTINGS=/etc/isso.d/isso.cfg"
ExecStart=/usr/local/bin/isso -c $ISSO_SETTINGS run

[Install]
WantedBy=multi-user.target

Salvate con CTRL+O ed uscite dall’editor con CTRL+X

Abilitate il servizio e avviatelo

sudo systemctl enable isso
sudo systemctl start isso
sudo systemctl status isso

Quando vedete lo stato del servizio isso “Running”, uscite da quella schermata con “q”

Testate che la pagina di amministrazione di isso funzioni correttamente sul vostro localhost

curl localhost:8080/admin

Configurare NGINX

La configurazione di NGINX è necessaria affinché il servizio sia raggiungibile dell’esterno. Immagino che NGINX sia già installato sul vostro server, per far raggiungere il vostro blog Ghost.

Nel mio caso non utilizzerò la configurazione SSL visto che sto utilizzando Cloudflare Tunnel per esporre i miei servizi su internet. Per il certificato SSL, nel mio caso, ci penserà Cloudflare automaticamente. Se volete sapere come esporre Ghost utilizzando Cloudflare Tunnel, vi rimando al post dedicato.

Create un file di configurazione per NGINX

sudo nano /etc/nginx/site-available/isso

quindi incollate e modificate a seconda delle vostre necessità, la seguente configurazione

server {
  listen 80;
  server_name isso.stefanosn.com;

  location / {
    proxy_pass http://localhost:8080;
  }
}

Abilitate la configurazione creando un symlink alla cartella sites-enabled

sudo ln -s /etc/nginx/site-available/isso /etc/nginx/site-enabled/

Riavviate il servizio NGINX

sudo systemctl restart nginx

Testate la configurazione con

curl https://isso.vostrosito.com/admin

Dovreste ricevere un documento HTML, del genere:

root@ghost:~# curl https://isso.stefanosn.com/admin
<html>
<head>
  <title>Isso admin</title>
  <link type="text/css" href="https://isso.stefanosn.com//css/isso.css" rel="stylesheet">
  <link type="text/css" href="https://isso.stefanosn.com//css/admin.css" rel="stylesheet">
</head>
<body>
  <div class="wrapper">
    <div class="header">
      <header>
        <img class="logo" src="https://isso.stefanosn.com//img/isso.svg" alt="Wynaut by @veekun"/>
        <div class="title">
          <a href="./">
            <h1>Isso</h1>
            <h2>Administration</h2>
          </a>
        </div>
      </header>
    </div>
    <main>
      <div id="login">
        Administration secured by password:
        <form method="POST" action="https://isso.stefanosn.com//login">
          <input type="password" name="password" autofocus />
        </form>
      </div>
    </main>
  </div>
</body>
</html>

Se tutto ok, il vostro sito è raggiungibile dall’esterno. Ben fatto! 😀

Integrare il sistema di commenti in Ghost

Questo dipende tutto dal vostro tema. Io sto utilizzando al momento il tema di default “Casper”.

Recatevi nella cartella del tema sul vostro server e modificate il file post.hbs

# cartella del tema
cd /var/www/ghost/content/themes/casper
# modificate il file post.hbs
sudo nano post.hbs

inserite il vostro script, che sarà collegato al servizio ISSO, appena prima della chiusura di article

</article>

modificate la configurazione in base alle vostre esigenze

<div class="post-footer">
    <section id="isso-thread"></section>
    <script data-isso="https://isso.stefanosn.com/" src="https://isso.stefanosn.com/js/embed.min.js"></script>

Riavviate il servizio Ghost (non come utente “root”)

cd /var/www/ghost
ghost restart

Il vostro sistema di commenti, completamente self-hosted è adesso funzionante

Lascia un commento se il post ti è sembrato utile. 😉

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *