Cómo instalar Let’s Chat en Ubuntu 22.04

Let’s Chat es una aplicación de mensajería gratuita, de código abierto y persistente que se ejecuta en Node.js y MongoDB. Está diseñada para equipos pequeños e íntimos y ofrece un rico conjunto de funciones, como autenticación LDAP/Kerberos, una API tipo REST y compatibilidad con XMPP. Con Let’s Chat, puedes enviar todo tipo de mensajes y también encontrar chats de grupos de interés, pegatinas de voz y emojis geniales.

En este post, te mostraremos cómo instalar Let’s Chat con Nginx como proxy inverso en Ubuntu 22.04.

Requisitos previos

  • Un servidor que ejecute Ubuntu 22.04.
  • Una contraseña de root configurada en el servidor.

Instalar Node.JS

Antes de empezar, necesitarás instalar Node.js en tu servidor. Para instalar la última versión de Node.js, tendrás que añadir el repositorio Node Source a APT.

Primero, instala todas las dependencias necesarias con el siguiente comando:

apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common -y

Una vez instaladas todas las dependencias, añade el repositorio de Node.js a APT

curl -sL https://deb.nodesource.com/setup_18.x | bash -

Una vez añadido el repositorio, puedes instalar el Node.js con el siguiente comando:

apt-get install nodejs -y

Tras la instalación correcta, verifica la versión de Node.js con el siguiente comando:

node -v

Obtendrás la siguiente salida:

v18.7.0

Instalar base de datos MongoDB

También necesitarás instalar una base de datos MongoDB en tu servidor.

En primer lugar, descarga e instala el paquete libssl con el siguiente comando:

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb

A continuación, añade la clave GPG de MongoDB y el repositorio con el siguiente comando:

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.4.list

A continuación, actualiza la caché del repositorio con el siguiente comando:

apt update

Una vez actualizado tu repositorio, instala el MongoDB utilizando el siguiente comando:

apt install -y mongodb-org

Una vez instalado el paquete MongoDB, inicia y habilita el servicio MongoDB con el siguiente comando:

systemctl start mongod
systemctl enable mongod

Puedes comprobar el estado del servicio MongoDB con el siguiente comando:

systemctl status mongod

Deberías ver la siguiente salida:

? mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-07-31 04:00:08 UTC; 6s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 42274 (mongod)
     Memory: 61.1M
        CPU: 1.014s
     CGroup: /system.slice/mongod.service
             ??42274 /usr/bin/mongod --config /etc/mongod.conf

Jul 31 04:00:08 ubuntu2204 systemd[1]: Started MongoDB Database Server.

Instalar Let’s Chat

En primer lugar, tendrás que descargar la última versión de Let’s Chat del repositorio Git Hub. Puedes descargarla con el siguiente comando:

git clone https://github.com/sdelements/lets-chat.git

Una vez completada la descarga, cambia el directorio al descargado e instala todas las dependencias necesarias con el siguiente comando:

cd lets-chat
npm install

A continuación, copia el archivo de configuración de ejemplo e inicia el servidor de Let’s Chat con el siguiente comando:

cp settings.yml.sample settings.yml
npm start

Deberías ver la siguiente salida:

> [email protected] start
> node app.js

