Cómo instalar NodeBB con Nginx Proxy en Debian 12

NodeBB es un software de foros de código abierto escrito en JavaScript y Node.js. Utiliza MongoDB como base de datos por defecto. NodeBB ofrece múltiples características, como notificaciones en tiempo real a través de web socket, integración con redes sociales, y también APIs REST completas.

Esta guía te mostrará cómo instalar NodeBB en un servidor Debian 12 con MongoDB como base de datos y Nginx como proxy inverso.

Requisitos previos

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

  • Un servidor Debian 12.
  • Un usuario no root con privilegios sudo.
  • Un nombre de dominio apuntando a una dirección IP del servidor.

Instalación de dependencias

Para comenzar el proceso, instalarás las dependencias para NodeBB. Esto incluye Node.js, NPM (Node.js Package Manager) y el servidor web Nginx del repositorio de Debian. En cuanto a MongoDB, lo instalarás a través del repositorio oficial de MongoDB.

En primer lugar, ejecuta el siguiente comando para instalar los paquetes gnupg y curl en tu sistema Debian.

sudo apt install gnupg curl -y

Añade la clave GPG y el repositorio de MongoDB con el siguiente comando:

curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
--dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

añadir repo mongodb

Ahora actualiza el índice de paquetes de Debian e instala MongoDB, Node.js, NPM, Nginx y Git. Introduce Y para confirmar la instalación.

sudo apt update
sudo apt install mongodb-org nodejs npm git nginx

instalar dependencias

Una vez finalizada la instalación, recarga el gestor systemd con lo siguiente:

sudo systemctl daemon-reload

Ahora ejecuta el siguiente comando para iniciar, habilitar y verificar el estado del servicio MongoDB.

sudo systemctl enable --now mongod
sudo systemctl status mongod

La siguiente salida confirma que MongoDB se está ejecutando.

comprobar mongodb

A continuación, comprueba el estado del servicio Nginx con el comando siguiente. Deberías ver que Nginx está habilitado y ejecutándose en tu sistema.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

comprobar nginx

Por último, comprueba la versión de Node.js y NPM con lo siguiente:

sudo node-v
sudo npm -v

A continuación puedes ver que Node.js 18 y NPM 9 están instalados.

comprueba node.js y npm

Configurar el servidor MongoDB

En esta sección, habilitarás la autenticación MongoDB, crearás un nuevo usuario administrador para MongoDB y, a continuación, crearás una nueva base de datos y un nuevo usuario para la instalación de NodeBB.

Accede al servidor MongoDB con el siguiente comando.

mongosh

Ejecuta la siguiente consulta para cambiar a la base de datos ‘admin’ y crear un nuevo usuario administrador‘admin’ para MongoDB. Asegúrate de cambiar la contraseña‘MongoDBAdminPass‘ por la nueva contraseña.

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

A continuación, crea una nueva base de datos y un nuevo usuario‘nodebb‘ con la contraseña ‘NodeBBPassword‘. Esta base de datos y este usuario se utilizarán para la instalación de NodeBB.

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

Ahora escribe ‘quit()‘ para salir de MongoDB.

configurar mgonodb admin y crear nueva base de datos y usuario

A continuación, abre la configuración de MongoDB‘/etc/mongod.conf‘ con el editor nano.

sudo nano /etc/mongod.conf

Activa la autenticación de MongoDB añadiendo la siguiente configuración.

security:
 authorization: enabled

Guarda y cierra el archivo cuando hayas terminado.

Ahora ejecuta el siguiente comando para reiniciar el servicio MongoDB y aplicar tus nuevos cambios. Una vez ejecutado el comando, se habilitará la autenticación MongoDB.

sudo systemctl restart mongod

Para asegurarte de que la configuración de MongoDB se ha realizado correctamente, inicia sesión en MongoDB con el usuario‘nodebb‘ en la base de datos‘nodebb‘. Introduce tu contraseña cuando se te pida.

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

Después de iniciar sesión, ejecuta la siguiente consulta para comprobar tu conexión y sal de MongoDB.

db.runCommand( { connectionStatus: 1, showPrivileges: false } )
quit()

En la siguiente salida, puedes ver la autenticación como ‘nodebb‘ a la base de datos ‘nodebb‘.

comprobar conexión usuario mongodb

Instalar NodeBB

Con la configuración de MongoDB terminada, vas a descargar e instalar NodeBB. Crearás un usuario dedicado para NodeBB, descargarás e instalarás las dependencias de NodeBB, y luego configurarás un archivo de servicio para tu instalación de NodeBB.

Añade un nuevo usuario de sistema‘nodebb‘ con el directorio home por defecto‘/opt/nodebb‘ utilizando el siguiente comando.

sudo adduser --system --no-create-home --home=/opt/nodebb --group nodebb

añadir nuevo usuario

Ahora descarga el código fuente de NodeBB v3 al directorio ‘/opt/nodebb‘ utilizando git y cambia la propiedad del directorio‘/opt/nodebb‘ 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 configura tu instalación de NodeBB con el siguiente comando.

cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb
  • Introduce tu nombre de dominio para NodeBB.
  • Deja el secreto de NodeBB por defecto y pulsa ENTER.
  • Escribe no para desactivar el uso del plugin anónimo.
  • Selecciona la base de datos como MongoDB.
  • Introduce la base de datos MongoDB con la cadena url: mongodb://nodebb:[email protected]:27017/nodebb.
  • Introduce tu usuario administrador y tu dirección de correo electrónico para NodeBB.
  • Introduce tu contraseña y repite el proceso.

Una vez completado el proceso, verás el mensaje«Configuración de NodeBB completada«. También puedes ver el comando para ejecutar NodeBB.

configuración completa

A continuación, ejecuta el siguiente comando para iniciar o detener NodeBB. Puedes utilizarlo cuando necesites iniciar o detener NodeBB manualmente.

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

iniciar y detener nodebb

Para facilitar la gestión de NodeBB, crearás un nuevo archivo de servicio systemd para NodeBB. Con esto, tu instalación de NodeBB se ejecutará en segundo plano y podrás gestionarla con el comando systemctl.

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

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

Introduce la siguiente configuración en el archivo:

[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=/usr/bin/env node loader.js --no-silent --no-daemon
Restart=always

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo.

Ahora ejecuta el siguiente comando para recargar el gestor systemd y aplicar el nuevo archivo de servicio NodeBB.

sudo systemctl daemon-reload

Después, inicia y activa el servicio ‘nodebb‘ con el siguiente comando systemctl.

sudo systemctl start nodebb
sudo systemctl enable nodebb

Verifica el servicio ‘nodebb‘ con lo siguiente para asegurarte de que el servicio se está ejecutando.

sudo systemctl status nodebb

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

setup nodebb systemd

Configurar Nginx como proxy inverso

En este punto, el NodeBB se está ejecutando en segundo plano en el puerto ‘4567’. Ahora vas a crear un nuevo bloque de servidor Nginx que se utilizará como proxy inverso para tu foro NodeBB. asegúrate de que tienes tu nombre de dominio apuntando a la dirección IP de tu servidor.

Crea una nueva configuración de bloque de servidor Nginx‘/etc/nginx/sites-available/nodebb‘ con el editor nano.

sudo nano /etc/nginx/sites-available/nodebb

Añade la siguiente configuración para configurar Nginx como proxy inverso para NodeBB. Asegúrate de cambiar el parámetro nombre_servidor por tu nombre de dominio.

server {
 listen 80;
server_name forum.hwdomain.io;

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 termines, guarda el archivo y sal.

Ahora activa el archivo de bloque del servidor ‘nodebb’ y prueba tu sintaxis de Nginx con lo siguiente:

sudo ln -s /etc/nginx/sites-available/nodebb /etc/nginx/sites-enabled/
sudo nginx -t

Si la sintaxis de Nginx es correcta, verás una salida ‘syntax is ok – test is successful’.

configuración de nginx

Por último, ejecuta el siguiente comando para reiniciar el servicio Nginx y aplicar tus cambios.

sudo systemctl restart nginx

Asegurar NodeBB con HTTPS

En esta guía, asegurarás NodeBB con HTTPS a través de Certbot y Letsencrypt. Si estás utilizando un dominio local, puedes saltarte esto o también puedes generar certificados autofirmados.

Instala Certbot y el plugin Certbot Nginx con el siguiente comando apt. Escribe Y para proceder con la instalación.

sudo apt install certbot python3-certbot-nginx

Ahora ejecuta el siguiente comando certbot para generar los certificados SSL para tu nombre de dominio NodeBB. Asegúrate de cambiar tanto la dirección de correo electrónico como el nombre de dominio con tu información.

sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email protected] -d forum.hwdomain.i

Tras completar el proceso, tu instalación de NodeBB debería estar protegida automáticamente con HTTPS. Tus certificados SSL/TLS estarán disponibles en el directorio‘/etc/letsencrypt/live/domain.com‘.

Acceder a NodeBB

Visita https://forum.hwdomain.io/ usando tu navegador web y verás la página de índice por defecto de NodeBB como la siguiente:

página de inicio

Desde la página de inicio, haz clic en el menú Iniciar sesión y se te mostrará la página de inicio de sesión de NodeBB. Introduce tu usuario y contraseña de administrador y haz clic en Iniciar sesión.

página de acceso

Si tienes éxito, verás el siguiente panel de usuario.

panel de usuario

Haz clic en el menú Admin para acceder al panel de administración de NodeBB como el siguiente:

panel de administración

Conclusión

¡Enhorabuena! Ya has instalado NodeBB en el servidor Debian 12. Tienes NodeBB funcionando con la base de datos MongoDB y el proxy inverso Nginx. También has asegurado NodeBB con HTTPS a través de Certbot y Letsencrypt.

También te podría gustar...