NodeBB es un software de foro moderno impulsado por Node.js que utiliza MongoDB/Redis como plataformas de base de datos. Utiliza sockets web para interacciones instantáneas y notificaciones en tiempo real.
En este tutorial, aprenderemos cómo instalar el foro NodeBB en un servidor basado en Ubuntu 20.04.
Requisitos
-
Un servidor basado en Ubuntu 20.04 con un usuario no root que tenga privilegios sudo.
-
Mínimo 2 GB de RAM. Si su servidor tiene solo 1 GB de RAM, es mejor habilitar una partición de intercambio.
-
Asegúrate de que todo esté actualizado.
$ sudo apt update && sudo apt upgrade
-
Pocos paquetes esenciales. Algunos de estos ya estarán en su servidor.
$ sudo apt install curl wget nano ca-certificates gnupg2 lsb-release
Paso 1:configurar el cortafuegos
El primer paso es configurar el cortafuegos. Ubuntu viene con ufw (cortafuegos sin complicaciones) de forma predeterminada.
Compruebe si el cortafuegos se está ejecutando.
$ sudo ufw status
Deberías obtener el siguiente resultado.
Status: inactive
Permita el puerto SSH para que el cortafuegos no interrumpa la conexión actual al habilitarlo.
$ sudo ufw allow OpenSSH
Permitir 27017
puerto para el servidor MongoDB y 4567
puerto para ejecutar el foro NodeBB. Permitir HTTP
y HTTPS
puertos también.
$ sudo ufw allow 27017
$ sudo ufw allow 4567
$ sudo ufw allow 80
$ sudo ufw allow 443
Habilite el cortafuegos.
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Vuelva a comprobar el estado del cortafuegos.
$ sudo ufw status
Debería ver un resultado similar.
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW Anywhere
4567 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
27017 (v6) ALLOW Anywhere (v6)
4567 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Paso 2:instalar Node.js
Instalaremos la versión LTS de Node.js aquí. Ejecute los siguientes comandos para instalar Node.js.
$ curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
$ sudo apt install nodejs
Compruebe si Node está correctamente instalado.
$ node --version
Debería ver un resultado similar.
v12.18.3
Compruebe también npm.
$ npm --version
6.14.6
Paso 3 - Instalar MongoDB
MongoDB es la base de datos predeterminada para NodeBB. También puede usar Redis en lugar de MongoDB. Cubriremos ambas bases de datos en nuestro tutorial.
El repositorio de MongoDB para Ubuntu 20.04 aún no está listo y Ubuntu tiene una versión muy antigua. Para nuestro propósito, usaremos el repositorio MongoDB para 18.04, que funciona bien. Puede actualizar la lista de paquetes con el repositorio más reciente una vez que esté disponible el soporte oficial.
Importe la clave pública para MongoDB.
$ wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
Añadir repositorio MongoDB.
$ echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
Actualice la base de datos de paquetes local.
$ sudo apt update
Instale MongoDB.
$ sudo apt install mongodb-org
Verifique la instalación de MongoDB.
$ mongod --version
db version v4.2.8
...
Inicie el servicio MongoDB.
$ sudo systemctl start mongod
Habilite el servicio MongoDB.
$ sudo systemctl enable mongod
Verifique el estado del servicio MongoDB.
$ sudo systemctl status mongod
Paso 4 - Configuración de MongoDB
La administración de Mongo se realiza a través del shell de MongoDB. La instalación predeterminada de MongoDB escucha en el puerto 27017.
Acceda al shell de MongoDB.
$ mongo
Cambiar al admin
incorporado base de datos.
> use admin
Cree un usuario administrativo. No es lo mismo que el usuario administrador de NodeBB.
> db.createUser( { user: "admin", pwd: "yourpassword", roles: [ { role: "root", db: "admin" } ] } )
Cambia el marcador de posición “yourpassword”
a su propia contraseña.
Agregue una nueva base de datos para NodeBB.
> use nodebb
A continuación, cree el nodebb
usuario para administrar el nodebb
base de datos.
> db.createUser( { user: "nodebb", pwd: "yourpassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )
El readwrite
El permiso permite que NodeBB almacene y recupere datos de nodebb
base de datos. El clustermonitor
El permiso permite a NodeBB acceso de solo lectura a las estadísticas de la base de datos que son visibles a través de su panel de administración.
Salga del shell de Mongo.
> quit()
Abra el archivo de configuración de MongoDB para editarlo.
$ sudo nano /etc/mongod.conf
Agregue la siguiente línea al final del archivo.
security:
authorization: enabled
Reinicie MongoDB y verifique el usuario administrativo creado anteriormente.
$ sudo systemctl restart mongod
$ mongo -u admin -p yourpassword --authenticationDatabase=admin
Debería ver el aviso de Mongo si todo se configuró correctamente.
Paso 5:instalar Git
Antes de proceder a instalar NodeBB, necesitamos instalar Git.
Ejecute el siguiente comando para instalar Git.
$ sudo apt install git
Ejecute los siguientes comandos para realizar la configuración inicial de Git.
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
Paso 6:Instalar NodeBB
No es recomendable ejecutar NodeBB como usuario root.
Cree un usuario sin privilegios.
$ sudo adduser nodebb
Establezca una contraseña de su elección y pase por otras opciones.
Cree el directorio donde vivirá su foro NodeBB.
$ sudo mkdir /var/www/nodebb
Cambie la propiedad de la carpeta al usuario recién creado.
$ sudo chown -R nodebb:nodebb /var/www/nodebb
Inicie sesión en el usuario recién creado.
$ su nodebb
Cambie al directorio de instalación de NodeBB.
$ cd /var/www/nodebb
Para instalar NodeBB, primero necesitamos clonar su repositorio Github.
Clone NodeBB al /var/www/nodebb
directorio. El punto al final del comando se refiere al directorio actual.
$ git clone -b v1.14.2 https://github.com/NodeBB/NodeBB.git .
Aquí hemos clonado la v1.14.2 de NodeBB, que era la última versión estable al momento de escribir el tutorial. Puede encontrar la rama estable más reciente en la página Última versión de NodeBB.
NodeBB se envía con una utilidad de línea de comandos. Use el siguiente comando para instalar NodeBB.
$ ./nodebb setup
Puede pulsar Intro para elegir el valor predeterminado.
Por el valor de URL utilizada para acceder a este NodeBB elija la URL final en la que desea acceder al foro. Si accederá al foro a través de la IP de su servidor, ingréselo o ingrese el dominio completo del foro. Aquí ingresaremos http://forum.example.com
.
Siga eligiendo valores predeterminados hasta que se le solicite nombre de usuario de MongoDB que es cuando ingresas a nodebb y la contraseña que eligió anteriormente para ese nombre de usuario al configurar MongoDB. Tu base de datos nodebb debe ser elegido. También se le pedirá que cree un usuario administrador y sus detalles.
Una vez completada la configuración, ejecute el siguiente comando para iniciar NodeBB.
$ ./nodebb start
Su foro ahora está funcionando. Debería poder acceder a él a través de http://<yourserverip>:4567
.
Es posible que vea un mensaje de error que dice Parece que se perdió su conexión con NodeBB, espere mientras intentamos volver a conectarnos. Aparece porque elegimos la URL predeterminada para NodeBB http://forum.example.com
y no http://<yourserverip
. Pero si ingresa la dirección IP durante la configuración, ya no recibirá el error, pero deberá volver a configurarla más tarde después de elegir un dominio para su foro.
Salga del usuario de NodeBB.
$ exit
Paso 7:instalar Nginx
Ubuntu 20.04 por defecto lleva la última versión estable de Nginx. Lo instalaremos.
$ sudo apt install nginx
Compruebe si está instalado correctamente.
$ nginx -v
nginx version: nginx/1.18.0 (Ubuntu)
Inicie y habilite Nginx.
$ sudo systemctl start nginx
$ sudo systemctl enable nginx
Abra la dirección IP de su servidor en su navegador web. Debería ver la siguiente página, lo que significa que su servidor está en funcionamiento.
Paso 8:configurar Nginx
Ejecute el siguiente comando para agregar un archivo de configuración para su sitio.
$ sudo nano /etc/nginx/sites-available/nodebb.conf
Pegue el siguiente código en el editor.
server {
listen 80;
server_name forum.example.com;
access_log /var/log/nginx/forum.example.com.access.log;
error_log /var/log/nginx/forum.example.com.error.log;
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";
}
}
Presiona Ctrl + X
para salir del editor e ingresar Y
cuando se le solicite.
Una vez que haya terminado, verifique que la configuración de Nginx sea correcta.
$ sudo nginx -t
Vuelva a cargar el servicio Nginx para habilitar la configuración.
$ sudo systemctl reload nginx
Visita http://forum.example.com
en su navegador para abrir el foro de NodeBB.
Paso 9:Ejecute NodeBB como servicio del sistema
El servicio NodeBB no se ejecutará después de reiniciar el sistema. Para evitar iniciar NodeBB cada vez, debemos instalarlo como un servicio del sistema.
Primero detenga el servicio de NodeBB.
$ ./nodebb stop
Ejecute el siguiente comando para crear y editar nodebb.service
archivo de configuración de la unidad systemd.
$ sudo nano /etc/systemd/system/nodebb.service
Pegue el siguiente código en el editor.
[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
Aquí hemos elegido el nombre de usuario como nodebb
que creamos en el Paso 6 y la ruta que elegimos para instalar NodeBB en él.
Habilite el servicio NodeBB.
$ sudo systemctl enable nodebb
Inicie el servicio NodeBB.
$ sudo systemctl start nodebb
Consulta el estado del servicio.
$ sudo systemctl status nodebb
Paso 10:obtener un certificado SSL de Let's Encrypt
Asegurar su foro NodeBB con HTTPS es un paso necesario para asegurar el tráfico de su sitio. Para este tutorial, usaremos el cliente Certbot para instalar SSL.
Para eso primero, instale la herramienta Certbot.
$ sudo apt install certbot python3-certbot-nginx
Generar los certificados.
$ sudo certbot --nginx -d forum.example.com
Si es la primera vez que ejecuta Certbot en su sistema, se le pedirá una dirección de correo electrónico y que acepte los términos del servicio. También se le preguntará si acepta compartir datos con la fundación EFF a lo que puede negarse. Después de hacerlo, Certbot se comunicará con los servidores de Let's Encrypt y ejecutará un desafío para verificar sus dominios.
Si tiene éxito, se le preguntará cómo manejar los redireccionamientos HTTPS.
Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Selecciona Secure
elección y presione enter. Esto garantizará que todas las solicitudes al dominio http se redireccionen correctamente a la versión https. A continuación, se crearán sus certificados y sus archivos de configuración de Nginx se actualizarán con la configuración de SSL.
Sus certificados están listos y puede abrir su sitio ahora yendo a https://forum.example.com
Paso 11:verificar la renovación automática de SSL
Este es el último paso antes de finalizar este tutorial.
Verifique el proceso de renovación haciendo un simulacro del proceso de renovación.
$ sudo certbot renew --dry-run
Si no obtiene errores, significa que está configurado. Certbot renovará automáticamente sus certificados por usted. Se le enviará un correo electrónico advirtiéndole sobre la caducidad del certificado.
Conclusión
Eso es todo en este tutorial. La configuración de su foro NodeBB está completa. Si tiene alguna pregunta, publíquela en los comentarios a continuación.