
Saludos amigos, hace unas semanas que ando trabajando con Rocket Chat, y os quiero mostrar qué es y cómo instalarlo.
- ¿Qué es Rocket Chat?
- Funcionalidades destacadas de Rocket Chat
- Requerimientos de Rocket Chat
- Instalación de Rocket Chat
- Primeros pasos con Rocket Chat
¿Qué es Rocket Chat?
Rocket Chat es una solución estupenda para Comunidades y Compañías que requieren de un servicio avanzado de Chat, hospedado en su propio Data Center, o en Servidores que controlan y administran.
Rocket.Chat es un producto increíble que tiene una Comunidad aún más increíble detrás. Más de 200 contribuidores colaboran con el producto y lo convierten en una plataforma muy dinámica, desde mensajes de grupo, pasando por vídeo llamadas e incluso funcionalidades para Help Desk.
Funcionalidades destacadas de Rocket Chat
Os dejo aquí una serie de funcionalidades clave que Rocket Chat ofrece:
LiveChat

Video conferencia

Transferencia de ficheros

Render de fórmulas matemáticas

Compartir pantalla

Por supuesto la ventaja más importante es que podemos instalar Rocket Chat en nuestro Data Center privado, o en un Cloud Público, pero donde tenemos control de la información que se transfiere, lo podemos conectar con nuestros LDAP para autenticación, etc.
Requerimientos de Rocket Chat
Los requerimientos para instalar Rocket Chat son muy variables, y siempre depende de vuestras necesidades, he preparado una tabla para que podáis ver más o menos cómo dimensionar un servidor de Rocket Chat, ¡se puede instalar incluso en una Raspberry Pi 3!
Instalación de Rocket Chat
Una vez que tenemos nuestro servidor dimensionado, es el momento de ponernos manos a la obra, Rocket Chat tiene muchas maneras de poder ser desplegado, desde Docker hasta Ubuntu Snap, en mi caso os voy a mostrar los pasos manuales para que sepáis que estáis haciendo en cada instante, he usado Ubuntu 14.04LTS para ello.
Software que instalaremos
- Node.js
- MongoDB
- curl
- graphicsmagick
Instalando las dependencias
Vamos a comenzar instalando todas las dependencias que Rocket Chat necesita, comenzaremos añadiendo los repositorios de MongoDB, y la instalación de curl, graphicsmagick y MongoDB:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
sudo apt-get update
sudo apt-get install -y mongodb-org curl graphicsmagick
Tendremos que instalar también npm, que es el gestor de paquetes de Node.js, lo haremos de la siguiente manera:
sudo apt-get install npm
Procederemos ahora a la instalación de Node.js, de la siguiente manera:
sudo apt-get install nodejs
Para que npm pueda compilar ciertos paquetes, necesita el paquete de build-essentials de Ubuntu, que podemos instalar de la siguiente manera:
sudo apt-get install build-essential
Instalaremos ahora una herramienta que nos permita cambiar la versión de Node.js
sudo npm install -g n
Y por último instalaremos la versión de Node.js 4.5, que es la que Rocket Chat necesita
sudo n 4.5
Instalación del paquete de Rocket Chat
Llegamos ahora a la instalación de Rocket Chat, lo primero que haremos será descargar la última versión disponible de la siguiente manera:
curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz
Descomprimiremos ahora el fichero:
tar zxvf rocket.chat.tgz
Moveremos el directorio bundle a uno llamado Rocket.Chat, después nos moveremos al directorio nuevo e instalaremos Rocket Chat de la siguiente manera
mv bundle Rocket.Chat
cd Rocket.Chat/programs/server
npm install
Volveremos atrás y crearemos las variables de sistema, recordar que ahora es muy importante que seleccionéis vuestro FQDN correctamente:
cd ../..
export ROOT_URL=http://your-host-name.com-as-accessed-from-internet:3000/
export MONGO_URL=mongodb://localhost:27017/rocketchat
export PORT=3000
Por último este comando levantará el servicio de Rocket Chat
node main.js
Que os mostrará algo como lo siguiente, pero con vuestro FQDN:
Updating process.env.MAIL_URL
ufs: permissions are not defined for store "fileSystem"
ufs: store created at
Updating process.env.MAIL_URL
Using GridFS for custom emoji storage
ufs: temp directory created at "/tmp/ufs"
[Sun Dec 04 2016 01:30:39 GMT+0000 (UTC)] WARNING A script has tried registering a HTTP route while the HTTP server is disabled with --disabled-httpd.
Loaded hubot-help/src/help.coffee
Loaded hello.coffee
Loaded zen.coffee
ufs: permissions are not defined for store "rocketchat_uploads"
Using GridFS for Avatar storage
‚ûî System ‚ûî startup
‚ûî +------------------------------------------------+
‚ûî | SERVER RUNNING |
‚ûî +------------------------------------------------+
‚ûî | |
‚ûî | Version: 0.46.0 |
‚ûî | Process Port: 3000 |
‚ûî | Site URL: http://rocket2.zimbra.io:3000/ |
‚ûî | OpLog: Disabled |
‚ûî | |
‚ûî +------------------------------------------------+
Primeros pasos con Rocket Chat
¡Felicidades! Ya tienes arriba tu propio servidor corporativo de Chat, y no solo eso si no una solución de tipo “Slack” pero en tu propio Data Center, controlando los usuarios, credenciales, etc.
El primero paso será irnos a nuestra URL, donde podremos crear el primer usuario, que será el Administrador:
Cómo podéis ver, me he ido a la URL y puerto seleccionado arriba, pulsaremos ahora Register new account para crear la primera cuenta de Admin

