Come installare l'editor Web collaborativo Etherpad su Rocky Linux 8
Su questa pagina
- Prerequisiti
- Passaggio 1: configurazione del firewall
- Passaggio 2 - Installa Git
- Passaggio 3 - Installa MariaDB
- Passaggio 4 - Configura MariaDB
- Passaggio 5 - Scarica e installa Etherpad
- Passaggio 6 - Configura Etherpad
- Passaggio 7 - Crea il servizio Etherpad
- Passaggio 8 - Installa SSL utilizzando Lets Encrypt
- Passaggio 9 - Installa e configura Nginx
- Aggiornamento dell'Etherpad
- 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
-
A system running Rocky Linux 8.
-
A non-root user with sudo privileges.
-
A domain name pointed to the server.
-
Nodejs installed. Follow our guide on installing Nodejs on Rocky Linux 8 server. Use any of the two methods specified.
-
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.