Ricerca nel sito web

Come installare l'editor Web collaborativo Etherpad su Rocky Linux 8


Su questa pagina

  1. Prerequisiti
  2. Passaggio 1: configurazione del firewall
  3. Passaggio 2 - Installa Git
  4. Passaggio 3 - Installa MariaDB
  5. Passaggio 4 - Configura MariaDB
  6. Passaggio 5 - Scarica e installa Etherpad
  7. Passaggio 6 - Configura Etherpad
  8. Passaggio 7 - Crea il servizio Etherpad
  9. Passaggio 8 - Installa SSL utilizzando Lets Encrypt
  10. Passaggio 9 - Installa e configura Nginx
  11. Aggiornamento dell'Etherpad
  12. Conclusione

Etherpad è un editor online open source che fornisce editing collaborativo in tempo reale nel browser. È scritto in Node.js e può essere ospitato autonomamente per funzionare con varie piattaforme come WordPress, Drupal, Odoo, Discourse, Joomla, ecc.

In questo tutorial, installeremo Etherpad su un server Rocky Linux 8, utilizzando il database MariaDB per archiviare i nostri dati. Utilizzeremo anche Nginx come proxy inverso per l'applicazione e installeremo un certificato SSL utilizzando Lets Encrypt per abilitare le connessioni HTTPS alla nostra istanza Etherpad.

Prerequisiti

  1. A system running Rocky Linux 8.

  2. A non-root user with sudo privileges.

  3. A domain name pointed to the server.

  4. Nodejs installed. Follow our guide on installing Nodejs on Rocky Linux 8 server. Use any of the two methods specified.

  5. Make sure everything is updated.

    $ sudo dnf update
    

Passaggio 1: configurare il firewall

Rocky Linux utilizza Firewalld Firewall. Controlla lo stato dei firewall.

$ sudo firewall-cmd --state
running

Ciò indica che è attivo e funzionante correttamente.

Il firewall funziona con diverse zone e la zona pubblica è quella predefinita, che useremo. Elenca tutti i servizi e le porte attive sul firewall.

$ sudo firewall-cmd --permanent --list-services

Dovrebbe mostrare il seguente output.

cockpit dhcpv6-client ssh

Consenti porte HTTP e HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Apri la porta 9001 utilizzata dall'applicazione Etherpad.

$ sudo firewall-cmd --permanent --add-port=9001/tcp

Ricontrolla lo stato del firewall.

$ sudo firewall-cmd --permanent --list-services

Dovresti vedere un output simile.

cockpit dhcpv6-client http https ssh

Ricarica il firewall per abilitare le modifiche.

$ sudo firewall-cmd --reload

Passaggio 2: installa Git

Prima di installare Etherpad, dobbiamo installare Git. Eseguire il comando seguente per installare Git.

$ sudo dnf install git

Verificare l'installazione.

$ git --version
git version 2.27.0

Aggiungi la configurazione iniziale.

$ git config --global user.name "YourName"
$ git config --global user.email ""

Elenca la configurazione appena impostata.

$ git config --list
user.name=YourName

Passo 3 - Installa MariaDB

Poiché utilizzeremo il database MariaDB per archiviare i dati di Etherpad, dobbiamo prima installarlo e configurarlo.

Il repository Rocky Linux AppStream viene fornito con MariaDB. Per elencare tutte le versioni disponibili di MariaDB installate, eseguire il seguente comando.

$ sudo dnf module list mariadb
Last metadata expiration check: 1:15:26 ago on Thu 21 Oct 2021 10:20:01 AM UTC.
Rocky Linux 8 - AppStream
Name                          Stream                         Profiles                                         Summary
mariadb                       10.3 [d]                       client, galera, server [d]                       MariaDB Module
mariadb                       10.5                           client, galera, server [d]                       MariaDB Module

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

La versione predefinita è impostata su 10.3. È tuttavia possibile installare l'ultima versione utilizzando il seguente comando.

$ sudo dnf module enable mariadb:10.5

Installa MariaDB.

$ sudo dnf install mariadb-server

Abilita e avvia il servizio MariaDB.

$ sudo systemctl enable mariadb --now

Controlla lo stato del servizio.

$ sudo systemctl status mariadb

Proteggi il server MariaDB.

$ sudo mysql_secure_installation

Affronterai vari suggerimenti. Rispondi come segue.

Enter current password for root (enter for none): Press Enter
Switch to unix_socket authentication [Y/n] Type y
Change the root password? [Y/n] Type n
Remove anonymous users? [Y/n] Type y
Disallow root login remotely? [Y/n] Type y
Remove test database and access to it? [Y/n] Type y
Reload privilege tables now? [Y/n] Type y

Ora puoi connetterti al server MariaDB usando il seguente comando.

$ sudo mysql 

Passo 4 - Configura MariaDB

Accedi alla shell MariaDB.

$ sudo mysql

Crea un nuovo database per Etherpad.

$ create database `etherpad_lite_db`;

Crea un nuovo utente del database.

$ CREATE USER 'etherpaduser'@'localhost' identified by 'password';

Usa una password sicura.

Concedere le autorizzazioni per il database all'utente.

$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to '<etherpaduser>'@'localhost';

Esci dalla shell MySQL.

$ exit

Passaggio 5: scarica e installa Etherpad

Per installare Etherpad, scaricheremo il suo codice sorgente e lo costruiremo.

Il primo passo è creare un nuovo utente etherpad usando il seguente comando.

$ sudo adduser --system --home /opt/etherpad --create-home --user-group etherpad

Questo comando crea un utente --system, il che significa che non può accedere e non ha password. Gli diamo anche una home directory /opt/etherpad che è dove scarichiamo Etherpad. Il flag --create-home crea la home directory con i permessi corretti. Il flag --user-group crea un gruppo con lo stesso nome del nome utente.

Passa all'utente etherpad per scaricare e installare l'applicazione.

$ sudo -u etherpad bash

Passa alla directory /opt/etherpad.

[ user] cd /opt/etherpad

Clonare il repository Etherpad nella directory /opt/etherpad.

[ ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git

Passa alla directory appena scaricata.

[ ~]$ cd etherpad-lite

Esegui lo script Etherpads run.sh per configurare e installare le dipendenze.

[ etherpad-lite]$ src/bin/run.sh

È possibile avviare l'URL http://YOURSERVERIP:9001 nel browser per avviare Etherpad. Otterrai la seguente schermata.

Si è verificato un problema con l'installazione precedente. Richiede di mantenere aperta la shell corrente con Node in esecuzione in primo piano. Per renderla un'installazione persistente, dobbiamo eseguire Etherpad come servizio. Premi Ctrl + C sul tuo terminale per interrompere l'esecuzione di Etherpad.

Passaggio 6: configurare Etherpad

Prima di procedere, dobbiamo impostare alcune impostazioni e configurare la nostra installazione in base alle nostre esigenze. Etherpad memorizza le sue impostazioni nel file settings.json nella directory di installazione.

Apri il file per la modifica.

[ etherpad-lite]$ nano settings.json

Il file delle impostazioni è formattato come JSON. La prima cosa che devi configurare sono le impostazioni del database.

Trova il seguente codice e commentalo mettendo // davanti ad esso.

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

Quindi, trova il seguente codice e modifica i suoi valori come segue. Assicurati di rimuovere /* e */ all'inizio e alla fine.

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

Infine, scorri un po' verso il basso per trovare l'impostazione trustProxy e cambia il suo valore da false a true.

  "trustProxy": true,

Questa impostazione è necessaria per far funzionare Etherpad insieme a Nginx.

Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

Uscire dalla shell utente Etherpad.

[ etherpad-lite]$ exit

Passaggio 7: creare il servizio Etherpad

Per avviare Etherpad all'avvio e gestire il processo usando systemctl, dobbiamo creare un file di servizio.

Crea e apri il file di servizio.

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

Incolla il seguente codice al suo interno.

[Unit]
Description=Etherpad, a collaborative web editor.
After=syslog.target network.target

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad
Environment=NODE_ENV=production
ExecStart=/usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
Restart=always

[Install]
WantedBy=multi-user.target

Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

Ricarica il demone del servizio per inserire la nuova configurazione.

$ sudo systemctl daemon-reload

Abilita Avvia il servizio Etherpad.

$ sudo systemctl enable etherpad --now

Controlla lo stato del servizio.

$ sudo systemctl status etherpad
? etherpad.service - Etherpad, a collaborative web editor.
   Loaded: loaded (/etc/systemd/system/etherpad.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-10-21 15:06:53 UTC; 6s ago
 Main PID: 47228 (node)
    Tasks: 13 (limit: 11411)
   Memory: 102.8M
   CGroup: /system.slice/etherpad.service
           ??47228 /usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
.......

Passaggio 8: installare SSL utilizzando Lets Encrypt

Per installare un certificato SSL utilizzando Lets Encrypt, è necessario installare lo strumento Certbot.

Innanzitutto, devi scaricare e installare il repository EPEL.

$ sudo dnf install epel-release

Eseguire i seguenti comandi per installare Certbot.

$ sudo dnf install certbot

Genera il certificato SSL.

$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m  -d example.com

Il comando precedente scaricherà un certificato nella directory /etc/letsencrypt/live/etherpad.example.com sul tuo server.

Genera un certificato di gruppo Diffie-Hellman.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Crea una directory webroot di verifica per il rinnovo automatico di Lets Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Crea un Cron Job per rinnovare l'SSL. Verrà eseguito ogni giorno per controllare il certificato e rinnovarlo se necessario. Per questo, per prima cosa, crea il file /etc/cron.daily/certbot-renew e aprilo per modificarlo.

$ sudo nano /etc/cron.daily/certbot-renew

Incolla il seguente codice.

#!/bin/sh
certbot renew --cert-name etherpad.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Modificare le autorizzazioni sul file dell'attività per renderlo eseguibile.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Passaggio 9: installa e configura Nginx

Rocky Linux viene fornito con una versione precedente di Nginx. Per installare l'ultima versione, è necessario aggiungere il repository Nginx.

Crea e apri il file /etc/yum.repos.d/nginx.repo per la modifica.

$ sudo nano /etc/yum.repos.d/nginx.repo

Incolla il seguente codice al suo interno.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

Installa Nginx.

$ sudo dnf install nginx

Abilita il servizio Nginx.

$ sudo systemctl enable nginx

Successivamente, crea e apri /etc/nginx/conf.d/etherpad.conf per la modifica.

$ sudo nano /etc/nginx/conf.d/etherpad.conf

Incolla il seguente codice al suo interno.

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

    access_log  /var/log/nginx/etherpad.access.log;
    error_log   /var/log/nginx/etherpad.error.log;
    
    ssl_certificate      /etc/letsencrypt/live/etherpad.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/etherpad.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/etherpad.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        rewrite  ^/$ / break;
        rewrite  ^/locales/(.*) /locales/$1 break;
        rewrite  ^/locales.json /locales.json break;
        rewrite  ^/admin(.*) /admin/$1 break;
        rewrite  ^/p/(.*) /p/$1 break;
        rewrite  ^/static/(.*) /static/$1 break;
        rewrite  ^/pluginfw/(.*) /pluginfw/$1 break;
        rewrite  ^/javascripts/(.*) /javascripts/$1 break;
        rewrite  ^/socket.io/(.*) /socket.io/$1 break;
        rewrite  ^/ep/(.*) /ep/$1 break;
        rewrite  ^/minified/(.*) /minified/$1 break;
        rewrite  ^/api/(.*) /api/$1 break;
        rewrite  ^/ro/(.*) /ro/$1 break;
        rewrite  ^/error/(.*) /error/$1 break;
        rewrite  ^/jserror(.*) /jserror$1 break;
        rewrite  ^/redirect(.*) /redirect$1 break;
        rewrite  /favicon.ico /favicon.ico break;
        rewrite  /robots.txt /robots.txt break;
        rewrite  /(.*) /p/$1;
        
        proxy_pass         http://127.0.0.1:9001;
        proxy_buffering    off;
        proxy_set_header   Host $host;
        proxy_pass_header  Server;

        # proxy headers
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_http_version  1.1;

        # websocket proxying
        proxy_set_header  Upgrade $http_upgrade;
        proxy_set_header  Connection $connection_upgrade;
    }
}

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

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

Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