(node:42373) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`. See http://mongoosejs.com/docs/4.x/docs/connections.html#use-mongo-client
(Use `node --trace-deprecation ...` to show where the warning was created)

???     ?????????????????????????     ??????????  ??? ?????? ?????????
???     ?????????????????????????    ???????????  ????????????????????
???     ??????     ???   ????????    ???     ????????????????   ???   
???     ??????     ???   ????????    ???     ????????????????   ???   
????????????????   ???   ????????    ???????????  ??????  ???   ???   
????????????????   ???   ????????     ??????????  ??????  ???   ???

Release 0.4.8

Pulsa CTRL + C para detener el servicio Let’s Chat.

Crear un archivo de servicio Systemd para Let’s Chat

A continuación, tendrás que crear un archivo de servicio systemd para Let’s Chat. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/letschat.service

Añade las siguientes líneas:

[Unit]
Description=Let's Chat Server
Wants=mongodb.service
After=network.target mongod.service

[Service]
Type=simple
WorkingDirectory=/root/lets-chat
ExecStart=/usr/bin/npm start
User=root
Group=root
Restart=always
RestartSec=9

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo, luego recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia y activa el servicio Let’s Chat con el siguiente comando:

systemctl start letschat
systemctl enable letschat

A continuación, comprueba el estado de Let’s Chat con el siguiente comando:

systemctl status letschat

Deberías ver la siguiente salida:

? letschat.service - Let's Chat Server
     Loaded: loaded (/etc/systemd/system/letschat.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-07-31 04:02:34 UTC; 4s ago
   Main PID: 42429 (npm start)
      Tasks: 23 (limit: 2242)
     Memory: 157.9M
        CPU: 4.457s
     CGroup: /system.slice/letschat.service
             ??42429 "npm start" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??42440 sh /tmp/start-b5e830e4.sh
             ??42441 letschat "" "" ""

Jul 31 04:02:34 ubuntu2204 npm[42429]: > node app.js
Jul 31 04:02:38 ubuntu2204 npm[42441]: (node:42441) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead>
Jul 31 04:02:38 ubuntu2204 npm[42441]: (Use `node --trace-deprecation ...` to show where the warning was created)
Jul 31 04:02:38 ubuntu2204 npm[42441]: ???     ?????????????????????????     ??????????  ??? ?????? ?????????
Jul 31 04:02:38 ubuntu2204 npm[42441]: ???     ?????????????????????????    ???????????  ????????????????????
Jul 31 04:02:38 ubuntu2204 npm[42441]: ???     ??????     ???   ????????    ???     ????????????????   ???
Jul 31 04:02:38 ubuntu2204 npm[42441]: ???     ??????     ???   ????????    ???     ????????????????   ???
Jul 31 04:02:38 ubuntu2204 npm[42441]: ????????????????   ???   ????????    ???????????  ??????  ???   ???
Jul 31 04:02:38 ubuntu2204 npm[42441]: ????????????????   ???   ????????     ??????????  ??????  ???   ???
Jul 31 04:02:38 ubuntu2204 npm[42441]: Release 0.4.8

En este punto, el servicio Let’s Chat está iniciado y escucha en el puerto 5000. Puedes comprobarlo con el siguiente comando:

ss -antpl | grep 5000

Deberías ver la siguiente salida:

LISTEN 0      511        127.0.0.1:5000       0.0.0.0:*    users:(("letschat",pid=42441,fd=20))     

Configurar Nginx para Let’s Chat

A continuación, tendrás que instalar y configurar Nginx como proxy inverso para Let’s Chat. Así podrás acceder al Chat de Let’s a través del puerto 80.

En primer lugar, instala el paquete de servidor Nginx con el siguiente comando:

apt install nginx -y

A continuación, crea un archivo de configuración de host virtual Nginx:

nano /etc/nginx/conf.d/letschat.conf

Añade las siguientes configuraciones:

server {
server_name letschat.example.com;
listen 80;

access_log /var/log/nginx/lets_chat-access.log;
error_log /var/log/nginx/lets_chat-error.log;

location / {
proxy_set_header   X-Real-IP $remote_addr;
proxy_set_header   Host      $host;
proxy_http_version 1.1;
proxy_set_header   Upgrade $http_upgrade;
proxy_set_header   Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
proxy_pass         http://127.0.0.1:5000;
}

}

Guarda y cierra el archivo, luego verifica que Nginx no tenga ningún error de sintaxis:

nginx -t

Deberías ver la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Por último, reinicia el servicio Nginx para aplicar los cambios de configuración:

systemctl restart nginx

También puedes comprobar el estado del Nginx utilizando el siguiente comando:

systemctl status nginx

Deberías ver el estado de Nginx en la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-07-31 04:04:23 UTC; 5s ago
       Docs: man:nginx(8)
    Process: 43193 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 43194 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 43195 (nginx)
      Tasks: 2 (limit: 2242)
     Memory: 2.5M
        CPU: 35ms
     CGroup: /system.slice/nginx.service
             ??43195 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??43196 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Jul 31 04:04:23 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 31 04:04:23 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.

Acceder a la interfaz web de Let’s Chat

Ahora, abre tu navegador web y accede a la interfaz web de Let’s Chat utilizando la URL http://letschat.example.com.

Iniciar sesión en el chat

Deberás hacer clic en el botón «Necesito una cuenta» para crear una cuenta. Deberías ver la siguiente página:

Registrar una cuenta

Proporciona tu nombre de usuario, contraseña, dirección de correo electrónico y haz clic en el botón Registrar. Una vez que te hayas registrado correctamente, deberías ver la siguiente pantalla:

Inicio de sesión correcto

Haz clic en el botón Aceptar. Se te redirigirá a la pantalla de inicio de sesión de Let’s Chat:

Regístrate en

Proporciona tu nombre de usuario y contraseña de Let’s Chat, y haz clic en el botón Iniciar sesión. Deberías ver el panel de Let’s Chat en la siguiente pantalla:

Sala de chat

Conclusión

Enhorabuena! has instalado correctamente el servidor de Let’s Chat con Nginx como proxy inverso en Ubuntu 22.04. Ahora puedes desplegar Let’s Chat en tu entorno de trabajo y empezar a comunicarte con otros miembros del equipo. No dudes en preguntarme si tienes alguna duda.

Scroll al inicio