Cómo instalar el foro NodeBB en Debian 9

NodeBB en el navegador

NodeBB es un software de foro basado en Node.js creado para la web moderna. Est√° construido sobre una base de datos MongoDB o Redis. Utiliza sockets web para interacciones instant√°neas y notificaciones en tiempo real. NodeBB tiene muchas funciones modernas listas para usar, como la integraci√≥n de redes sociales y las discusiones de transmisi√≥n. La funcionalidad adicional se habilita mediante el uso de complementos de terceros. NodeBB es un proyecto de c√≥digo abierto que se puede encontrar en Github. En esta gu√≠a, lo 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 que se instale el siguiente software:

  • Versi√≥n de Node.js 6 o mayor
  • Versi√≥n MongoDB 2.6 o superior o versi√≥n Redis 2.8.9 o mayor
  • Versi√≥n Nginx 1.3.13 o mayor
  • 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 de intercambio para compensar si su sistema Linux no tiene suficiente memoria.

  • Un sistema Debian 9 en ejecuci√≥n con al menos 1 GB de RAM.
  • Nombre de dominio con registros A/AAAA configurados.
  • Un usuario no root con privilegios sudo.

Pasos iniciales

Compruebe su versión de Debian:

lsb_release -ds

Configurar la zona horaria:

sudo dpkg-reconfigure tzdata

Actualice los paquetes de su sistema operativo (software). Este es un primer paso importante porque garantiza que tenga las √ļltimas actualizaciones y correcciones de seguridad para los paquetes de software predeterminados de su sistema operativo:

sudo apt update && sudo apt upgrade -y

Instale 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: Instale Node.js y npm

NodeBB se basa en Node.js. Vamos a instalar la versión recomendada para NodeBB que es la versión 8 en el momento de escribir este artículo. En Linux, tiene algunas opciones de instalación de Node.js: binarios de Linux (x86/x64), código fuente o mediante administradores de paquetes. Usaremos la opción Administración de paquetes que facilita la instalación y actualización de Node.js.

Descargue e instale la √ļltima versi√≥n de soporte a largo plazo (LTS) de Node.js desde el repositorio de NodeSource:

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

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

sudo apt install -y build-essential

NOTA: npm se distribuye con Node.js, lo que significa que cuando descarga Node.js, npm se instala autom√°ticamente en su sistema.

Compruebe las versiones de Node.js y npm:

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

Npm es un proyecto separado de Node.js y tiende a actualizarse con más frecuencia. Como resultado, incluso si acaba de descargar Node.js (y, por lo tanto, npm), probablemente necesite actualizar su npm. Afortunadamente, npm sabe cómo actualizarse. Para actualizar su npm, escriba esto en su terminal:

sudo npm install -g [email protected]

Este comando actualizar√° npm a la √ļltima versi√≥n estable.

Vuelva a verificar la versión de npm con:

npm -v
# 6.7.0

Y deber√≠a devolver los √ļltimos n√ļmeros de versi√≥n.

Paso 2: Instalar y configurar MongoDB

NodeBB necesita una base de datos para almacenar sus datos y es compatible con MongoDB y Redis. En este tutorial, elegimos MongoDB como motor de almacenamiento de datos. Entonces, en los próximos pasos, descargaremos e instalaremos la base de datos MongoDB desde el repositorio rpm oficial de MongoDB:

Para instalar la versión estable del paquete MongoDB desde el repositorio oficial de MongoDB, ejecute 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

Compruebe la versión de MongoDB:

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

Inicie y habilite (config√ļrelo para que se inicie al reiniciar) el servicio MongoDB:

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

Verifique el estado del servidor de base de datos MongoDB ejecutando:

sudo systemctl status mongod.service
# active (running)

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

Primero conéctese al servidor MongoDB.

mongo

Cambie a la base de datos de administración integrada.

> use admin

Crear un usuario administrativo.Publicidad

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

NOTA: Reemplace el marcador de posici√≥n con su propia contrase√Īa seleccionada.