Verificare la sintassi del file di configurazione di Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Se ricevi il seguente errore, dovrai modificare il file /etc/nginx/nginx.conf per aggiungere/regolare la dimensione della variabile server_names_hash_bucket_size.

nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size

Apri il file /etc/nginx/nginx.conf per la modifica.

$ sudo nano /etc/nginx/nginx.conf

Aggiungere la riga seguente prima della riga include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salva il file premendo Ctrl + X e inserendo Y quando richiesto. Convalida di nuovo Nginx.

Infine, avvia il servizio Nginx per abilitare la nuova configurazione.

$ sudo systemctl start nginx

Avvia l'URL https://etherpad.example.com nel tuo browser e si aprirà la home di Etherpad. Ora puoi usarlo per modificare documenti e invitare collaboratori.

Aggiornamento dell'Etherpad

Aggiornare Etherpad è facile. Il primo passo è passare alla shell utente Etherpad.

$ sudo -u etherpad bash

Passa alla directory /opt/etherpad/etherpad-lite.

[ user] cd /opt/etherpad/etherpad-lite

Estrai l'ultimo repository Etherpad nella directory /opt/etherpad/etherpad-lite.

[ ~]$ git pull origin

Esegui lo script Etherpads run.sh per configurare l'ultima versione di Etherpad.

[ etherpad-lite]$ src/bin/run.sh

Conclusione

In questo tutorial, abbiamo configurato Etherpad Collaborative Editor con il server Nginx e protetto utilizzando i certificati Lets Encrypt SSL. L'installazione di Etherpad è pronta per l'uso e puoi estenderla con più funzionalità tra cui utenti autenticati, plug-in e personalizzazioni dell'interfaccia utente.

Se hai domande, pubblicale nei commenti qui sotto.