Guía de tecnologías

Instalar Rocket.Chat en Ubuntu 16.04 con Nginx — guía paso a paso

7 min read DevOps Actualizado 21 Oct 2025
Rocket.Chat en Ubuntu 16.04 con Nginx — Guía
Rocket.Chat en Ubuntu 16.04 con Nginx — Guía

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 su

Actualiza repositorios:

apt-get update

Instala paquetes necesarios:

apt-get install curl graphicsmagick build-essential

Notas: 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 EA312927

Agrega 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.list

Actualiza e instala MongoDB:

apt-get update
apt-get install mongodb-org

Habilita MongoDB en el arranque y arráncalo:

systemctl enable mongod
systemctl start mongod

MongoDB 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.conf

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

Añade la sección de replicación (replSetName) para habilitar el ReplicaSet:

#replication:
replication:
   oplogSizeMB: 1
   replSetName: rs0

Guarda y reinicia MongoDB:

systemctl restart mongod

Inicia la shell de MongoDB y crea el ReplicaSet:

export LC_ALL=C
mongo
rs.initiate()

Deberías ver una salida con “ok” : 1.

Configurar ReplicaSet de MongoDB

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 npm

Instala n globalmente y selecciona la versión 4.5:

npm install -g n
sudo n 4.5

Verifica versiones:

node --version
npm -v

Gestionar la versión de NodeJS con el comando n

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

Mueve 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.js

Ajusta ROOT_URL y MONGO_URL a tu IP o dominio. El ejemplo usa 192.168.1.110.

Instalar Rocket.Chat en Ubuntu 16.04

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

Rocket.Chat instalado y funcionando

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 nginx

Crea 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.key

Crea el archivo de sitio en /etc/nginx/sites-available/rocket-chat:

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

Pega 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 nginx

Cambia 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.js

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

Rocket.Chat con Nginx

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

Rocket.Chat sobre SSL

Crear cuenta administrador

Confirmar nuevo SITE-URL

Registrar nombre de usuario

Panel administrativo y estado final:

Panel de Rocket.Chat

Resultados después de actualizar variables de entorno:

Actualización de variables

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)

  1. Planificar: asigna dominios, IPs y tamaño del servidor.
  2. Probar en staging: replica el entorno de producción en una VM.
  3. Desplegar: seguir esta guía automatizada con scripts/Ansible.
  4. Validar: runbooks de pruebas de aceptación y backup.
  5. 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)

  1. Provisionar VM con Ubuntu 16.04.
  2. Ejecutar script de instalación de dependencias y MongoDB.
  3. Configurar ReplicaSet y validar con rs.status().
  4. Instalar Node.js y Rocket.Chat, probar localmente en el puerto 3000.
  5. Configurar Nginx con SSL y reiniciar.
  6. 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


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.

Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach