Come installare Etherpad con Nginx e SSL su Debian 11

28 feb 2022 9 min di lettura
Come installare Etherpad con Nginx e SSL su Debian 11
Indice dei contenuti

Introduzione

Etherpad è un'alternativa gratuita e open source a servizi come Google Docs e Zoho Writer. Etherpad è un editor di testo collaborativo e in tempo reale per il tuo team, è accessibile da qualsiasi luogo e in qualsiasi momento perché Etherpad è un editor di testo basato sul Web.

Qualsiasi modifica su Etherpad sta avvenendo in tempo reale e anche etherpad supporta il controllo delle versioni e la formattazione integrata per i team. Etherpad è un editor altamente personalizzabile con il supporto di vari plugin. E supporta anche formati di documenti moderni come doc, pdf, odt, markdown, ecc.

In questo tutorial, installerai e configurerai Etherpad Real-time Collaborative Editor su Debian 11 Bullseye. Questo tutorial utilizza MariaDB come back-end del database e il server Web Nginx come proxy inverso con HTTPS sicuro abilitato. Alla fine, avrai l'Etherpad installato e protetto tramite crittografia HTTPS sicura.

Se desideri installare Etherpad su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh root@IP_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh nome_utente@IP_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh nome_utente@IP_DEL_SERVER -p PORTA

Prerequisiti

Per completare questo tutorial, avrai prima bisogno dei seguenti requisiti:

  • Un server Debian 11, per i test puoi usare 1 GB di RAM. Per la produzione, puoi utilizzare più risorse, a seconda dell'ambiente e dell'utilizzo.
  • Un utente non root con privilegi di root. Facoltativamente, puoi utilizzare l'utente root.
  • Un nome di dominio per l'installazione e assicurati che sia puntato all'indirizzo IP del server. In questo esempio utilizzeremo il dominio ' etherpad.example.io'.

Quando hai tutti questi prerequisiti, vai alla prima sezione per avviare l'installazione.

Installare le dipendenze dei pacchetti

Etherpad è un'applicazione web basata su Node.js. Al momento in cui scrivo, l'ultima versione di Etherpad è xxx e richiedeva almeno la versione 14.x di Node.js. In questa sezione, installerai alcune dipendenze dei pacchetti, incluso Node.js sul server Debian 11.

Innanzitutto, aggiorna l'elenco degli indici dei pacchetti, quindi installa le dipendenze di build eseguendo il comando seguente:

sudo apt update
sudo apt install gzip git curl python libssl-dev pkg-config gcc g++ make build-essential -y

In questo tutorial, installerai Node.js dal repository Nodesource, che fornisce più versioni di Node.js. Questo tutorial utilizza la versione 16.x di Node.js per l'installazione di Etherpad.

Ora, esegui il seguente comando per aggiungere il repository Node.js al tuo sistema. Questo comando aggiungerà automaticamente il repository Nodesource per aggiornare l'indice del pacchetto:

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

Quindi, installa Node.js 16.x dal repository Nodesource eseguendo il comando seguente:

sudo apt install nodejs -y

Al termine dell'installazione, verifica la versione di Node.js utilizzando il comando seguente:

node --version

Riceverai un output con la versione di node installata.

In questa sezione, hai installato le dipendenze dei pacchetti per Etherpad e Node.js versione 16.x dal repository Nodesource. Successivamente, installerai e configurerai il database MariaDB.

Installare e configurare del database MariaDB

In questa sezione, installerai il database MariaDB sul server Debian 11. Quindi imposterai la password di root per MariaDB e, infine, creerai un nuovo database e un nuovo utente per Etherpad.

Per impostazione predefinita, i pacchetti MariaDB sono disponibili nel repository Debian 11. Esegui il comando seguente per installarlo:

sudo apt install mariadb-server -y

Quando l'installazione di MariaDB è completata, sarà automaticamente in esecuzione e abilitata.

