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 suAggiorna la lista dei pacchetti:
apt-get updateInstalla le dipendenze richieste:
apt-get install curl graphicsmagick build-essentialNota: 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 EA312927Aggiungi 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.listAggiorna i repository e installa MongoDB:
apt-get update
apt-get install mongodb-orgAbilita MongoDB all’avvio e avvialo:
systemctl enable mongod
systemctl start mongodMongoDB 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.confTrova 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.1Aggiungi la sezione replicaSet (replSetName) nella configurazione:
replication:
oplogSizeMB: 1
replSetName: rs0Salva ed esci. Poi riavvia il servizio:
systemctl restart mongodInizializza 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.

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 npmInstalla n globalmente:
npm install -g nUsa n per installare Node.js 4.5:
sudo n 4.5Verifica le versioni:
node --version
npm -v
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.tgzCrea 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.jsSostituisci 192.168.1.110 con l’indirizzo IP del server o con il tuo nome di dominio temporaneo.

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

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 nginxCrea 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.keyCrea un file di virtual host per Rocket.Chat in /etc/nginx/sites-available/rocket-chat:
cd /etc/nginx/sites-available/
vim rocket-chatIncolla 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 nginxImportante: 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.jsVisita il tuo dominio (es. https://rocket-chat.co). Dovresti essere reindirizzato a HTTPS e vedere la pagina di registrazione.

ALT immagine: Rocket.Chat raggiungibile tramite Nginx con HTTPS
Crea il primo account amministratore cliccando su “Registrati” e seguendo la procedura (nome, email, password).

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.

ALT immagine: Form di registrazione per creare l’utente amministratore in Rocket.Chat
Conferma l’uso del SITE-URL con il dominio configurato.

ALT immagine: Prompt di conferma per aggiornare SITE-URL in Rocket.Chat
Registra il nome utente e completa la registrazione.

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.

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:

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
UpgradeeConnectionnella configurazione, e usaproxy_http_version 1.1. - Problema: Errori di versione Node — Verifica
node --versione 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)
- Preparazione: server aggiornato, firewall e dominio DNS.
- Installazione datastore (MongoDB con ReplicaSet minimo).
- Installazione runtime (Node.js) e dipendenze.
- Deploy Rocket.Chat e test locale (porta 3000).
- 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
- Documentazione ufficiale Rocket.Chat per installazione manuale: https://rocket.chat/docs/installation/manual-installation/ubuntu/
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.