Cómo instalar el foro NodeBB en Debian 9

NodeBB es un software de foros basado en Node.js construido para la web moderna. Está construido sobre una base de datos MongoDB o Redis. Utiliza web sockets para interacciones instantáneas y notificaciones en tiempo real. NodeBB tiene muchas características modernas de fábrica, como la integración con redes sociales y la transmisión de debates. Se pueden habilitar funciones adicionales mediante el uso de plugins de terceros. NodeBB es un proyecto de código abierto que se puede encontrar en Github. En esta guía, te guiaremos paso a paso a través del proceso de instalación de NodeBBB en el sistema operativo Debian 9 utilizando Nginx como proxy inverso, MongoDB como base de datos, y acme.sh y Let’s Encrypt para HTTPS.

Requisitos

NodeBB requiere la instalación del siguiente software:

  • Node.js versión 6 o superior
  • MongoDB versión 2.6 o superior o Redis versión 2.8.9 o superior
  • Nginx versión 1.3. 13 o superior
  • Git

NOTA: La instalación de las dependencias de NodeBB puede requerir más de 512 megabytes de memoria del sistema. Se recomienda habilitar una partición swap para compensar si tu sistema Linux no tiene suficiente memoria.

Requisitos previos

  • Un sistema Debian 9 en funcionamiento con al menos 1 GB de RAM.
  • Un nombre de dominio con los registros A/AAAA configurados.
  • Un usuario no root con privilegios sudo.

Pasos iniciales

Comprueba tu versión de Debian:

lsb_release -ds

Configura la zona horaria:

sudo dpkg-reconfigure tzdata

Actualiza los paquetes de tu sistema operativo (software). Este es un primer paso importante porque garantiza que dispones de las últimas actualizaciones y correcciones de seguridad de los paquetes de software predeterminados de tu sistema operativo:

sudo apt update && sudo apt upgrade -y

Instala algunos paquetes esenciales que son necesarios para la administración básica del sistema operativo Debian:

sudo apt install -y curl wget vim git unzip sudo socat bash-completion apt-transport-https

Paso 1: Instalar Node.js y npm

NodeBB está construido sobre Node.js. Vamos a instalar la versión recomendada para NodeBB que es la versión 8 en el momentode escribir esto. En Linux, tienes varias opciones de instalación de Node.js: Binarios Linux (x86/x64), Código Fuente o mediante Gestores de Paquetes. Nosotros utilizaremos la opción del Gestor de Paquetes, que hace que instalar y actualizar Node.js sea pan comido.

Descarga e instala la última versiónLong-Term Support (LTS) de Node.js desde el repositorio NodeSource:

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

Para compilar e instalar complementos nativos desde npm es posible que también necesites instalar herramientas de compilación:

sudo apt install -y build-essential

NOTAnpm se distribuye con Node.js, lo que significa que cuando descargas Node.js, automáticamente se instala npm en tu sistema.

Comprueba las versiones de Node.js y npm de Node.js y npm:

node -v && npm -v
# v10.15.1
# 6.4.1

Npm es un proyecto independiente de Node.js y tiende a actualizarse con más frecuencia. Como resultado, aunque acabes de descargar Node.js (y por tanto npm), probablemente necesitarás actualizar npm. Por suerte, ¡npm sabe cómo actualizarse! Para actualizar tu npm, escribe esto en tu terminal:

sudo npm install -g npm@latest

Este comando actualizará npm a la última versión estable.

Vuelve a comprobar la versión de npm con:

npm -v
# 6.7.0

Y debería devolverte los números de la última versión.

Paso 2: Instalar y configurar MongoDB

NodeBB necesita una base de datos para almacenar sus datos, y soporta MongoDB y Redis. En este tutorial, elegimos MongoDB como motor de almacenamiento de datos. Así que, en los siguientes pasos, descargaremos e instalaremos la base de datos MongoDB desde el repositorio oficial rpm de MongoDB:

Para instalar la versión estable del paquete MongoDB desde el repositorio oficial de MongoDB, ejecuta el siguiente comando:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb https://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
sudo apt update
sudo apt install -y mongodb-org

Comprueba la versión de MongoDB:

mongo --version | head -n 1 && mongod --version | head -n 1

Inicia y habilita (configúralo para que se inicie al reiniciar) el servicio MongoDB:

sudo systemctl start mongod.service
sudo systemctl enable mongod.service

Comprueba el estado del servidor de bases de datos MongoDB ejecutándolo:

sudo systemctl status mongod.service
# active (running)

A continuación, crea una base de datos MongoDB y un usuario para NodeBB.

Conéctate primero al servidor MongoDB.

mongo

Cambia a la base de datos integrada admin.

> use admin

Crea un usuario administrativo.

> db.createUser( { user: "admin", pwd: "<Enter a secure password>", roles: [ { role: "readWriteAnyDatabase", db: "admin" }, { role: "userAdminAnyDatabase", db: "admin" } ] } )

NOTA: Sustituye el marcador de posición <Enter a secure password> por tu propia contraseña seleccionada.

Añade una nueva base de datos llamada nodebb.

> use nodebb

Se creará la base de datos y se cambiará el contexto a nodebb. A continuación, crea el usuario nodebb con los privilegios adecuados.