Agregue 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, cree 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: Nuevamente, reemplace el marcador de posici√≥n con su propia contrase√Īa seleccionada.

Salga del caparazón de Mongo.

> quit()

Reinicie MongoDB y verifique que el usuario administrativo creado anteriormente pueda conectarse.

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

Si todo salió bien, su 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: instale el cliente acme.sh y obtenga el certificado Lets Encrypt

Este paso es opcional. No es necesario asegurar su foro NodeBB con HTTPS, pero es una buena pr√°ctica para asegurar el tr√°fico de su 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 sin dependencias.

Descargue e instale 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 ~

Compruebe la versión de acme.sh:

acme.sh --version
# v2.8.0

Obtener RSA y ECC/ECDSA certificados para su 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 desea certificados falsos para realizar pruebas, puede agregar el indicador –staging a los comandos anteriores.

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

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

Para enumerar sus certificados emitidos, puede ejecutar:

acme.sh --list

Cree un directorio para almacenar sus certificados. Usaremos el directorio /etc/letsencrypt.

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

Instalar/copiar certificados en el directorio /etc/letsencrypt.

# 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.

Después de obtener los certificados, salga del usuario raíz y regrese al usuario sudo normal:

exit

Paso 4: Instalar y configurar Nginx

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

Instale el paquete Nginx, emitiendo el siguiente comando:

sudo apt install -y nginx

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

nginx -v

Inicie y habilite (config√ļrelo para que se inicie al reiniciar) el servicio Nginx:

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

Verifique el estado del servidor web Nginx ejecutando:

sudo systemctl status nginx.service
# active (running)

NodeBB se ejecuta de forma predeterminada en el puerto 4567. Para evitar escribir http://example.com:4567, configuraremos Nginx como un proxy inverso para la aplicación NodeBB. Cada solicitud en el puerto 80 o 443 (si se usa SSL) se reenviará al puerto 4567.

Ejecute sudo vim /etc/nginx/conf.d/nodebb.conf y configure Nginx como un 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";
}

}

Compruebe la configuración de Nginx:

sudo nginx -t

Finalmente, para que los cambios surtan efecto, necesitamos recargar Nginx:

sudo systemctl reload nginx.service

Paso 5: Instalar y configurar NodeBB

Cree un directorio raíz de documentos en el que debería residir NodeBB:

sudo mkdir -p /var/www/nodebb

Navegue al directorio raíz del documento:

cd /var/www/nodebb

Cambie la propiedad del directorio /var/www/nodebb a su_usuario.

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

NOTA: Reemplace your_user en el comando anterior con su usuario no root que debería haber creado como requisito previo para este tutorial.

Clone el √ļltimo repositorio de NodeBB en la carpeta ra√≠z del documento: Anuncio

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

Inicie el script de configuración ejecutando la aplicación con el indicador de configuración. Contesta cada una de las preguntas:

./nodebb setup

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

./nodebb start

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

NodeBB en el navegador

Paso 6: Ejecute NodeBB como un servicio del sistema

Cuando se inicia a través de ./nodebb start, NodeBB no se iniciará automáticamente de nuevo cuando se reinicie el sistema. Para evitar eso, necesitaremos configurar NodeBB como un servicio del sistema.

Si se est√° ejecutando, detenga NodeBB:

./nodebb stop

Cree un nuevo usuario de nodebb:

sudo useradd nodebb

Cambie la propiedad del directorio /var/www/nodebb al usuario de nodebb:

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

Cree un archivo de configuración de la unidad systemd nodebb.service. Este archivo de unidad manejará el inicio del demonio NodeBB. Ejecute sudo vim /etc/systemd/system/nodebb.service y agregue 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: Establezca las rutas de nombre de usuario y directorio de acuerdo con los nombres elegidos.

Habilite nodebb.service al reiniciar e inicie inmediatamente nodebb.service:

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

Compruebe el estado de nodebb.service:

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

¡Felicidades! Ha instalado e implementado con éxito la plataforma de debate NodeBB en el sistema Debian 9. Debería poder acceder a su foro en su dominio e interactuar con su foro.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *