GNU/Linux >> Linux Esercitazione >  >> Debian

Come installare Etherpad con Nginx e SSL su Debian 11

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.

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 del tuo ambiente e 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.

Installazione delle dipendenze dei pacchetti

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

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

2. In questo tutorial, installerai Node.js dal repository Nodesource, che fornisce più versioni di Node.js. Questo tutorial utilizza la versione Node.js 16.x per l'installazione dell'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 tuo pacchetto.

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

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

sudo apt install nodejs -y

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

node --version

Riceverai un output come 'blah blah'.

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.

Installazione e configurazione 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.

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

sudo apt install mariadb-server -y

2. Al termine dell'installazione di MariaDB, verrà automaticamente eseguita 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.

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

4. Ora ti verrà chiesto di cambiare il metodo di autenticazione usando 'unix_socket ', digita 'Y ' per essere d'accordo.

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

5. Digita "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!

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

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

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

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

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

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

9. Infine, ricaricare i privilegi della tabella per applicare una nuova configurazione. Digita '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 "Tutto fatto! ' come di seguito.

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

Thanks for using MariaDB!

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

11. 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 password 'StrongPasswordEtherpadDB '. Assicurati di cambiare la password.

CREATE DATABASE etherpad_lite_db;
CREATE USER [email protected] IDENTIFIED BY 'StrongPasswordEtherpadDB';
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on etherpad_lite_db.* to [email protected];

12. Dopodiché, ricarica tutti i privilegi delle tabelle per applicare una nuova configurazione, quindi esegui la query 'exit' per disconnetterti 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.

Installazione e configurazione 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 funzionerà come un servizio systemd.

1. 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 'adduser ' comando seguente 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

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

3. Successivamente, cambia la proprietà della directory 'etherpad-lite' con l'utente 'etherpad ' e raggruppa 'etherpad '.

sudo chown -R etherpad:etherpad etherpad-lite

4. Ora vai alla directory 'etherpad-lite/ ' e installa tutte le dipendenze di Node.js usando lo script di installazione 'installDeps.sh' come sotto. 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" etherpad

Attendi il completamento dell'installazione di tutte le dipendenze dei 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 'ip :' configurazione a '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 'Ambiente=NODE_ENV=produzione ', il che significa che l'applicazione Etherpad verrà eseguita nell'ambiente di produzione. Il file 'ExecStart=.. L'opzione ' è il comando predefinito per eseguire l'applicazione Etherpad.

Salva e chiudi il file.

Ora, ricarica il systemd manager 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 l'output simile allo screenshot qui sotto. Il servizio etherpad è ora "attivo (in esecuzione) ', si avvierà automaticamente all'avvio del sistema ed è in esecuzione su 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.

Installazione e configurazione di 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.

1. Inizialmente, installa i pacchetti Nginx eseguendo il comando seguente.

sudo apt install nginx -y

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

sudo ufw allow "Nginx Full"

Riceverai il seguente output.

Rule added
Rule added (v6)

3. 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 dei client verranno inviate al back-end 'proxy_pass ' l'applicazione Etherpad in esecuzione sulla porta localhost 9001.

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

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

5. 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 "sintassi è corretta ' 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.

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

Verifica installazione Etherpad

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

2. Per creare un nuovo pad, inserisci il nome del pad nella colonna e fai clic sul pulsante 'OK '.

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

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, controlla la documentazione ufficiale di Etherpad.


Debian
  1. Come installare Phorum con Nginx su Debian 9

  2. Come installare Textpattern CMS con Nginx su Debian 10

  3. Come installare e proteggere MariaDB su Debian 11

  4. Come installare e configurare Mariadb 10 in Debian 11

  5. Come installare WonderCMS con Nginx su Debian 11

Come installare Nextcloud 10 con Nginx su Debian 8

Come installare Drupal con Nginx e Let's Encrypt SSL su Debian 11

Come installare Joomla con Nginx e Let's Encrypt SSL su Debian 11

Come installare WordPress con Nginx e Let's Encrypt SSL su Debian 11

Come installare phpBB con LEMP (Nginx, MariaDB e PHP) su Debian 11 Bullseye

Come installare phpMyAdmin con Nginx su Debian 11