Instalar Rocket.Chat en Ubuntu 16.04 con Nginx — guía paso a paso
Introducción
Rocket.Chat es una solución de chat en línea gratuita y de código abierto para la comunicación en equipos; permite construir una plataforma privada similar a Slack. Está desarrollada en JavaScript sobre el framework full-stack Meteor. Es adecuada para organizaciones que desean control completo sobre sus datos y personalización.
Definición rápida: ReplicaSet — grupo de instancias MongoDB que mantienen copias redundantes de los datos para alta disponibilidad y operaciones de lectura/escritura resilientes.
Importante: esta guía usa Ubuntu 16.04 LTS y asume privilegios root. Ajusta IPs, nombres de dominio y rutas según tu entorno.
Requisitos previos
- Ubuntu 16.04 LTS
- Acceso SSH y privilegios root
- Nombre de dominio (recomendado) y control sobre DNS para el host
Paso 1 - Instalar dependencias de Rocket.Chat
Conéctate al servidor por SSH y cambia a root:
ssh [email protected]
sudo suActualiza repositorios:
apt-get updateInstala paquetes necesarios:
apt-get install curl graphicsmagick build-essentialNotas: GraphicsMagick se utiliza para manipulación de imágenes (avatars, thumbnails). build-essential incluye compiladores necesarios para dependencias nativas.
Paso 2 - Instalar MongoDB
Rocket.Chat requiere MongoDB. En esta guía usamos MongoDB 3.2 desde el repositorio oficial.
Añade la llave del repositorio:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927Agrega el repositorio (la subcomposición depende de lsb_release -sc):
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.listActualiza e instala MongoDB:
apt-get update
apt-get install mongodb-orgHabilita MongoDB en el arranque y arráncalo:
systemctl enable mongod
systemctl start mongodMongoDB se inicia en el puerto 27017 por defecto.
Paso 3 - Configurar ReplicaSet de MongoDB
Rocket.Chat se beneficia de un ReplicaSet para indexación de opLog y mayor rendimiento. Edita el archivo de configuración de mongod:
vim /etc/mongod.confLocaliza la sección de red y comenta la restricción de bindIp (añade un “#” al inicio de la línea correspondiente) para no limitar MongoDB solo a localhost:
net:
port: 27017
#bindIp: 127.0.0.1Añade la sección de replicación (replSetName) para habilitar el ReplicaSet:
#replication:
replication:
oplogSizeMB: 1
replSetName: rs0Guarda y reinicia MongoDB:
systemctl restart mongodInicia la shell de MongoDB y crea el ReplicaSet:
export LC_ALL=C
mongo
rs.initiate()Deberías ver una salida con “ok” : 1.

Si “ok” no es 1, revisa /var/log/mongodb/mongod.log para errores y confirma que no haya firewalls bloqueando comunicaciones internas.
Paso 4 - Instalar npm y nodejs
Rocket.Chat requiere una versión específica de Node.js. En la versión original se requiere Node.js 4.5. Instala nodejs y npm desde repositorios y usa el paquete n para fijar la versión.
apt-get install nodejs npmInstala n globalmente y selecciona la versión 4.5:
npm install -g n
sudo n 4.5Verifica versiones:
node --version
npm -v
Nota: En entornos de producción actuales, evalúa versiones compatibles más recientes de Rocket.Chat y Node.js; la guía sigue el requisito histórico de la distro mostrada.
Paso 5 - Instalar el servidor Rocket.Chat
Descarga y extrae el bundle de Rocket.Chat en /var/www/:
curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz
tar -xzvf rocket.chat.tgzMueve la carpeta bundle a /var/www/ con nombre Rocket.Chat:
mkdir -p /var/www/
mv bundle Rocket.Chat
mv Rocket.Chat /var/www/Instala dependencias del lado servidor y exporta variables de entorno necesarias antes de arrancar:
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.jsAjusta ROOT_URL y MONGO_URL a tu IP o dominio. El ejemplo usa 192.168.1.110.

Accede por navegador en http://192.168.1.110:3000 para verificar que la app responde.

Paso 6 - Instalar y configurar Nginx como proxy inverso para Rocket.Chat
Ejecutar Rocket.Chat detrás de Nginx permite HTTPS, terminación SSL y mejor rendimiento.
Instala Nginx:
apt-get install nginxCrea un directorio para certificados SSL y genera un certificado auto-firmado (para pruebas) o instala uno emitido por una CA (Let’s Encrypt en producción):
mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/
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 el archivo de sitio en /etc/nginx/sites-available/rocket-chat:
cd /etc/nginx/sites-available/
vim rocket-chatPega la siguiente configuración (cambia rocket-chat.co por tu 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; # no usar SSLv3
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;
}
}Activa el sitio y comprueba la configuración:
ln -s /etc/nginx/sites-available/rocket-chat /etc/nginx/sites-enabled/rocket-chat
nginx -t
systemctl restart nginxCambia las direcciones internas en proxy_pass y ROOT_URL si usas otra IP o dominio.
Paso 7 - Probar Rocket.Chat detrás de Nginx
Actualiza las variables de entorno e inicia Rocket.Chat apuntando al dominio 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.jsEn el navegador, abre https://rocket-chat.co (sustituye por tu dominio). Crea la cuenta administrativa con “Register a new account” desde la interfaz y sigue los pasos.

Capturas del flujo de registro en la interfaz (texto en la UI en inglés según la versión mostrada):




Panel administrativo y estado final:

Resultados después de actualizar variables de entorno:

Buenas prácticas y consideraciones para producción
- Usa certificados válidos (Let’s Encrypt o CA comercial) y renueva automáticamente.
- Ejecuta Rocket.Chat como servicio systemd (no con node main.js en primer plano) y supervisa logs.
- Configura copias de seguridad regulares de MongoDB (mongodump, snapshots LVM o backups gestionados).
- Separa bases de datos y servidores de aplicación en hosts distintos para escalabilidad.
- Limita el acceso a MongoDB por red y/o autenticación. No expongas MongoDB en Internet.
Seguridad y privacidad
- Habilita conexión segura entre Nginx y Rocket.Chat (internal TLS o redes privadas) si manejas datos sensibles.
- Revisa roles y permisos de usuarios: aplica la regla del menor privilegio.
- Cumplimiento: si procesas datos personales sujetos a GDPR, documenta base legal, retención y procedimientos de eliminación.
Cuándo Rocket.Chat puede no ser la mejor opción
- Si tu equipo requiere garantía de uptime por contrato SLA con soporte comercial 24/7 y no quieres gestionar infraestructura, tal vez prefieras soluciones SaaS.
- Si no puedes mantener actualizaciones regulares ni parches de seguridad, el self-hosting aumenta el riesgo operativo.
Alternativas y arquitecturas híbridas
- Soluciones SaaS: Slack, Microsoft Teams (no self-hosted).
- Open source con enfoque distinto: Mattermost (self-hosted, características similares).
- Arquitectura: usar Kubernetes para desplegar Rocket.Chat en contenedores y facilitar escalado.
Mini-metodología de despliegue (5 pasos)
- Planificar: asigna dominios, IPs y tamaño del servidor.
- Probar en staging: replica el entorno de producción en una VM.
- Desplegar: seguir esta guía automatizada con scripts/Ansible.
- Validar: runbooks de pruebas de aceptación y backup.
- Operar: monitorización, actualizaciones y backups.
Checklist por rol
- Administrador de sistemas:
- Validar que systemd controle Rocket.Chat.
- Configurar rotación de logs y monitorización (Prometheus/Alertmanager).
- Responsable de seguridad:
- Revisar certificados y cifrado en tránsito.
- Restringir acceso a MongoDB y comprobar autenticación.
- Operaciones/devops:
- Plan de backup y pruebas de restauración.
- Automatizar despliegues (Ansible/Chef/Puppet).
Criterios de aceptación
- La aplicación responde en HTTPS en el dominio configurado.
- Registro de usuario administrador completado y acceso al panel.
- MongoDB ReplicaSet reporta “ok : 1” y opLog está habilitado.
- Backups programados y verificados.
Errores comunes y cómo resolverlos
- Nginx devuelve 502 Bad Gateway: confirma que Rocket.Chat está escuchando en el puerto configurado y que proxy_pass apunta a la IP/puerto correctos.
- MongoDB no inicia ReplicaSet: revisa logs en /var/log/mongodb/mongod.log y asegúrate de que bindIp no limite conexiones internas.
- Websocket falla (conexiones caídas): verifica headers Upgrade/Connection en la configuración de proxy y que proxy_http_version sea 1.1.
Plantilla rápida de despliegue (SOP)
- Provisionar VM con Ubuntu 16.04.
- Ejecutar script de instalación de dependencias y MongoDB.
- Configurar ReplicaSet y validar con rs.status().
- Instalar Node.js y Rocket.Chat, probar localmente en el puerto 3000.
- Configurar Nginx con SSL y reiniciar.
- Iniciar Rocket.Chat con variables de entorno y habilitar service/systemd.
Glosario de una línea
- ROOT_URL: URL base donde estará disponible la aplicación.
- MONGO_URL: cadena de conexión hacia la base de datos MongoDB.
- ReplicaSet: conjunto de nodos MongoDB para replicación y alta disponibilidad.
Recursos
- Documentación oficial de instalación: https://rocket.chat/docs/installation/manual-installation/ubuntu/
Resumen: siguiendo estos pasos puedes desplegar una instancia funcional de Rocket.Chat en Ubuntu 16.04 con MongoDB ReplicaSet y Nginx como proxy inverso. Asegura certificados, gestión de servicios y backups antes de mover a producción.
Importante: adapta direcciones, usuarios y nombres de dominio a tu entorno y reemplaza certificados auto-firmados por CA en producción.
Materiales similares
Podman en Debian 11: instalación y uso
Apt-pinning en Debian: guía práctica
OptiScaler: inyectar FSR 4 en casi cualquier juego
Dansguardian + Squid NTLM en Debian Etch
Arreglar error de instalación Android en SD