Introduciremos el nombre, email y la contraseña, recomiendo que sea diferente a admin o administrator, para evitar problemas de ataques futuros:
Ahora Rocket Chat nos solicitará el username del usuario Administrador, de nuevo, recomiendo un username que no sea admin, o administrator, este username se usará para hacer login
Y ¡ya estaremos dentro de nuestro Rocket Chat! En concreto para empezar tenemos solamente un canal, #general, pero podemos ver todas las opciones que tiene este Software y todas las capacidades que nos permitirá, también vemos que tenemos Direct Messages, etc.
Una de las cosas que Rocket Chat nos solicitará es confirmar el Email que hemos introducido para el Administrador, en muchos casos a estas alturas Rocket Chat no tiene aún el SMTP relay configurado, por lo que si nos vamos a la consola SSH, veremos que tenemos el link y podemos copiarlo/pegarlo en un navegador, lucirá así:
====== BEGIN MAIL #0 ======
(Mail not sent; to enable sending, set the MAIL_URL environment variable.)
MIME-Version: 1.0
Date: Sun, 04 Dec 2016 01:35:57 +0000
To: [email protected]
Subject: How to verify email address on Rocket.Chat
Content-Type: multipart/alternative;
boundary="----mailcomposer-?=_1-1480815357757"
------mailcomposer-?=_1-1480815357757
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Hello,
To verify your account email, simply click the link below.
http://rocket2.zimbra.io:3000/#/verify-email/xdgZlrqbXkZe6cVtOTDWuxsZXuN_Ztb6soYK5XtHfvR
Thanks.
Configurando un Proxy reverso para servir SSL
Hay varias opciones para realizar este paso, prefiero como siempre NGINX, así que vamos allá, para securizar nuestro entorno como es debido con un certificado SSL, etc.
El primero paso será instalar nginx:
apt-get install -y nginx
Pondremos ahora nuestro certificado SSL en el directorio, que tenemos que crear también, /etc/nginx/ssl/ y pondremos el fichero .crt y la llave privada .key con ello podremos crear ahora el fichero de configuración de nginx , que tendrá un aspecto como el siguiente:
mkdir /etc/nginx/ssl/
vi /etc/nginx/sites-enabled/rocket-chat
# Upstreams
upstream backend {
server 127.0.0.1:3000;
}
# Redirect Options
server {
listen 80;
server_name rocket2.zimbra.io;
# enforce https
return 301 https://$server_name$request_uri;
}
# HTTPS Server
server {
listen 443;
server_name rocket2.zimbra.io;
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://46.101.12.109: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;
}
}
Reiniciaremos el servicio de nginx ahora:
service nginx restart
Y ya podremos acceder mediante SSL, de manera segura, podemos proteger el puerto 3000 con Firewall perimetral, etc.

Configurando aspectos básicos como son Logos, Colores, etc
Supongo que llegados aquí, querréis cambiar el Logo, colores, y demás opciones, dejadme mostraros cómo realizarlo:
Para cambiar el Logo, tendremos que irnos hasta Administration – Settings – Assets y ya podremos subir nuestro Logo, favicon, etc

