GNU/Linux >> Linux Esercitazione >  >> Rocky Linux

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

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 memorizzare i nostri dati. Utilizzeremo anche Nginx come proxy inverso per l'applicazione e installeremo un certificato SSL utilizzando Let's Encrypt per abilitare le connessioni HTTPS alla nostra istanza Etherpad.

Prerequisiti

  1. Un sistema che esegue Rocky Linux 8.

  2. Un utente non root con privilegi sudo.

  3. Un nome di dominio puntato al server.

  4. Nodejs installato. Segui la nostra guida sull'installazione di Nodejs sul server Rocky Linux 8. Utilizzare uno dei due metodi specificati.

  5. Assicurati che tutto sia aggiornato.

    $ sudo dnf update
    

Passaggio 1:configurazione del firewall

Rocky Linux utilizza Firewalld Firewall. Controlla lo stato del 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 il 9001 porta 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. Esegui il comando seguente per installare Git.

$ sudo dnf install git

Verifica l'installazione.

$ git --version
git version 2.27.0

Aggiungi la configurazione iniziale.

$ git config --global user.name "YourName"
$ git config --global user.email "[email protected]"

Elenca la configurazione che hai appena impostato.

$ git config --list
user.name=YourName
[email protected]

Fase 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 comando seguente.

$ 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. Puoi comunque installare l'ultima versione usando 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

Verifica lo stato del servizio.

$ sudo systemctl status mariadb

Proteggi il server MariaDB.

$ sudo mysql_secure_installation

Dovrai affrontare varie richieste. 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 

Fase 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 complessa.

Concedi le autorizzazioni sul 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 compileremo.

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

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

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

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

$ sudo -u etherpad bash

Passa a /opt/etherpad directory.

[[email protected] user] cd /opt/etherpad

Clona il repository Etherpad nel /opt/etherpad directory.

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

Passa alla directory appena scaricata.

[[email protected] ~]$ cd etherpad-lite

Esegui run.sh dell'Etherpad script per configurare e installare le dipendenze.

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

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

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

Passaggio 6 - Configura Etherpad

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

Apri il file per la modifica.

[[email protected] 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 codice seguente e commentalo inserendo // davanti.

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

Quindi, trova il codice seguente 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 il trustProxy impostazione e modificarne il valore da false su 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.

Esci dalla shell dell'utente Etherpad.

[[email protected] etherpad-lite]$ exit

Passaggio 7:crea un servizio Etherpad

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

Crea e apri il file del 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

Verifica 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:installa SSL utilizzando Let's Encrypt

Per installare un certificato SSL utilizzando Let's Encrypt, è necessario installare lo strumento Certbot.

Innanzitutto, devi scaricare e installare il repository EPEL.

$ sudo dnf install epel-release

Esegui i seguenti comandi per installare Certbot.

$ sudo dnf install certbot

Genera il certificato SSL.

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

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

Genera un gruppo Diffie-Hellman certificato.

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

Crea una directory webroot di sfida per il rinnovo automatico di Let's 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, prima crea il file /etc/cron.daily/certbot-renew e aprilo per la modifica.

$ 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.

Modifica 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, devi 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

Quindi, crea e apri il /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.

Verifica la sintassi del file di configurazione 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 ottieni 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

Aggiungi 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 di Etherpad

L'aggiornamento dell'Etherpad è facile. Il primo passo è passare alla shell dell'utente Etherpad.

$ sudo -u etherpad bash

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

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

Estrarre l'ultimo repository Etherpad in /opt/etherpad/etherpad-lite directory.

[[email protected] ~]$ git pull origin

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

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

Conclusione

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

Se hai domande, pubblicale nei commenti qui sotto.


Rocky Linux
  1. Come installare phpMyAdmin su Rocky Linux

  2. Come installare MariaDB 10.6 su Rocky Linux 8

  3. Come installare GoAccess Web Log Analyzer su Rocky Linux 8

  4. Come installare Python 3.9 su Rocky Linux 8

  5. Come installare MariaDB su Rocky Linux 8

Come installare MariaDB 10 su AlmaLinux 8 o Rocky Linux

Come installare TeamViewer su Rocky Linux 8

Installa MariaDB 10.6 su Rocky Linux 8

Come installare il server MariaDB su Rocky Linux 8

Come installare la piattaforma collaborativa per prendere appunti Etherpad su Linux

Come installare l'editor vim su Rocky Linux 8