MariaDB fornisce uno strumento da riga di comando che ti aiuta a distribuire MariaDB in modo sicuro, inclusa la configurazione della password di root per MariaDB. Esegui il comando 'mysql_secure_installation' come di seguito:

mysql_secure_installation

Ora ti verranno poste alcune domande relative alla distribuzione di MariaDB e ti verrà chiesto di impostare la password di root.

L'utente root predefinito per mariaDB non ha password, premere INVIO.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Ora ti verrà chiesto di cambiare il metodo di autenticazione usando 'unix_socket', digita 'Y' per accettare.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!

Digitare 'Y' per impostare una nuova password di root per MariaDB. Quindi inserisci la tua password complessa e ripeti.

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

L'installazione predefinita di MariaDB viene fornita con un utente anonimo. Digita 'Y' per rimuoverlo.

Remove anonymous users? [Y/n] Y
 ... Success!

Ora, disabilita l'accesso remoto per l'utente root di MariaDB. 'Y' per essere d'accordo.

Disallow root login remotely? [Y/n] Y
 ... Success!

Quindi, digita 'Y' per accettare e rimuovere il database predefinito "test" e tutti i privilegi su di esso.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Infine, ricaricare i privilegi della tabella per applicare una nuova configurazione. Digitare 'Y' per accettare e premere INVIO.

Reload privilege tables now? [Y/n] Y
 ... Success!

Al termine di tutta la configurazione, riceverai il messaggio di output come 'All done!' come sotto.

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Tutto fatto! Se hai completato tutti i passaggi precedenti, l'
installazione di MariaDB ora dovrebbe essere sicura.

Quindi, esegui il seguente comando per accedere alla shell MariaDB. Ti verrà richiesta la password di root di MariaDB. Inserisci la tua password:

mysql -u root -p

Ora, crea un nuovo database e un nuovo utente per l'Etherpad eseguendo le seguenti query. Questo esempio creerà un nuovo database 'etherpad_lite_db' con l'utente 'etherpaduser' e la password 'StrongPasswordEtherpadDB'. Assicurati di cambiare la password:

CREATE DATABASE etherpad_lite_db;
CREATE USER etherpaduser@localhost IDENTIFIED BY 'StrongPasswordEtherpadDB';
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on etherpad_lite_db.* to etherpaduser@localhost;

Successivamente, ricaricare tutti i privilegi delle tabelle per applicare una nuova configurazione, quindi eseguire la query 'exit' per disconnettersi dalla shell di mariaDB:

FLUSH PRIVILEGES;
EXIT

In questa sezione, hai completato l'installazione e la configurazione del database MariaDB su Debian 11. Inoltre, hai creato il database e l'utente per l'Etherpad. Successivamente, scaricherai il codice sorgente di Etherpad e lo installerai.

Installare e configurare di Etherpad

In questa sezione, installerai l'Etherpad dal codice sorgente, quindi lo configurerai con MariaDB come database e creerai un nuovo file systemd per l'Etherpad. Alla fine, l'Etherpad verrà eseguito come servizio systemd.

Prima di scaricare il codice sorgente di Etherpad creerai un nuovo utente 'etherpad' sul tuo sistema. Questo utente verrà utilizzato per eseguire lo script di installazione di Etherpad ed eseguire il servizio Etherpad.

Esegui il comando 'adduser' di seguito per creare un nuovo utente 'etherpad'. Inoltre, definisci la directory home su '/opt/etherpad-lite'. Questa directory verrà utilizzata per memorizzare tutte le sorgenti Etherpad:

sudo adduser --system --no-create-home --home=/opt/etherpad-lite --group etherpad

Ora vai alla directory '/opt' e clona il sorgente Etherpad usando il comando git.

cd /opt/
git clone --branch master https://github.com/ether/etherpad-lite.git

Successivamente, modificare la proprietà della directory 'etherpad-lite' nell'utente 'etherpad ' e nel gruppo 'etherpad':

sudo chown -R etherpad:etherpad etherpad-lite

