NodeBB Installation · 12 min read · Oct 14, 2025

Cómo instalar el foro NodeBB en Ubuntu 22.04

NodeBB es un software de foro moderno impulsado por el marco Node.js. Utiliza MongoDB, PostgreSQL o Redis para almacenar datos. Utiliza sockets web para notificaciones en tiempo real e interacciones instantáneas. Tiene características modernas como integración de redes sociales, soporte para plugins, capacidad de respuesta móvil y APIs REST completas de lectura/escritura.

NodeBB está disponible tanto como un proyecto de autoalojamiento de código abierto como un servicio en la nube. En este tutorial, aprenderás cómo instalar el foro NodeBB utilizando Nginx en un servidor Ubuntu 22.04. Ubuntu 22.04 no admite oficialmente MongoDB; por lo tanto, utilizaremos PostgreSQL para almacenar datos.

Requisitos previos

  • Un servidor que ejecute Ubuntu 22.04 con un mínimo de 1GB de RAM.
  • Un usuario no root con privilegios sudo.
  • El Firewall sin complicaciones (UFW) está habilitado y en funcionamiento.
  • Un nombre de dominio completamente calificado (FQDN) que apunte al servidor como forum.example.com.
  • Todo está actualizado. $ sudo apt update && sudo apt upgrade

Paso 1 - Configurar el Firewall

Antes de instalar cualquier paquete, el primer paso es configurar el firewall para permitir conexiones HTTP y HTTPS.

Verifica el estado del firewall.

$ sudo ufw status

Deberías ver algo como lo siguiente.

Estado: activo

Para                         Acción      Desde
--                         ------      ----
OpenSSH                    PERMITIR   En cualquier lugar
OpenSSH (v6)               PERMITIR   En cualquier lugar (v6)

Permitir los puertos HTTP y HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Verifica el estado nuevamente para confirmar.

$ sudo ufw status
Estado: activo

Para                         Acción      Desde
--                         ------      ----
OpenSSH                    PERMITIR   En cualquier lugar
80/tcp                     PERMITIR   En cualquier lugar
443                        PERMITIR   En cualquier lugar
OpenSSH (v6)               PERMITIR   En cualquier lugar (v6)
80/tcp (v6)                PERMITIR   En cualquier lugar (v6)
443 (v6)                   PERMITIR   En cualquier lugar (v6)

Paso 2 - Instalar PostgreSQL

El primer paso para instalar PostgreSQL es agregar su clave GPG.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Agrega el repositorio APT a tu lista de fuentes.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Actualiza el repositorio del sistema.

$ sudo apt update

Ahora, puedes instalar PostgreSQL.

$ sudo apt install postgresql postgresql-contrib

Verifica el estado del servicio PostgreSQL.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Cargado: cargado (/lib/systemd/system/postgresql.service; habilitado; ajuste de proveedor: habilitado)
     Activo: activo (salido) desde sáb 2022-09-10 06:25:11 UTC; hace 13s
    Proceso: 12083 ExecStart=/bin/true (código=salido, estado=0/SUCCESS)
   Main PID: 12083 (código=salido, estado=0/SUCCESS)
        CPU: 1ms

Sep 10 06:25:11 nodebb systemd[1]: Iniciando PostgreSQL RDBMS...
Sep 10 06:25:11 nodebb systemd[1]: Finalizado PostgreSQL RDBMS.

Paso 3 - Configurar PostgreSQL

Necesitamos establecer una contraseña para el usuario administrativo predeterminado de Postgres postgres. Primero, inicia sesión en el Shell de Postgres.

$ sudo -u postgres psql

Ingresa el siguiente comando para cambiar la contraseña.

postgres=# \password postgres

Se te pedirá una nueva contraseña.

Ingresa nueva contraseña para el usuario "postgres":
Ingresa de nuevo:

Crea un nuevo usuario para NodeBB.

postgres=# CREATE ROLE nbbuser WITH LOGIN ENCRYPTED PASSWORD 'YourNodeBBPassword';

Crea una nueva base de datos para NodeBB.

postgres=# CREATE DATABASE nodebbdb OWNER nbbuser;

Escribe \q para salir del shell.

postgres=# \q

Paso 4 - Instalar Node.js

Dado que el foro NodeBB está escrito utilizando el marco Node.js, necesitamos instalarlo para que funcione.

Emite los siguientes comandos para instalar la versión LTS (v16.x) de Node.js.

$ curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
$ sudo apt install nodejs

Verifica la instalación de Node.js y NPM.

$ node -v
v16.17.0
$ npm -v
8.15.0

