Cómo instalar NodeBB Forum con Nginx y Let’s Encrypt SSL en Ubuntu 20.04 LTS

Página de inicio predeterminada de NodeBB

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 previos

  • Un servidor basado en Ubuntu 20.04 con un usuario no root que tiene privilegios de 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) por defecto.

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 firewall no interrumpa la conexión actual al habilitarlo.

$ sudo ufw allow OpenSSH

Permita el puerto 27017 para el servidor MongoDB y el puerto 4567 para ejecutar el foro NodeBB. Permita también los puertos HTTP y HTTPS.

$ 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ías ver una salida 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ías ver una salida similar.

v12.18.3

Compruebe npm también.

$ 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 -

Agregue el 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

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

> use admin

Cree un usuario administrativo. Esto no es lo mismo que el usuario administrador de NodeBB.

> db.createUser( { user: "admin", pwd: "yourpassword", roles: [ { role: "root", db: "admin" } ] } )

Cambie el marcador de posición «su contraseña» a su propia contraseña.

Agregue una nueva base de datos para NodeBB.

> use nodebb

A continuación, cree el usuario nodebb para administrar la base de datos nodebb.

> db.createUser( { user: "nodebb", pwd: "yourpassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

El permiso de lectura y escritura permite que NodeBB almacene y recupere datos de la base de datos de nodebb. El permiso de monitor de clúster permite que NodeBB tenga 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 caparazón 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.

Crear un usuario sin privilegios.

$ sudo adduser nodebb

Establezca una contraseña de su elección y salte a través de 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 en el directorio /var/www/nodebb. 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 en el momento de escribir el tutorial. Puede encontrar la última rama estable de Último lanzamiento de NodeBB página.

NodeBB se envía con una utilidad de línea de comandos. Use el siguiente comando para instalar NodeBB.

$ ./nodebb setup

Puede presionar enter 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 entras nodobb y la contraseña que eligió anteriormente para ese nombre de usuario al configurar MongoDB. tu base de datos nodobb 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://:4567.

Página de inicio predeterminada de NodeBB

Es posible que vea un mensaje de error que dice Parece que se perdió la 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://

Salga del usuario de NodeBB.

$ exit

Paso 7 – Instalar Nginx

Ubuntu 20.04 por defecto lleva la última versión estable de Nginx. Instalaremos eso.

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

Página predeterminada de Nginx

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

Presione Ctrl + X para salir del editor e ingrese 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

Visite http://forum.example.com en su navegador para abrir el foro de NodeBB.

Página de inicio del foro de NodeBB

Paso 9: Ejecute NodeBB como un 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 NodeBB.

$ ./nodebb stop

Ejecute el siguiente comando para crear y editar el archivo de configuración de la unidad systemd nodebb.service.

$ 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 hemos elegido para instalar NodeBB en él.

Habilite el servicio NodeBB.

$ sudo systemctl enable nodebb

Inicie el servicio NodeBB.

$ sudo systemctl start nodebb

Consultar el estado del servicio.

$ sudo systemctl status nodebb

Paso 10: obtenga 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 eso 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):

Seleccione Opción segura 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 terminar 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.

Deja una respuesta

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