Ora vai alla directory 'etherpad-lite/' e installa tutte le dipendenze di Node.js usando lo script di installazione 'installDeps.sh' come di seguito. Lo script di installazione 'installDeps.sh ' verrà eseguito come utente non root 'etherpad':

cd /opt/etherpad-lite
sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpa

Attendi il completamento dell'installazione delle dipendenze di tutti i pacchetti.

Quindi, modifica il file 'settings.json' per configurare l'installazione dell'Etherpad. Puoi utilizzare un editor nano per modificare quel file o utilizzare il tuo editor preferito:

nano settings.json

Nella parte superiore della riga, cambia il titolo con il tuo titolo. Questo esempio usa il titolo 'Entherpad Johndoe':

  "title": "Etherpad Johndoe",

In questo tutorial, l'Etherpad verrà eseguito con il proxy inverso Nginx. Ed è positivo per la sicurezza eseguire l'Etherpad sul localhost. Ora, cambia la configurazione 'ip :' in ' 127.0.0.1' . Con questa configurazione, l'Etherpad verrà eseguito solo su localhost:

  "ip": "127.0.0.1",
  "port": 9001, 

Per impostazione predefinita, l'Etherpad utilizza SQLite come database. Commenta tutte queste righe per disabilitare:

  /*
  *"dbType": "dirty",
  *"dbSettings": {
  *  "filename": "var/dirty.db"
  *},
  */

Ora, inserisci la configurazione del database MariaDB di seguito. E assicurati di cambiare il nome del database, l'utente e la password:

  "dbType" : "mysql",
  "dbSettings" : {
    "user":     "etherpaduser",
    "host":     "localhost",
    "port":     3306,
    "password": "StrongPasswordEtherpadDB",
    "database": "etherpad_lite_db",
    "charset":  "utf8mb4"
  },

Salva ed esci dal file.

Quindi, crea un nuovo file di servizio systemd 'etherpad.service' nella directory '/etc/systemd/system'. Questo file conterrà tutti i dettagli di configurazione di cui Etherpad ha bisogno per funzionare correttamente sul server. Crealo usando un nano editor:

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

Aggiungi la seguente configurazione nel file:

[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad-lite
Environment=NODE_ENV=production
ExecStart=/usr/bin/node --experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
# use mysql plus a complete settings.json to avoid Service hold-off time over, scheduling restart.
Restart=always

[Install]
WantedBy=multi-user.target

Questo file di servizio verrà eseguito come utente e gruppo 'etherpad'. E noterai l'opzione 'Environment=NODE_ENV=production', il che significa che l'applicazione Etherpad sarà in esecuzione nell'ambiente di produzione. L'opzione 'ExecStart=..' è il comando predefinito per eseguire l'applicazione Etherpad.

Salva e chiudi il file.

Ora, ricarica il gestore systemd per applicare un nuovo file di servizio:

sudo systemctl daemon-reload

Successivamente, avvia e abilita il servizio etherpad, quindi verifica il suo stato eseguendo il comando seguente:

sudo systemctl enable --now etherpad
sudo systemctl status etherpad

Riceverai un messaggio del servizio etherpad è ora 'active (running)', si avvierà automaticamente all'avvio del sistema ed è in esecuzione sul localhost con la porta predefinita '9001'.

A questo punto, hai completato l'installazione di Etherpad. Successivamente, installerai Nginx configurandolo come proxy inverso per l'applicazione Etherpad.

Installare e configurare Nginx

Per l'ambiente di produzione, si consiglia sempre di inserire un proxy inverso davanti all'applicazione. Aumenterà le prestazioni e la sicurezza delle tue applicazioni. In questa sezione, installerai e configurerai il server web Nginx come proxy inverso. Alla fine, avrai l'Etherpad in esecuzione con il tuo nome di dominio e protetto con il protocollo HTTPS.

Inizialmente, installa i pacchetti Nginx eseguendo il comando seguente:

sudo apt install nginx -y

Ora, se hai il firewall UFW sul tuo sistema Debian. Consenti l'accesso pubblico alle porte HTTP e HTTPS (80 e 443) eseguendo il comando 'ufw' di seguito:

sudo ufw allow "Nginx Full"

Riceverai il seguente output:

Rule added
Rule added (v6)

Quindi, crea un nuovo file host virtuale Nginx 'etherpad' nella directory '/etc/nginx/sites-available/'. Crealo usando un nano editor o il tuo editor preferito:

sudo nano /etc/nginx/sites-available/etherpad

Copia e incolla la seguente configurazione nel file. Inoltre, sostituisci il tuo nome di dominio e il percorso del certificato SSL con le tue informazioni. Per i certificati SSL, puoi generare certificati SSL liberamente utilizzando Letsencrypt:

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  etherpad.example.io;
    return 301   https://$host$request_uri;
}

