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
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
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.
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
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.
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.
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‘.
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
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.
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
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.
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’.
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:
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.
Si tienes éxito, verás el siguiente panel de usuario.
Haz clic en el menú Admin para acceder al panel de administración de NodeBB como el siguiente:
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.