Cómo instalar el foro NodeBB en Fedora 29
NodeBB es unsoftware de foros basado en Node.js y 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 fuera de la caja, como la integración de redes sociales y la transmisión de debates. Lafuncionalidad adicional se habilita 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 a través del proceso de instalación paso a paso de NodeBB en el sistema operativo Fedora 29 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ón6o superior
- MongoDB versión2.6o superior oRedis versión2.8.9o superior
- Nginx versión1.3.13o 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 de intercambio para compensar si tu sistema Linux no tiene suficiente memoria.
Requisitos previos
- Un sistema Fedora 29 en funcionamiento con al menos 1GB de RAM.
- Nombre de dominio con registros
A
/AAAA
configurados. - Un usuario no root con privilegios sudo.
Pasos iniciales
Comprueba tu versión de Fedora:
cat /etc/fedora-release
# Fedora release 29 (Twenty Nine)
Configura la zona horaria:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Actualiza los paquetes de tu sistema operativo (software). Este es un primer paso importante porque garantiza que tienes las últimas actualizaciones y correcciones de seguridad de los paquetes de software por defecto de tu sistema operativo:
sudo dnf check-upgrade || sudo dnf upgrade -y
Instala algunos paquetes esenciales que son necesarios para la administración básica del sistema operativo Fedora:
sudo dnf install -y curl wget vim bash-completion git socat
Para simplificar, desactiva SELinux y el Firewall:
sudo setenforce 0; sudo systemctl stop firewalld.service; sudo systemctl disable firewalld.service
Paso 1: Instalar Node.js y npm
NodeBB está construido sobre Node.js.Vamos a instalarrecomendadoversión para NodeBB que es la versión 8en el momento de escribir este artículo. En Linux, tienes varias opciones de instalación de Node.js: Binarios Linux (x86/x64), Código Fuente o mediante Gestores de Paquetes. Utilizaremos la opción del Gestor de Paquetes, que hace que la instalación y actualización de Node.js sea muy sencilla.
Descarga e instala la última versión desoporte a largo plazo (LTS) de Node.js desde el repositorio de Fedora:
sudo dnf -y install nodejs
Para compilar e instalar complementos nativos desde npm, es posible que también necesites instalar herramientas de compilación:
sudo dnf install -y gcc-c++ make
# or
# sudo dnf groupinstall -y 'Development Tools'
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 npmen las versiones de Node.js y npm:
node -v && npm -v
# v10.15.0
# 6.4.1
Npm es un proyecto independiente de Node.js, y suele actualizarse con más frecuencia. Como resultado, incluso si acabas de descargar Node.js (y por tanto npm), probablemente necesitarás actualizar tu 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 devolver 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 de rpm de MongoDB:
Para instalar la versión estable del paquete MongoDB, ejecuta el siguiente comando:
sudo dnf install -y mongodb mongodb-server
Comprueba la versión de MongoDB:
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.1
# db version v4.0.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 la base de datos MongoDB y el usuario para NodeBB.
Conéctate primero al servidor MongoDB.
mongo
Cambia a la base de datos integradaadmin
.
> 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 llamadanodebb
.
> use nodebb
La base de datos se creará y el contexto cambiará anodebb
. A continuación, crea el usuarionodebb
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 tu propia contraseña seleccionada.
Sal del shell de Mongo.
> quit()
Reinicia MongoDB y comprueba que el usuario administrativo creado anteriormente puede conectarse.
sudo systemctl restart mongod.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 clienteacme.sh
y obtener el certificado Let’s Encrypt(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 certificadosRSAyECC/ECDSApara 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--staging
flage a los comandos anteriores.
Después de ejecutar los comandos anteriores, tuscertificados yclaves estarán en:
- ParaRSA:
/home/username/example.com
directorio. - ParaECC/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.
Después de 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 dnf install -y nginx
Después de la instalación, puedes verificar la versión de Nginx ejecutando:
nginx -v
# 1.14.1
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 puerto4567
. Para evitar escribirhttp://example.com:4567
configuraremos Nginx como proxy inverso para la aplicación NodeBB. Cada petición en el puerto80
o443
(si se usa SSL) será reenviada al puerto4567
.
Ejecutasudo vim /etc/nginx/conf.d/nodebb.conf
y configura Nginx como proxy inverso HTTPS.
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name forum.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
Finalmente, 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 en el que deba 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/nodebb
atu_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 a este tutorial.
Clona el últimorepositoriode 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 banderasetup
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:
Paso 6: Ejecutar NodeBB como servicio del sistema
Cuando se inicie a través de./nodebb start
, NodeBB no se iniciará automáticamente cuando el sistema se reinicie. Para evitarlo, tendremos que configurar NodeBB como un servicio del sistema.
Si se está ejecutando, detén NodeBB:
./nodebb stop
Crea un nuevo usuarionodebb
:
sudo useradd nodebb
Cambia la propiedad del directorio/var/www/nodebb
al usuarionodebb
:
sudo chown -R nodebb:nodebb /var/www/nodebb
Crea el archivo de configuración de la unidadnodebb.service
systemd. Este archivo de unidad se encargará de iniciar el deamon de NodeBB. Ejecutasudo 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:Establece el nombre de usuario y las rutas de los directorios de acuerdo con los nombres que hayas elegido.
Habilitanodebb.service
al reiniciar y arranca inmediatamentenodebb.service:
sudo systemctl enable nodebb.service
sudo systemctl start nodebb.service
Comprueba el estado denodebb.service
:
sudo systemctl status nodebb.service
sudo systemctl is-enabled nodebb.service
¡Enhorabuena! Has instalado y desplegado con éxito la plataforma de debate NodeBB en el sistema Fedora 29.Deberías poder acceder a tu foro en tu dominioe interactuar con él.