Paso 5 - Instalar Git

Antes de proceder a instalar NodeBB, necesitamos instalar Git. Ejecuta el siguiente comando para instalar Git.

$ sudo apt install git

Ejecuta los siguientes comandos para realizar la configuración inicial de Git.

$ git config --global user.name "Tu Nombre"
$ git config --global user.email "[email protected]"

Paso 6 - Instalar NodeBB

No se recomienda ejecutar NodeBB como usuario root. Crea un usuario del sistema sin privilegios y sin contraseña.

$ sudo adduser nodebb --disabled-password

Sigue saltando todas las demás opciones.

Crea el directorio donde vivirá tu foro NodeBB.

$ sudo mkdir /var/www/html/nodebb -p

Cambia la propiedad de la carpeta al usuario recién creado.

$ sudo chown -R nodebb:nodebb /var/www/html/nodebb

Inicia sesión en el usuario recién creado.

$ sudo su - nodebb

Cambia al directorio de instalación de NodeBB.

$ cd /var/www/html/nodebb

Para instalar NodeBB, primero necesitamos clonar su repositorio de GitHub.

Clona NodeBB en el directorio /var/www/nodebb. El punto al final del comando se refiere al directorio actual.

$ git clone -b v2.x https://github.com/NodeBB/NodeBB.git .

Aquí hemos clonado la rama v2.x de NodeBB que alberga la última versión estable de NodeBB. Puedes encontrar la última rama estable en la página de Últimas Ramas de NodeBB.

NodeBB viene con una utilidad de línea de comandos. Usa el siguiente comando para instalar NodeBB.

$ ./nodebb setup

Puedes presionar enter para elegir el valor predeterminado.

2022-09-10T10:10:27.957Z [2633] - info: Configuración de NodeBB activada a través de la línea de comandos

¡Bienvenido a NodeBB v2.5.2!

