Cómo instalar NodeBB con MongoDB y Nginx Proxy en AlmaLinux 9

NodeBB es un software de foros de código abierto basado en Node.js que proporciona una solución moderna y con capacidad de respuesta para las comunidades online. Ejecutándose en Ubuntu Linux, NodeBB aprovecha la robustez y flexibilidad del sistema operativo para ofrecer un alto rendimiento y escalabilidad. Utiliza una combinación de MongoDB y Redis para la gestión de bases de datos, por lo que es capaz de manejar grandes volúmenes de contenido generado por los usuarios de manera eficiente.

NodeBB es conocido por sus notificaciones en tiempo real, su perfecta integración con varias plataformas de redes sociales y su amplio ecosistema de plugins, que permite a los administradores personalizar sus foros para satisfacer necesidades específicas. Además, su diseño mobile-first garantiza una experiencia de usuario coherente y atractiva en todos los dispositivos. Las características de estabilidad y seguridad de Ubuntu complementan a NodeBB, convirtiéndolo en una opción ideal para alojar y gestionar comunidades online dinámicas.

Esta guía proporcionará instrucciones paso a paso para instalar NodeBB en un servidor Alma Linux 9. Utilizarás MongoDB como base de datos, Nginx como proxy inverso, y luego asegurarás NodeBB con HTTPS a través de Certbot y Letsencrypt.

Requisitos previos

Antes de empezar, asegúrate de que tienes lo siguiente:

  • Un servidor Alma Linux 9
  • Un usuario no root con privilegios de administrador
  • Un nombre de dominio apuntando a la dirección IP del servidor
  • Un SELinux con estado permisivo y activado

Instalar dependencias

NodeBB es un software de foros de código abierto basado en Node.js. Para instalar NodeBB, debes asegurarte de que están instalados los siguientes paquetes, incluyendo:

  • Herramientas del sistema como «Herramientas de Desarrollo», Git e ImageMagick
  • Node.js 18 o superior y NPM (Node Package Manager)
  • Servidor de base de datos NoSQL MongoDB
  • Servidor web Nginx como proxy inverso

En esta sección, instalarás esas dependencias en el servidor Alma Linux 9.

En primer lugar, ejecuta el siguiente comando para habilitar el repositorio Alma Linux CRB (CodeReadyBuild) e instalar el repositorio EPEL.

sudo crb enable
sudo dnf install epel-release -y

A continuación, crea un nuevo archivo de repositorio‘/etc/yum.repos.d/mongodb-org-7.0.repo‘ con el editor‘nano‘.

sudo nano /etc/yum.repos.d/mongodb-org-7.0.repo

Introduce la siguiente configuración en el archivo:

[mongodb-org-7.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/7.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://pgp.mongodb.com/server-7.0.asc

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el siguiente comando para habilitar el repositorio de Node.js 18 para AlmaLinux.

sudo dnf module enable nodejs:18 -y

instalar deps

A continuación, ejecuta el siguiente comando‘dnf‘ para instalar las‘Herramientas de Desarrollo‘, el servidor MongoDB, Node.js, NPM, Git e ImageMagick.

sudo dnf group install "Development Tools" -y
sudo dnf install nodejs npm git ImageMagick mongodb-org -y

instalar paquetes

Una vez finalizada la instalación, inicia y habilita el servicio‘mongod‘ con el siguiente comando.

sudo systemctl enable --now mongod
sudo systemctl status mongod

A continuación puedes ver que el servidor MongoDB se está ejecutando y está habilitado.

activar mongodb

Por último, comprueba la versión de Node.js con el siguiente comando. Deberías ver que Node.js 18 está instalado en el servidor Alma Linux.

node --version
npm --version

comprobar nodejs npm

Configurar el servidor MongoDB y la base de datos para NodeBB

Con las dependencias instaladas, asegurarás el servidor MongoDB habilitando la autenticación por contraseña y configurando la contraseña de administrador de MongoDB. Después de eso, también crearás una nueva base de datos MongoDB y un usuario para la instalación de NodeBB.

Inicia sesión en el servidor MongoDB con el comando‘mongosh‘ que aparece a continuación.

mongosh

inicio de sesión mongodb

Una vez iniciada la sesión, cambia a la base de datos‘admin‘ y ejecuta la consulta de abajo para configurar una contraseña de administrador para MongoDB. Asegúrate de cambiar‘MongoDBAdminPass‘ con tu combinación de contraseñas.

use admin
db.createUser( { user: "admin", pwd: "MongoDBAdminPass", roles: [ { role: "root", db: "admin" } ] } )

Ahora ejecuta las siguientes consultas para crear una nueva base de datos y un usuario‘nodebb‘ con la contraseña ‘NodeBBPassword’. Puedes ajustar los siguientes detalles de la base de datos según necesites.

use nodebb
db.createUser( { user: "nodebb", pwd: "NodeBBPassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

Escribe‘quit()‘ para salir del servidor MongoDB.

crear usuario administrador y configurar base de datos

Después de configurar la contraseña de administrador para MongoDB, vamos a activar la autenticación de MongoDB.

Abre el archivo de configuración por defecto de MongoDB‘/etc/mongod.conf‘ con el editor‘nano‘.

sudo nano /etc/mongod.conf

Para activar la autenticación de MongoDB, descomenta la línea‘security‘ y añade‘authorization: enabled‘ como se indica a continuación:

security:
 authorization: enabled

Guarda el archivo y sal de él cuando hayas terminado.

Ahora ejecuta el siguiente comando‘systemctl‘ para reiniciar el servidor MongoDB y aplicar tus cambios. La autenticación de MongoDB debería estar habilitada ahora.

sudo systemctl restart mongod

Para verificar la configuración, ejecuta el siguiente comando‘mongosh‘ para iniciar sesión en MongoDB utilizando el usuario‘nodebb‘. Introduce la contraseña del usuario‘nodebb‘.

mongosh "mongodb://127.0.0.1:27017" --username nodebb --authenticationDatabase nodebb

Instalar NodeBB

Ahora que has configurado el servidor MongoDB, estás listo para instalar NodeBB en el servidor Alma Linux.

Añade un nuevo usuario y grupo del sistema‘nodebb‘ con el siguiente comando.

sudo adduser -r -M -d /opt/nodebb -U nodebb

Descarga el código fuente de NodeBB en el directorio‘/opt/nodebb‘ y cambia la propiedad al usuario‘nodebb‘.

git clone -b v3.x https://github.com/NodeBB/NodeBB.git /opt/nodebb
sudo chown -R nodebb:nodebb /opt/nodebb

Ve al directorio‘/opt/nodebb‘ y ejecuta el script de instalación de NodeBB como el siguiente:

cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb

Aquí se te preguntarán algunas configuraciones de NodeBB:

  • Introduce tu nombre de dominio para NodeBB, como https://forum.howtoforge.local.
  • Pulsa ENTER en la configuración del secreto de NodeBB. Déjalo por defecto.
  • Introduce no para desactivar el acceso anónimo a NodeBB.
  • Selecciona MongoDB como base de datos.
  • Introduce los detalles de tu base de datos MongoDB en el formato mongodb://nodebb:[email protected]:27017/nodebb.
  • Introduce el nuevo usuario administrador y la dirección de correo electrónico para NodeBB.
  • Introduce la contraseña para tu usuario administrador de NodeBB y repite.

Una vez completado el proceso, verás una salida como esta:

iniciar sesión en mongodb

Ahora puedes iniciar o detener NodeBB manualmente ejecutando el script‘nodebb‘ como se muestra a continuación:

sudo su -s /bin/bash -c "./nodebb start" nodebb
sudo su -s /bin/bash -c "./nodebb stop" nodebb

inicio y parada de nodebb

Ejecutar NodeBB como un servicio systemd

Para gestionar NodeBB más fácilmente, puedes controlar el proceso NodeBB utilizando la utilidad‘systemctl‘. Para ello, necesitas crear un nuevo archivo de servicio systemd para ejecutar NodeBB.

Crea un nuevo archivo de servicio systemd‘/etc/systemd/system/nodebb.service‘ con el editor‘nano‘.

sudo nano /etc/systemd/system/nodebb.service

Introduce la siguiente configuración para ejecutar NodeBB como un servicio systemd.

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service
[Service]
Type=simple
User=nodebb

StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/opt/nodebb
ExecStart=/bin/env node loader.js --no-silent --no-daemon
Restart=always

[Install]
WantedBy=multi-user.target

Guarda el archivo y sal del editor.

Recarga el gestor systemd con el siguiente comando‘systemctl‘.

sudo systemctl daemon-reload

Por último, inicia y activa el servicio‘nodebb‘ y comprueba que se está ejecutando:

sudo systemctl enable --now nodebb
sudo systemctl status nodebb

A continuación puedes ver que NodeBB se está ejecutando en segundo plano como un servicio systemd.

setup nodebb systemd

Configurar Nginx como proxy inverso

Ahora que NodeBB se está ejecutando en segundo plano como un servicio, vamos a instalar Nginx y crear un nuevo bloque de servidor que se utilizará como proxy inverso para NodeBB.

Primero, ejecuta el comando‘dnf‘ que aparece a continuación para instalar el servidor web Nginx.

sudo dnf install nginx -y

instalar nginx

Ahora crea una nueva configuración de Nginx‘/etc/nginx/conf.d/nodebb.conf‘ con el editor‘nano‘.

sudo nano /etc/nginx/conf.d/nodebb.conf

Introduce la siguiente configuración y asegúrate de cambiar el parámetro‘server_name‘ por el nombre de tu dominio.

server {
listen 80;
server_name forum.howtoforge.local;

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;

proxy_pass http://127.0.0.1:4567;
proxy_redirect off;

# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}

Cuando hayas terminado, guarda el archivo y sal del editor.

A continuación, ejecuta el siguiente comando para verificar la sintaxis de Nginx. Si tiene éxito, obtendrás la salida‘syntax is ok – test is successful‘.

sudo nginx -t

configuración vhost

Por último, ejecuta el siguiente comando‘systemctl‘ para iniciar, habilitar y verificar el servidor web Nginx.

sudo systemctl enable --now nginx
sudo systemctl status nginx

A continuación puedes ver que el servidor web Nginx se está ejecutando.

comprobar nginx

Asegurar NodeBB con HTTPS

Llegados a este punto, tu instalación de NodeBB está lista. Pero si estás en un dominio público, debes asegurar NodeBB con HTTPS. En esta sección, configurarás HTTPS para NodeBB con Certbot y Letsencrypt.

Instala Certbot y el plugin Certbot Nginx con el siguiente comando:

sudo dnf install certbot python3-certbot-nginx -y

Ahora ejecuta el siguiente comando‘certbot‘ para asegurar tu instalación de NodeBB con HTTPS. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico en este comando.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d forum.howtoforge.local

Una vez completado el proceso, tus certificados SSL/TLS estarán disponibles en el directorio‘/etc/letsencrypt/live/domain.com‘ y tu instalación de NodeBB debería estar asegurada con HTTPS.

Acceder a NodeBB

Abre tu navegador web y visita el dominio de NodeBB, por ejemplo https://forum.howtoforge.local. Si tu instalación se ha realizado correctamente, verás la siguiente página de inicio de NodeBB.

nodebb

Conclusión

¡Enhorabuena! Has terminado la instalación de NodeBB en el servidor Alma Linux 9. Tienes el foro NodeBB funcionando con el servidor MongoDB y Nginx como proxy inverso. También has asegurado la instalación de NodeBB con HTTPS a través de Certbot y Letsencrypt.

También te podría gustar...