Ricerca nel sito web

Come installare Rocket.Chat Server con Nginx su Ubuntu 20.04


Questo tutorial esiste per queste versioni del sistema operativo

  • Ubuntu 20.04 (Focal Fossa)
  • Ubuntu 16.04 (Xenial Xerus)

Su questa pagina

  1. Prerequisiti
  2. Per iniziare
  3. Installa Node.js
  4. Installa e configura MongoDB
  5. Installa Rocket.Chat
  6. Crea un file di servizio Systemd per Rocket.Chat
  7. Configura Nginx per Rocket.Chat
  8. Accedi a Rocket.Chat
  9. Conclusione

Rocket.Chat è un'applicazione di chat basata sul Web scritta in JavaScript, che utilizza il framework full-stack Meteor. È una piattaforma di collaborazione chat open source che ti consente di comunicare in modo sicuro in tempo reale su più dispositivi. È self-hosted e supporta chat vocali e video, videoconferenze, condivisione di file e molto altro. Ha un'applicazione client disponibile per tutte le piattaforme, inclusi Windows, macOS, Linux, Android e iOS.

In questo tutorial, ti mostreremo come installare Rocket.Chat sul server Ubuntu 20.04.

Prerequisiti

  • Un server che esegue Ubuntu 20.04.
  • Un nome di dominio valido indicato con l'IP del tuo server.
  • Il server è configurato con una password di root.

Iniziare

Prima di iniziare, si consiglia di aggiornare i pacchetti di sistema all'ultima versione. Puoi aggiornarli con il seguente comando:

apt-get update -y

Una volta aggiornato il sistema, installa le altre dipendenze richieste con il seguente comando:

apt-get install nginx gnupg2 git unzip build-essential curl software-properties-common graphicsmagick -y

Una volta installati tutti i pacchetti, puoi procedere al passaggio successivo.

Installa Node.js

Successivamente, dovrai installare Node.js versione 12 nel tuo sistema. Per impostazione predefinita, non è disponibile nel repository standard di Ubuntu 20.04. Quindi dovrai aggiungere il repository ufficiale Node.js al tuo sistema. Puoi aggiungerlo con il seguente comando:

curl -sL https://deb.nodesource.com/setup_12.x | bash -

Una volta aggiunto il repository, installa Node.js con il seguente comando:

apt-get install nodejs -y

Dopo aver installato Node.js, verifica la versione installata di Node.js con il seguente comando:

node -v

Dovresti ottenere il seguente output:

v12.19.0

Una volta terminato, puoi procedere al passaggio successivo.

Installa e configura MongoDB

Successivamente, dovrai installare il server MongoDB nel tuo sistema. Per impostazione predefinita, l'ultima versione di MongoDB non è disponibile nel repository predefinito di Ubuntu 20.04. Quindi dovrai aggiungere il repository MongoDB nel tuo sistema. Innanzitutto, scarica e aggiungi la chiave GPG con il seguente comando:

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

Dovresti ottenere il seguente output:

Executing: /tmp/apt-key-gpghome.Ku2thT4UnL/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
gpg: key 68818C72E52529D4: public key "MongoDB 4.0 Release Signing Key <>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Successivamente, aggiungi il repository ufficiale MongoDB con il seguente comando:

add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'

Una volta aggiunto il repository, installa MongoDB con il seguente comando:

apt-get install mongodb-org -y

Dopo aver installato MongoDB, avvia il servizio MongoDB e abilitalo per l'avvio al riavvio del sistema:

systemctl start mongod
systemctl enable mongod

Successivamente, dovrai modificare il file di configurazione predefinito di MongoDB e definire il set di repliche. Puoi farlo con il seguente comando:

nano /etc/mongod.conf

Aggiungi le seguenti righe:

replication:
  replSetName: "replica01"

Salva e chiudi il file, quindi riavvia il servizio MongoDB per applicare la configurazione:

systemctl restart mongod

Successivamente, accedi alla shell MongoDB e abilita la replica con il seguente comando:

mongo
> rs.initiate()

Dovresti ottenere il seguente output:

{
	"info2" : "no configuration specified. Using a default configuration for the set",
	"me" : "127.0.0.1:27017",
	"ok" : 1,
	"operationTime" : Timestamp(1605081439, 1),
	"$clusterTime" : {
		"clusterTime" : Timestamp(1605081439, 1),
		"signature" : {
			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
			"keyId" : NumberLong(0)
		}
	}
}

Successivamente, esci dalla shell MongoDB con il seguente comando:

> exit

Una volta terminato, puoi procedere al passaggio successivo.

Installa Rocket.Chat

Successivamente, dovrai creare un nuovo utente per Rocket.Chat e aggiungerlo al gruppo www-data. Puoi farlo usando il seguente comando:

useradd -m -U -r -d /opt/rocket rocket --shell /bin/bash
usermod -a -G rocket www-data

Quindi, dai le autorizzazioni appropriate alla directory /opt/rocket:

chmod 750 /opt/rocket

Successivamente, passa l'utente a Rocket.Chat e scarica l'ultima versione di Rocket.Chat con il seguente comando:

su - rocket
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz

Una volta completato il download, estrai il file scaricato con il seguente comando:

tar -xvzf rocket.chat.tgz

Successivamente, rinomina la directory estratta con Rocket.Chat con il seguente comando:

mv bundle Rocket.Chat

Quindi, cambia la directory sul server Rocket.Chat e installa tutte le dipendenze Node.js usando il seguente comando:

cd Rocket.Chat/programs/server
npm install

Una volta installate tutte le dipendenze, puoi uscire dall'utente Rocket.Chat usando il seguente comando:

exit

Crea un file di servizio Systemd per Rocket.Chat

Successivamente, dovrai creare un file di servizio systemd per gestire il servizio Rocket.Chat. Puoi crearlo con il seguente comando:

nano /etc/systemd/system/rocketchat.service

Aggiungi le seguenti righe:

[Unit]
Description=Rocket.Chat server
After=network.target nss-lookup.target mongod.target

[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocket
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=http://rocket.yourdomain.com PORT=3000
ExecStart=/usr/bin/node /opt/rocket/Rocket.Chat/main.js

[Install]
WantedBy=multi-user.target

Salvare e chiudere il file e ricaricare il demone systemd con il seguente comando:

systemctl daemon-reload

Successivamente, avvia il servizio Rocket.Chat e abilitalo per l'avvio al riavvio del sistema con il seguente comando:

systemctl start rocketchat
systemctl enable rocketchat

Ora puoi controllare lo stato di Rocket.Chat con il seguente comando:

systemctl status rocketchat

Se tutto va bene, dovresti ottenere il seguente output:

? rocketchat.service - Rocket.Chat server
     Loaded: loaded (/etc/systemd/system/rocketchat.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-11-11 07:58:01 UTC; 24s ago
   Main PID: 19951 (node)
      Tasks: 11 (limit: 4691)
     Memory: 508.7M
     CGroup: /system.slice/rocketchat.service
             ??19951 /usr/bin/node /opt/rocket/Rocket.Chat/main.js

Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |      MongoDB Version: 4.0.21                             |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |       MongoDB Engine: wiredTiger                         |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |             Platform: linux                              |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |         Process Port: 3000                               |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |             Site URL: http://rocket.yourdomain.com  |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |     ReplicaSet OpLog: Enabled                            |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |          Commit Hash: e37d7ba8ed                         |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |        Commit Branch: HEAD                               |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? |                                                          |
Nov 11 07:58:21 ubunt4 rocketchat[19951]: ? +----------------------------------------------------------+

Configura Nginx per Rocket.Chat

Successivamente, dovrai configurare Nginx come proxy inverso per Rocket.Chat. Per fare ciò, crea un file di configurazione dell'host virtuale Nginx con il seguente comando:

nano /etc/nginx/sites-available/rocketchat.conf

Aggiungi le seguenti righe:

upstream myrocketchat {
  server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name rocket.yourdomain.com;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        proxy_pass http://myrocketchat/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

Salva e chiudi il file, quindi attiva l'host virtuale Nginx con il seguente comando:

ln -s /etc/nginx/sites-available/rocketchat.conf /etc/nginx/sites-enabled/

Successivamente, verifica Nginx per qualsiasi errore systex con il seguente comando:

nginx -t

Dovresti ottenere il seguente output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Infine, riavvia il servizio Nginx per applicare le modifiche alla configurazione:

systemctl restart nginx

Puoi anche verificare lo stato del servizio Nginx con il seguente comando:

systemctl status nginx

Dovresti ottenere il seguente output:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-11-11 07:59:39 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 20034 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 20047 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 20051 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ??20051 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??20052 nginx: worker process
             ??20053 nginx: worker process

Nov 11 07:59:39 ubunt4 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 11 07:59:39 ubunt4 systemd[1]: Started A high performance web server and a reverse proxy server.

Una volta terminato, puoi procedere al passaggio successivo.

Accedi a Rocket.Chat

A questo punto, Rocket.Chat è installato e configurato. È ora di accedere all'interfaccia web di Rocket.Chat. Apri il tuo browser web e accedi a Rocket.Chat utilizzando l'URL http://rocket.tuodominio.com. Verrai reindirizzato alla seguente pagina:

Fornisci il tuo nome amministratore, e-mail, password e fai clic sul pulsante Continua. Dovresti vedere la seguente pagina:

Fornisci il tipo, il nome, il settore, le dimensioni, il paese della tua organizzazione e fai clic sul pulsante Continua. Dovresti vedere la seguente pagina:

Fornisci il nome del tuo sito, la lingua, il tipo di server e fai clic sul pulsante Continua. Dovresti vedere la seguente pagina:

Accetta i Termini e l'Informativa sulla privacy, quindi fai clic sul pulsante Continua. Dovresti vedere la pagina seguente.

Fare clic sul pulsante Vai all'area di lavoro. Verrai reindirizzato alla dashboard di Rocket.Chat nella pagina seguente:

Conclusione

Congratulazioni! hai installato e configurato correttamente Rocket.Chat con Nginx come proxy inverso. Ora puoi installare Rocket.Chat nell'ambiente di produzione e iniziare a chattare con i tuoi amici e familiari.