Esto parece ser una nueva instalación, así que tendrás que responder algunas preguntas sobre tu entorno antes de que podamos proceder.
Presiona enter para aceptar la configuración predeterminada (mostrada entre corchetes).
URL utilizada para acceder a este NodeBB (http://localhost:4567) https://forum.example.com
Por favor, ingresa un secreto de NodeBB (44fd62bc-5047-4414-a4ca-83105740b624)
¿Te gustaría enviar el uso anónimo de plugins a nbbpm? (sí) no
¿Qué base de datos utilizar? (mongo) postgres
2022-09-10T10:10:43.237Z [2633] - info:
Ahora configurando la base de datos postgres:
IP o dirección del host de tu instancia de PostgreSQL (127.0.0.1)
Puerto del host de tu instancia de PostgreSQL (5432)
Nombre de usuario de PostgreSQL nbbuser
Contraseña de tu base de datos PostgreSQL
Nombre de la base de datos de PostgreSQL (nodebb) nodebbdb
Habilitar SSL para el acceso a la base de datos PostgreSQL (falso)
........

Para el valor de la URL utilizada para acceder a este NodeBB, elige la URL final a la que deseas acceder al foro. Si accederás al foro a través de la IP de tu servidor, ingresa eso o ingresa el dominio completo del foro. Aquí ingresaremos https://forum.example.com. Elige no como respuesta a la pregunta sobre enviar el uso anónimo de plugins. Escribe postgres como el tipo de base de datos.

Luego elige la IP del Host y el puerto predeterminados presionando enter e ingresa tu nombre de usuario de PostgreSQL que es cuando ingresas nbbuser y la contraseña que elegiste anteriormente para ese nombre de usuario mientras configurabas MongoDB. Tu base de datos nodebbdb debería ser elegida.

También se te pedirá que crees un usuario administrador y sus detalles.

.....
2022-09-10T10:11:14.121Z [2633] - advertencia: No se han detectado administradores, ejecutando la configuración inicial del usuario

Nombre de usuario del administrador navjot
Dirección de correo electrónico del administrador [email protected]
Contraseña
Confirmar contraseña
.....
....
2022-09-10T10:14:28.160Z [2633] - info: [build] Compilación de activos exitosa. Completado en 118.777seg.

     =================================================================================================================================================================

Configuración de NodeBB completada. Ejecuta "./nodebb start" para iniciar manualmente tu servidor NodeBB.

Una vez que la configuración esté completa, ejecuta el siguiente comando para iniciar NodeBB.

$ ./nodebb start
Iniciando NodeBB
  "./nodebb stop" para detener el servidor NodeBB
  "./nodebb log" para ver la salida del servidor
  "./nodebb help" para más comandos

Sal del usuario de NodeBB.

$ exit

Paso 7 - Ejecutar NodeBB como un Servicio del Sistema

El servicio NodeBB no se ejecutará después de un reinicio del sistema. Para evitar iniciar NodeBB cada vez, necesitamos instalarlo como un Servicio del Sistema.

Detén el servicio NodeBB primero. Cambia al directorio de NodeBB y luego ejecuta el comando directamente usando el comando sudo -u.

$ cd /var/www/html/nodebb  
$ sudo -u nodebb ./nodebb stop

Ejecuta el siguiente comando para crear y editar el archivo de configuración de unidad nodebb.service de systemd.

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

Pega el siguiente código en el editor.

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target postgresql.service

[Service]
Type=simple
User=nodebb

StandardError=syslog
SyslogIdentifier=nodebb

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

[Install]
WantedBy=multi-user.target

Aquí hemos elegido el nombre de usuario como nodebb que creamos en el Paso 6 y la ruta que elegimos para instalar NodeBB en ella.

Habilita el servicio NodeBB.

$ sudo systemctl enable nodebb

Inicia el servicio NodeBB.

$ sudo systemctl start nodebb

Verifica el estado del servicio.

$ sudo systemctl status nodebb
? nodebb.service - NodeBB
     Cargado: cargado (/etc/systemd/system/nodebb.service; habilitado; ajuste de proveedor: habilitado)
     Activo: activo (ejecutándose) desde dom 2022-09-11 21:41:07 UTC; hace 2s
       Docs: https://docs.nodebb.org
   Main PID: 26844 (node)
      Tasks: 18 (límite: 2237)
     Memoria: 94.1M
        CPU: 2.114s
     CGroup: /system.slice/nodebb.service
             ??26844 node loader.js --no-silent --no-daemon
             ??26855 /usr/bin/node /var/www/html/nodebb/app.js

Sep 11 21:41:07 forum systemd[1]: Iniciado NodeBB.
Sep 11 21:41:07 forum nodebb[26844]: NodeBB v2.5.2 Copyright (C) 2013-2022 NodeBB Inc.
Sep 11 21:41:07 forum nodebb[26844]: Este programa viene con ABSOLUTAMENTE NINGUNA GARANTÍA.
Sep 11 21:41:07 forum nodebb[26844]: Este es software libre, y eres bienvenido a redistribuirlo bajo ciertas condiciones.
Sep 11 21:41:07 forum nodebb[26844]: Para la licencia completa, visita: http://www.gnu.org/copyleft/gpl.html
Sep 11 21:41:07 forum nodebb[26844]: Clustering habilitado: Iniciando 1 proceso(s).
Sep 11 21:41:08 forum nodebb[26855]: 2022-09-11T21:41:08.002Z [4567/26855] - info: Inicializando NodeBB v2.5.2 https://forum.example.com

Paso 8 - Instalar Nginx

Ubuntu 22.04 viene con una versión más antigua de Nginx. Para instalar la última versión, necesitas descargar el repositorio oficial de Nginx.

Importa la clave de firma de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Agrega el repositorio para la versión estable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Actualiza los repositorios del sistema.

$ sudo apt update

Instala Nginx.

$ sudo apt install nginx

Verifica la instalación.

$ nginx -v
nginx version: nginx/1.22.0

Inicia el servidor Nginx.

$ sudo systemctl start nginx

Paso 9 - Instalar SSL

Necesitamos instalar Certbot para generar el certificado SSL. Puedes instalar Certbot utilizando el repositorio de Ubuntu o obtener la última versión utilizando la herramienta Snapd. Usaremos la versión de Snapd.

Ubuntu 22.04 viene con Snapd instalado por defecto. Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd esté actualizada.

$ sudo snap install core
$ sudo snap refresh core

Instala Certbot.

$ sudo snap install --classic certbot

Usa el siguiente comando para asegurarte de que el comando Certbot pueda ejecutarse creando un enlace simbólico al directorio /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ejecuta el siguiente comando para generar un certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d forum.example.com

El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/forum.example.com en tu servidor.

Genera un certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Para verificar si la renovación de SSL está funcionando bien, haz una prueba del proceso.

$ sudo certbot renew --dry-run

Si no ves errores, estás listo. Tu certificado se renovará automáticamente.

Paso 10 - Configurar Nginx

Abre el archivo /etc/nginx/nginx.conf para editarlo.

$ sudo nano /etc/nginx/nginx.conf

Agrega la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Guarda el archivo presionando Ctrl + X y luego Y cuando se te pida.

Crea y abre el archivo /etc/nginx/conf.d/nodebb.conf para editarlo.

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

Pega el siguiente código en él. Reemplaza forum.example.com con tu nombre de dominio. Asegúrate de que el valor de client_max_body_size esté configurado en 25MB para establecer el tamaño de carga para el foro.

server {
  listen 80 default_server;
  server_name forum.example.com;
  return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl http2;
   server_name forum.example.com;

   http2_push_preload on; # Habilitar HTTP/2 Server Push

   ssl_certificate /etc/letsencrypt/live/forum.example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/forum.example.com/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/forum.example.com/chain.pem;
   ssl_session_timeout 1d;

   # Habilitar versiones TLS (TLSv1.3 es requerido para el próximo HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Habilitar 0-RTT de TLSv1.3. Usa $ssl_early_data al hacer proxy inverso para
   # prevenir ataques de repetición.
   #
   # @ver: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
   ssl_early_data on;

   ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:50m;

   # OCSP Stapling ---
   # obtener registros OCSP de la URL en ssl_certificate y almacenarlos en caché
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;
   client_max_body_size 25M;

   gzip            on;
   gzip_min_length 1000;
   gzip_proxied    off;
   gzip_types      text/plain application/xml text/javascript application/javascript application/x-javascript text/css application/json;

   add_header X-Early-Data $tls1_3_early_data;

   location / {       
       # Soporte para Socket.IO
       proxy_set_header Connection "upgrade";
       proxy_set_header Upgrade $http_upgrade;
       proxy_http_version 1.1;

       proxy_set_header Host $http_host;
       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 X-NginX-Proxy true;
       proxy_set_header X-Frame-Options SAMEORIGIN;

       proxy_pass http://127.0.0.1:4567;  # sin barra diagonal al final
       proxy_redirect off;
   }

   location @nodebb {
       proxy_pass http://127.0.0.1:4567;
   }

   location ~ ^/assets/(.*) {
       root /var/www/html/nodebb/;
       try_files /build/public/$1 /public/$1 @nodebb;
   }
}

# Este bloque es útil para depurar TLS v1.3. Siéntete libre de eliminar esto
# y usar la variable `$ssl_early_data` expuesta por NGINX directamente si así lo deseas.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Guarda el archivo presionando Ctrl + X y luego Y cuando se te pida.

Verifica tu configuración de Nginx.

$ sudo nginx -t

Reinicia el servidor Nginx.

$ sudo systemctl restart nginx

Paso 11 - Acceder y Configurar el Foro

Puedes acceder al foro visitando la URL https://forum.example.com en tu navegador. Obtendrás la siguiente página.

Página de inicio del foro NodeBB

Haz clic en la página de inicio de sesión e ingresa las credenciales de administrador que creaste en el paso 6.

Página de inicio de sesión de NodeBB

Estarás conectado. A continuación, haz clic en el ícono más a la derecha en la parte superior de la barra de menú para acceder al panel de administración.

A partir de aquí, puedes gestionar el foro. Amplíalo instalando temas y plugins.

Panel de administración del foro NodeBB

Después de instalar cualquier tema y plugin, debes reconstruir y reiniciar el foro utilizando el botón en la esquina superior derecha del panel de administración como se muestra aquí.

Asegúrate de configurar tu servicio de correo electrónico yendo a Panel de control >> Configuración >> Correo para que los usuarios de tu foro puedan recibir correos electrónicos. Selecciona la siguiente configuración para asegurar la entrega óptima de correos electrónicos.

Configuración de correo del foro NodeBB

Desplázate hacia abajo en la página y selecciona un correo personalizado del menú desplegable o usa Correo personalizado si tu servicio SMTP no está en la lista. Para nuestro tutorial, estamos utilizando el servicio SES.

Configuración SMTP del foro NodeBB

Haz clic en el ícono de guardar en la esquina inferior derecha para guardar la configuración.

Desplázate hacia abajo en la página para enviar un correo electrónico de prueba. Por defecto, enviará una plantilla de correo electrónico prohibido. Puedes seleccionar cualquier otra plantilla de correo para probar. Enviaremos el correo de bienvenida.

Prueba de correo del foro NodeBB

Recibirás un correo electrónico de prueba como se muestra a continuación confirmando la configuración.

Correo electrónico de prueba del foro NodeBB

Conclusión

Esto concluye nuestro tutorial sobre la instalación del foro NodeBB utilizando la base de datos PostgreSQL y Nginx en un servidor Ubuntu 22.04. Si tienes alguna pregunta, publícalas en los comentarios a continuación.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.