> db.createUser( { user: "nodebb", pwd: "<Enter a secure password>", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

NOTA: De nuevo, sustituye el marcador de posición <Enter a secure password> por la contraseña que hayas seleccionado.

Sal del shell de Mongo.

> quit()

Reinicia MongoDB y comprueba que el usuario administrativo creado anteriormente puede conectarse.

sudo systemctl restart mongodb.service
mongo -u admin -p your_password --authenticationDatabase=admin

Si todo ha ido bien, tu MongoDB debería estar instalado y preparado para NodeBB. En el siguiente paso, nos ocuparemos de la instalación y configuración del servidor web.

Paso 3 – Instalar el cliente acme.sh y obtener el certificado Lets Encrypt

Este paso es opcional. Asegurar tu Foro NodeBB con HTTPS no es necesario, pero es una buena práctica para asegurar el tráfico de tu sitio. Para obtener el certificado TLS de Let’s Encrypt utilizaremos el cliente acme.sh. Acme.sh es un software de shell Unix puro para obtener certificados TLS de Let’s Encrypt con cero dependencias.

Descarga e instala acme.sh:

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Comprueba la versión de acme.sh:

acme.sh --version
# v2.8.0

Obtén certificados RSA y ECC/ECDSA para tu dominio/nombre de host:

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Si quieres certificados falsos para hacer pruebas, puedes añadir la bandera --staginga los comandos anteriores.

Después de ejecutar los comandos anteriores, tus certificados y claves estarán en:

  • Para RSA: directorio /home/username/example.com.
  • Para ECC/ECDSA: directorio /home/username/example.com_ecc.

Para listar tus certificados emitidos puedes ejecutar:

acme.sh --list

Crea un directorio para almacenar tus certificados. Nosotros utilizaremos el directorio /etc/letsencrypt.

mkdir -p /etc/letsecnrypt/example.com sudo mkdir -p /etc/letsencrypt/example.com_ecc

Instala/copia los certificados en/etc/letsencryptdirectorio.

# RSA
acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem --reloadcmd "sudo systemctl reload nginx.service"

Todos los certificados se renovarán automáticamente cada 60 días.

Tras obtener los certificados sal del usuario root y vuelve al usuario sudo normal:

exit

Paso 4: Instalar y configurar Nginx

NodeBB puede funcionar bien con muchos servidores web. En este tutorial, hemos seleccionado Nginx.

Instala el paquete Nginx, emitiendo el siguiente comando:

sudo apt install -y nginx

Después de la instalación, puedes verificar la versión de Nginx ejecutando:

nginx -v

Inicia y habilita(configúralo para que se inicie al reiniciar) el servicio Nginx:

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

Comprueba el estado del servidor web Nginx ejecutando:

sudo systemctl status nginx.service
# active (running)

NodeBB por defecto se ejecuta en el puerto 4567. Para evitar escribir http://example.com:4567configuraremos Nginx como proxy inverso para la aplicación NodeBB. Cada petición en el puerto 80 o 443 (si se utiliza SSL) será reenviada al puerto 4567.

Ejecuta sudo vim /etc/nginx/conf.d/nodebb.confy configura Nginx como proxy inverso HTTPS.

server {
  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  listen [::]:80;
  listen 80;
server_name example.com;

client_max_body_size 50M;

# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;

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»;
}

}

Comprueba la configuración de Nginx:

sudo nginx -t

Por último, para que los cambios surtan efecto, debemos recargar Nginx:

sudo systemctl reload nginx.service

Paso 5: Instalar y configurar NodeBB

Crea un directorio raíz de documentos donde residirá NodeBB:

sudo mkdir -p /var/www/nodebb

Navega hasta el directorio raíz del documento:

cd /var/www/nodebb

Cambia la propiedad del directorio /var/www/nodebba tu_usuario.

sudo chown -R [your_user]:[your_user] /var/www/nodebb

NOTA:Sustituye tu_usuario en el comando anterior por tu usuario no root que deberías haber creado como requisito previo para este tutorial.

Clona el último repositorio de NodeBB en la carpeta raíz del documento:

git clone -b v1.11.x https://github.com/NodeBB/NodeBB.git .

Inicia el script de configuración ejecutando la aplicación con la bandera setup bandera. Responde a cada una de las preguntas:

./nodebb setup

Una vez completada la configuración de NodeBB, ejecuta ./nodebb start para iniciar manualmente tu servidor NodeBB:

./nodebb start

Después de ejecutar este comando, deberías poder acceder a tu nuevo foro en tu navegador web:

NodeBB en el navegador

Paso 6: Ejecutar NodeBB como un Servicio del Sistema

Cuando se inicia a través de ./nodebb start, NodeBB no se reiniciará automáticamente cuando se reinicie el sistema. Para evitarlo, tendremos que configurar NodeBB como un servicio del sistema.

Si se está ejecutando, detén NodeBB:

./nodebb stop

Crea un nuevo usuario nodebb:

sudo useradd nodebb

Cambia la propiedad del directorio /var/www/nodebb al usuario nodebb:

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

Crea un archivo de configuración de la unidad nodebb.service systemd. Este archivo de unidad se encargará del inicio del demonio NodeBB. Ejecuta sudo vim /etc/systemd/system/nodebb.service y añade el siguiente contenido:

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

[Service]
Type=forking
User=nodebb

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/nodebb
PIDFile=/var/www/nodebb/pidfile
ExecStart=/usr/bin/env node loader.js
Restart=always

[Install]
WantedBy=multi-user.target

NOTA: Configura el nombre de usuario y las rutas de directorio según los nombres que elijas.

Habilita nodebb.service al reiniciar e inicia inmediatamente nodebb.service:

sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service

Comprueba el estado de nodebb.service:

sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service

¡Enhorabuena! Has instalado y desplegado correctamente la plataforma de debate NodeBB en el sistema Debian 9. Deberías poder acceder a tu foro en tu dominio e interactuar con tu foro.

Enlaces

También te podría gustar...