Para cambiar los colores predeterminados y hacer que Rocket Chat luzca más corporativo, tendremos que irnos a Administration – Settings – Layout e introducir nuestros colores corporativos:

Me he tomado el lujo de personalizarlo como si fuera el Chat Corporativo de Veeam, ¡Rocket Veeam! 🙂

En próximas entradas veremos cómo configurarlo e integrarlo con Zimbra Collaboration mediante Zimlet y autenticación LDAP



Excelente e interesante software Jorge, actualmente trabajamos con Cisco Jabber como chat corporativo sin embargo en la empresa nos gusta experimentar con sistemas open source y este producto se ve muy prometedor.
Gracias por compartirlo, saludos desde Honduras!
Muchas gracias David, probarlo, seguro que os gusta.
Un saludo
Ahora tengo una pregunta, suponte que lo quiero instalar en una pequeña empresa, que tiene algunos empleados que no están en la empresa, pero usarian este chat por el smartphone. Como hago para configurar mi ubuntu para que tenga una IP estatica me imagino..yo.. claro. O mejor dicho cual es el camino para no presindir de un hoating como digitalocean o alguno de esos. Gracias Buen post
Saludos,
Tendrias que hacer un NAT de los puertos que necesitas para Rocket hacia el exterior, si pusiste el proxy inverso, supongo que el 443.
Un saludo
Estimado tengo problemas para cync con el AD, alguien ya lo probo?
Yo he probado con OpenLDAP y funciona de maravilla 🙂
Un saludo
Hola feliz tarde…. muy buena la explicación!!! 😉 quisiera evitar que los usuarios creen canales y solo utilicen el canal creado por el administrador . como podría configurar ???
Saludos Maridel, tienes la opción en Administration – Permissions, quita los privilegios de crear canal para los roles de user
Un saludo
Hola gracias por la ayuda… la verdad no se si te ha pasado pero despues que configure el chat, cuando ingreso por cualquier navegador se queda la pagina de inicio en color verde turquesa oscuro y el el medio con una franja blanca… sera algun problema de configuracion en el chat o servidor?? por favor si sabes algo orientame… Gracias!!!
Estimado, muy buen post, te felicito, y espero mas de esto, muchas gracias
hola buen dia, he instaldo y configurado el rocket chat, pero no hepodido hecharlo andar en los equipos clientes, alguien podria ilustrarme como lo podria hacer, gracias.
Saludos Edwin,
Que clientes estamos hablando? Cuéntanos un poco mas tu entorno, un saludo.
Excelente Post Jorge de la Cruz, me ha complementado mucho a la hora de poder llegar a instalar todo lo necesario para echar andar el servidor de RocketChat y como poder utilizar en los primeros pasos gracias!!
Estimado muy buen post!!
una consulta ya tengo el rocket.chat sabes como podría conseguir un reporte de las conversaciones que se lleven atraves de este chat.
muchas gracias
Buenas! estoy configurando rocketchat en centos 7, la app funciona bien y la integracion con zimbra tmb (la creacion del usuario la maneja zimbra)
El problema que tengo es que cuando instalo ngnix deja de funcioname la integracion.
…/service/extension/rocket?action=signOn:1 Failed to load resource: the server responded with a status of 500 (Server Error)
Failed to load resource: the server responded with a status of 500 (Server Error)
c9b63b63818b7389d550732abac3e2edcb8831da.js:283 Error: failed [500] The request did not succeed successfully.
at Object.e.makeErrorByStatus (c9b63b63818b7389d550732abac3e2edcb8831da.js:127)
at XMLHttpRequest.m.onreadystatechange (c9b63b63818b7389d550732abac3e2edcb8831da.js:127) Object
Alguna idea??? Gracias.
Muy buen post. Tengo una consulta. Se puede instalar en un hosting como bluehost, de que forma? Gracias!
Hola Jorge, tengo instalado Rocketchat y Jitsi, ambos funcionan perfectamente pero solo puedo ver conferencia entre 2 usuarios y no en el canal pues no se me activa la opcion de llamada en el canal. Me pudieras ayudar??
Buenas tardes!!! Existe una manera mas fácil que utilizar el comando “/poll ” escrito””variante 1″”variante 2″.., para hacer encuestas, ¿Pir wue de otra manera no sale?