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
-
Un sistema che esegue Rocky Linux 8.
-
Un utente non root con privilegi sudo.
-
Un nome di dominio puntato al server.
-
Nodejs installato. Segui la nostra guida sull'installazione di Nodejs sul server Rocky Linux 8. Utilizzare uno dei due metodi specificati.
-
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.