# we're in the http context here
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  etherpad.example.io;

    access_log  /var/log/nginx/eplite.access.log;
    error_log   /var/log/nginx/eplite.error.log;

    ssl_certificate      /etc/letsencrypt/live/etherpad.example.io/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/etherpad.example.io/privkey.pem;

    ssl_session_timeout  5m;

    ssl_protocols TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \
    EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \
    EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

    location / {
        proxy_pass         http://127.0.0.1:9001;
        proxy_buffering    off; # be careful, this line doesn't override any proxy_buffering on set in a conf.d/file.conf
        proxy_set_header   Host $host;
        proxy_pass_header  Server;

        # Note you might want to pass these headers etc too.
        proxy_set_header    X-Real-IP $remote_addr; # https://nginx.org/en/docs/http/ngx_http_proxy_module.html
        proxy_set_header    X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
        proxy_set_header    X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
        proxy_http_version  1.1; # recommended with keepalive connections

        # WebSocket proxying - from https://nginx.org/en/docs/http/websocket.html
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Connection $connection_upgrade;
    }
}

Questo file host virtuale Nginx reindirizzerà automaticamente il traffico da HTTP al protocollo HTTPS sicuro. Per il debug in caso di errore, controlla il file di registro '/var/log/nginx/eplite.error.log'. Tutte le richieste del client verranno inviate al backend 'proxy_pass' l'applicazione Etherpad in esecuzione sulla porta 9001 di localhost:

Salvare e chiudere il file, quindi attivare la configurazione dell'host virtuale creando un collegamento simbolico del file 'etherpad' alla directory '/etc/nginx/sites-enabled':

sudo ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/

Quindi, esegui il comando 'nginx -t' per verificare la configurazione di nginx. Questo comando verificherà eventuali errori di sintassi sulla configurazione.

sudo nginx -t

Riceverai l'output come di seguito. Il messaggio di output "syntax is ok" significa che non hai errori:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful.

Infine, riavvia il servizio Nginx per applicare un nuovo file host virtuale Nginx:

sudo systemctl restart nginx

In questa sezione, hai completato l'installazione e la configurazione di Nginx come proxy inverso per l'applicazione Etherpad. Il tuo Etherpad è ora disponibile su http://etherpad.example.io.

Verificare l'installazione dell'Etherpad

Apri il tuo browser web e digita il nome di dominio 'http://etherpad.example.io/' sull'indirizzo. E verrai automaticamente reindirizzato alla connessione HTTPS sicura.

Per creare un nuovo pad, inserire il nome del pad sulla colonna e fare clic sul pulsante 'OK'.

Ora vedrai l'editor di collaborazione in tempo reale di Etherpad.

Conclusione

In questo tutorial, hai installato e configurato l'editor collaborativo in tempo reale di Etherpad sul server Debian 11. Inoltre, hai installato e configurato Nginx come proxy inverso per l'applicazione Etherpad.

Ora sei pronto per utilizzare etherpad come editor di collaborazione nel tuo team. Per ulteriori informazioni su Etherpad, consultare la documentazione ufficiale di Etherpad.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.