Cómo instalar el foro NodeBB con Nginx y Let’s Encrypt en FreeBSD 12
NodeBB es unsoftware de foro 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 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 paso a paso a través del proceso de instalación de NodeBBB en el sistema operativo FreeBSD 12 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 oRedis 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 de intercambio para compensar si tu sistema Linux no tiene suficiente memoria.
Requisitos previos
- Un sistema FreeBSD 12 en funcionamiento con al menos 1GB de RAM.
- Un nombre de dominio con registros
A
/AAAA
configurados. - Un usuario no root con privilegios sudo.
Pasos iniciales
Comprueba tu versión de FreeBSD:
uname -ro
# FreeBSD 12.0-RELEASE
Configura la zona horaria:
tzsetup
Actualiza los paquetes de tu sistema operativo (software). Este es un primer paso importante porque asegura que tienes las últimas actualizaciones y correcciones de seguridad de los paquetes de software por defecto de tu sistema operativo:
freebsd-update fetch install
pkg update && pkg upgrade -y
Instala algunos paquetes esenciales que son necesarios para la administración básica del sistema operativo FreeBSD 12.0:
pkg install -y sudo vim unzip wget git bash socat gcc8 pkgconf vips
Paso 1: Instalar Node.js y npm
NodeBB está construido sobre Node.js.Vamos a instalar la versiónrecomendada para NodeBB que es la versión 10en el momentode escribir este artículo.
Descarga e instala Node.js:
sudo pkg install -y node10 npm-node10
NOTA: npm se distribuye con Node.js – lo que significa que cuando descargas Node.js, automáticamente tienes npm instalado en tu sistema.
Comprueba las versiones de Node.js y npm en las versiones de Node.js y npm:
node -v && npm -v
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
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.
Para instalar la versión estable del paquete MongoDB, ejecuta el siguiente comando:
sudo pkg install -y mongodb40
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 sysrc mongod_enable=yes
sudo service mongod start
Comprueba el estado del servidor de bases de datos MongoDB ejecutándolo:
sudo service mongod status
# 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
La base de datos se creará y el contexto cambiará 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 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 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.
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 un 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 --staging
a los comandos anteriores.
Después de ejecutar los comandos anteriores, tuscertificados yclaves estarán en:
- Para RSA:
/home/username/example.com
directorio. - 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 pkg install -y nginx
Después de la instalación, puedes verificar la versión de Nginx ejecutando:
nginx -v
Iniciar y habilitar(configurarlo para que se inicie al reiniciar) el servicio Nginx:
sudo sysrc nginx_enable=yes
sudo service nginx start
Comprueba el estado del servidor web Nginx ejecutando:
sudo service nginx status
NodeBB por defecto se ejecuta en el puerto 4567
. Para evitar escribir http://example.com:4567
configuraremos Nginx como proxy inverso para la aplicación NodeBB. Cada petición en el puerto 80
o 443
(si se usa SSL) será reenviada al puerto 4567
.
Ejecuta sudo vim /usr/local/etc/nginx/nodebb.conf
y configura Nginx como proxy inverso HTTPS.
server {
listen [::]:443 ssl;
listen 443 ssl;
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";
}
}
Ejecuta sudo vim /usr/local/etc/nginx/nginx.conf
y añade la siguiente línea al bloque http {}
para incluir la configuración de NodeBB.
include nodebb.conf;
Comprueba que la configuración de Nginx no tenga errores de sintaxis:
sudo nginx -t
Recarga el servicio Nginx:
sudo service nginx reload
Paso 5: Instalar y configurar NodeBB
Crea un directorio raíz del documento donde debería residir NodeBB:
sudo mkdir -p /usr/local/www/nodebb
Navega hasta el directorio raíz del documento:
cd /usr/local/www/nodebb
Cambia la propiedad del directorio /usr/local/www/nodebb
atu_usuario:
sudo chown -R your_user:your_user /usr/local/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 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:
Paso 6: Ejecutar NodeBB de forma persistente a través de PM2
Cuando se inicia a través de ./nodebb start, NodeBB no volverá a arrancar 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
Instala PM2 globalmente:
sudo npm install pm2 -g
Comprueba la versión de PM2:
pm2 -v
# 3.5.0
Navega a la raíz del documento de NodeBB:
cd /usr/local/www/nodebb
Inicia NodeBB a través de PM2:
pm2 start app.js
Enumerar el proceso NodeBB:
pm2 ls
Detectar el sistema init disponible con:
pm2 startup
Copia y pega en la CLI la salida de este comando para configurar tu gancho de inicio.
Guarda tu lista de procesos con:
pm2 save
Eso es todo. Tu instancia de NodeBB ya está en marcha.
Enhorabuena! Has instalado y desplegado con éxito la plataforma de debate NodeBB en el sistema FreeBSD 12.Deberías poder acceder a tu foro en tu dominio e interactuar con él.