Guida alle tecnologie

Installare Rocket.Chat su Ubuntu 16.04 con Nginx

8 min read DevOps Aggiornato 21 Oct 2025
Installare Rocket.Chat su Ubuntu 16.04 con Nginx
Installare Rocket.Chat su Ubuntu 16.04 con Nginx

Importante: usa il tuo nome di dominio e sostituisci gli indirizzi IP d’esempio. Esegui i comandi come root o con sudo.

Introduzione

Rocket.Chat è una soluzione open source per chat di team simile a Slack. È scritta in JavaScript e sviluppata con il framework Meteor. Questa guida spiega come costruire un server di chat privato su Ubuntu 16.04 LTS, installando le dipendenze, MongoDB, Node.js, Rocket.Chat e Nginx come reverse proxy HTTPS.

Cosa coprirai in questa guida:

  • Prerequisiti e ambiente
  • Installazione dipendenze e MongoDB (ReplicaSet)
  • Installazione di Node.js e npm
  • Installazione del server Rocket.Chat
  • Configurazione di Nginx come reverse proxy su HTTPS
  • Verifiche, checklist di sicurezza e risoluzione dei problemi

Prerequisiti

  • Server con Ubuntu 16.04 LTS
  • Accesso root o sudo
  • Un nome di dominio pubblico (consigliato) o un indirizzo IP statico
  • Porte aperte: 80 (HTTP), 443 (HTTPS), 3000 (applicazione, eventualmente limitata a localhost tramite Nginx)

Panoramica architetturale (mental model)

  • Rocket.Chat (app Meteor/Node.js) ascolta su una porta locale (tipicamente 3000).
  • MongoDB come datastore, con ReplicaSet minimo richiesto da Rocket.Chat per l’oplog.
  • Nginx agisce da reverse proxy HTTPS: SSL termination, header proxy and forwarding.

Questa separazione favorisce sicurezza, scalabilità e facilità di backup.

Step 1 - Installare le dipendenze di Rocket.Chat

Accedi al server via SSH e diventa root:

ssh [email protected]
sudo su

Aggiorna la lista dei pacchetti:

apt-get update

Installa le dipendenze richieste:

apt-get install curl graphicsmagick build-essential

Nota: GraphicsMagick è usato per l’elaborazione immagini (avatar, anteprime) in Rocket.Chat.

Step 2 - Installare MongoDB

Rocket.Chat richiede MongoDB. In questa guida si installa MongoDB 3.2 dal repository ufficiale.

Aggiungi la chiave del repository MongoDB:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

Aggiungi il repository MongoDB (la sottocomando usa la release di Ubuntu):

echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

Aggiorna i repository e installa MongoDB:

apt-get update
apt-get install mongodb-org

Abilita MongoDB all’avvio e avvialo:

systemctl enable mongod
systemctl start mongod

MongoDB risponde sulla porta 27017 per impostazione predefinita.

Step 3 - Configurare il ReplicaSet di MongoDB

Rocket.Chat sfrutta l’oplog di MongoDB, quindi è necessario un ReplicaSet anche su singolo nodo (per ambienti di test/produzione ridotti). Modificheremo /etc/mongod.conf per abilitare il ReplicaSet e permettere connessioni non esclusivamente locali.

Apri il file di configurazione:

vim /etc/mongod.conf

Trova la sezione net: e commenta o modifica la bind IP per non limitare MongoDB a localhost (esempio: linee indicate nella guida originale):

net:
    port: 27017
    #bindIp: 127.0.0.1

Aggiungi la sezione replicaSet (replSetName) nella configurazione:

replication:
   oplogSizeMB: 1
   replSetName: rs0

Salva ed esci. Poi riavvia il servizio:

systemctl restart mongod

Inizializza il ReplicaSet dalla shell di MongoDB:

export LC_ALL=C
mongo
rs.initiate()

Dovresti vedere una risposta con “ok” : 1. Se il valore non è 1, controlla i log di mongod e la configurazione.

Configurare ReplicaSet MongoDB

ALT immagine: Configurazione del file mongod.conf per abilitare ReplicaSet in MongoDB su Ubuntu

Step 4 - Installare npm e Node.js

Rocket.Chat richiede una versione specifica di Node.js (la guida originale indica Node 4.5 per la versione coperta). Useremo il pacchetto n per installare la versione corretta.

Installa nodejs e npm dai repository Ubuntu:

apt-get install nodejs npm

Installa n globalmente:

npm install -g n

Usa n per installare Node.js 4.5:

sudo n 4.5

Verifica le versioni:

node --version
npm -v

Gestire la versione di NodeJS con il comando n

ALT immagine: Schermata che mostra l’uso del comando n per gestire la versione di Node.js

Nota: le versioni richieste da Rocket.Chat possono cambiare con le nuove release; verifica la documentazione ufficiale prima dell’aggiornamento.

Step 5 - Installare il server Rocket.Chat

Scarica l’ultima release di Rocket.Chat e installala in /var/www/.

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

Crea la directory di destinazione e sposta la bundle:

mkdir -p /var/www/
mv bundle Rocket.Chat
mv Rocket.Chat /var/www/

Installa le dipendenze lato server e avvia l’applicazione impostando le variabili d’ambiente richieste:

cd /var/www/Rocket.Chat/
cd programs/server/
npm install

cd ../../
export ROOT_URL=http://192.168.1.110:3000/
export MONGO_URL=mongodb://nyanko-sensei:27017/rocketchat?replicaSet=rs0
export PORT=3000
node main.js

Sostituisci 192.168.1.110 con l’indirizzo IP del server o con il tuo nome di dominio temporaneo.

Installare il server Rocket.Chat su Ubuntu 16.04

ALT immagine: Terminale che mostra i comandi di avvio di Rocket.Chat su Ubuntu

A questo punto Rocket.Chat dovrebbe essere raggiungibile su http://192.168.1.110:3000 (o l’IP configurato).

Rocket.Chat installato e funzionante

ALT immagine: Pagina di benvenuto di Rocket.Chat dopo l’installazione

Step 6 - Installare e configurare Nginx come reverse proxy HTTPS

Per una distribuzione sicura e performante, esegui Rocket.Chat dietro Nginx con HTTPS.

Installa Nginx:

apt-get install nginx

Crea una directory per i certificati SSL:

mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/

Genera un certificato autofirmato di prova e proteggi la chiave:

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/rocket-chat.crt -keyout /etc/nginx/ssl/rocket-chat.key
chmod 400 rocket-chat.key

Crea un file di virtual host per Rocket.Chat in /etc/nginx/sites-available/rocket-chat:

cd /etc/nginx/sites-available/
vim rocket-chat

Incolla la configurazione di esempio (sostituisci rocket-chat.co col tuo dominio):

# Upstreams
upstream backend {
    server 127.0.0.1:3000;
}

# Redirect Options
server {
  listen 80;
  server_name rocket-chat.co;
  # enforce https
  return 301 https://$server_name$request_uri;
}

# HTTPS Server
server {
    listen 443;
    server_name rocket-chat.co;

    error_log /var/log/nginx/rocketchat.access.log;

    ssl on;
    ssl_certificate /etc/nginx/ssl/rocket-chat.crt;
    ssl_certificate_key /etc/nginx/ssl/rocket-chat.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # dont use SSLv3 ref: POODLE

    location / {
        proxy_pass http://192.168.1.110:3000/;
        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;
    }
}

Attiva il sito e testa la configurazione:

ln -s /etc/nginx/sites-available/rocket-chat /etc/nginx/sites-enabled/rocket-chat
nginx -t
systemctl restart nginx

Importante: sostituisci gli indirizzi IP e server_name con il tuo dominio. In produzione usa certificati validi (Let’s Encrypt) invece di certificati autofirmati.

Step 7 - Avvia Rocket.Chat con le variabili per HTTPS

Aggiorna e avvia Rocket.Chat usando ROOT_URL con HTTPS:

cd /var/www/Rocket.Chat/
export ROOT_URL=https://rocket-chat.co
export MONGO_URL=mongodb://nyanko-sensei:27017/rocketchat?replicaSet=rs0
export PORT=3000
node main.js

Visita il tuo dominio (es. https://rocket-chat.co). Dovresti essere reindirizzato a HTTPS e vedere la pagina di registrazione.

Rocket.Chat con Nginx

ALT immagine: Rocket.Chat raggiungibile tramite Nginx con HTTPS

Crea il primo account amministratore cliccando su “Registrati” e seguendo la procedura (nome, email, password).

Rocket.Chat su SSL

ALT immagine: Schermata di accesso/registrazione di Rocket.Chat su connessione SSL

Inserisci i dati per registrare un amministratore e conferma l’uso del nuovo SITE-URL quando richiesto.

Creare un account admin

ALT immagine: Form di registrazione per creare l’utente amministratore in Rocket.Chat

Conferma l’uso del SITE-URL con il dominio configurato.

Confermare nuovo URL

ALT immagine: Prompt di conferma per aggiornare SITE-URL in Rocket.Chat

Registra il nome utente e completa la registrazione.

Registrare username

ALT immagine: Scelta del nome utente durante la procedura di registrazione

Vedrai la dashboard di Rocket.Chat dove potrai creare canali e invitare il tuo team.

Dashboard Rocket.Chat

ALT immagine: Panoramica della dashboard di Rocket.Chat dopo la prima registrazione

Screenshot che mostra la variabile d’ambiente aggiornata e l’app in esecuzione:

Aggiornamento variabili

ALT immagine: Terminale che mostra le variabili d’ambiente aggiornate per Rocket.Chat

Verifiche post-installazione e Criteri di accettazione

  • Rocket.Chat risponde su HTTPS con certificato valido (o auto-firmato per test).
  • Login e registrazione funzionano; è possibile creare il primo utente admin.
  • Rocket.Chat comunica con MongoDB e non mostra errori di connessione.
  • Nginx inoltra correttamente gli header WebSocket (Upgrade/Connection) e i messaggi in tempo reale sono funzionanti.

Checklist di sicurezza essenziale (produzione)

  • Usare certificati TLS validi (Let’s Encrypt o CA aziendale).
  • Limitare l’accesso a MongoDB (firewall, bindIp) e usare autenticazione MongoDB in produzione.
  • Eseguire Rocket.Chat come utente non privilegiato e usare process manager (systemd, PM2).
  • Abilitare backup periodici di MongoDB e testare i restore.
  • Monitoring: log, alert e controlli di integrità.
  • Tenere aggiornati Node.js, Rocket.Chat e il sistema operativo.

Ruoli e responsabilità (checklist per team)

  • Sysadmin:
    • Installazione server, firewall, certificati TLS, Nginx.
    • Monitoraggio e backup.
  • DBA / Data Owner:
    • Configurazione ReplicaSet, policy di backup e retention.
    • Sicurezza e accesso a MongoDB.
  • Admin Rocket.Chat:
    • Gestione utenti, canali, impostazioni di sicurezza interne.
    • Policies per registrazione e autenticazione (OAuth/SAML).

Risoluzione dei problemi comuni

  • Problema: “Cannot connect to MongoDB” — Controlla MONGO_URL, replicaSet e che mongod sia ascoltando sulla porta corretta.
  • Problema: WebSocket non funziona dietro Nginx — Verifica i header Upgrade e Connection nella configurazione, e usa proxy_http_version 1.1.
  • Problema: Errori di versione Node — Verifica node --version e installa la versione supportata da Rocket.Chat.
  • Problema: pagina vuota o app che non carica — Controlla log di Rocket.Chat (stderr/stdout), log di Nginx e console del browser per errori JS.

Mini metodologia di deploy (5 fasi rapide)

  1. Preparazione: server aggiornato, firewall e dominio DNS.
  2. Installazione datastore (MongoDB con ReplicaSet minimo).
  3. Installazione runtime (Node.js) e dipendenze.
  4. Deploy Rocket.Chat e test locale (porta 3000).
  5. Configurazione Nginx + TLS e cutover al dominio pubblico.

Decisione rapida: usare Docker o installazione manuale?

Mermaid diagramma decisionale (semplice):

graph TD
  A{Hai esperienza con Docker?} -->|Sì| B[Valuta Rocket.Chat con Docker Compose]
  A -->|No| C[Installa manualmente su Ubuntu]
  B --> D{Hai bisogno di scalare?}
  D -->|Sì| E[Usa Kubernetes o orchestrator]
  D -->|No| F[Docker Compose va bene]
  C --> G[Aggiungi systemd/PM2 per gestione processo]

Nota: il diagramma aiuta a scegliere il metodo di deploy in base alla familiarità con containerizzazione e necessità di scalabilità.

Test di accettazione (esempi)

  • Accesso: un amministratore può registrarsi e accedere da HTTPS.
  • Chat: due utenti connessi scambiano messaggi in tempo reale senza perdita.
  • Persistenza: messaggi salvati e recuperabili dopo riavvio del servizio.
  • WebSocket: la connessione WebSocket rimane stabile per >10 minuti durante messaggi continui.

Glossario (1 riga ciascuno)

  • ReplicaSet: configurazione MongoDB che mantiene un set di repliche e un oplog per la replica.
  • ROOT_URL: variabile d’ambiente che indica l’URL pubblico dell’applicazione.
  • MONGO_URL: stringa di connessione a MongoDB usata dall’app.
  • Reverse proxy: server che inoltra richieste client a uno o più server applicativi.

Note di privacy e GDPR (punti pratici)

  • Se gestisci dati personali dell’UE, mantieni il controllo sul backup e sull’accesso ai dati (audit).
  • Configura politiche di retention e consensi in linea con il requisito normativo.
  • Limita l’accesso amministrativo e registra le azioni sensibili.

Altre risorse e link utili

Riepilogo

  • Hai installato MongoDB con ReplicaSet, Node.js, Rocket.Chat e Nginx come reverse proxy HTTPS.
  • Verifica funzionamento WebSocket, backup e sicurezza prima di mettere in produzione.
  • Per ambienti di produzione valuta process manager (systemd/PM2), monitoraggio e certificati TLS validi.

Takeaway: una installazione corretta separa le responsabilità (DB, app, web server), protegge la comunicazione con TLS e assicura backup e monitoraggio continuativo.

Reference

Autore
Redazione

Materiali simili

Installare e usare Podman su Debian 11
DevOps

Installare e usare Podman su Debian 11

Guida rapida a apt-pinning su Debian
Linux

Guida rapida a apt-pinning su Debian

Forzare FSR 4 con OptiScaler: guida completa
Guide.

Forzare FSR 4 con OptiScaler: guida completa

Dansguardian + Squid NTLM su Debian Etch
Rete

Dansguardian + Squid NTLM su Debian Etch

Riparare errore installazione SD su Android
Android

Riparare errore installazione SD su Android

Cartelle di rete con KNetAttach e remote:/
Linux

Cartelle di rete con KNetAttach e remote:/