Cómo instalar NodeBB Forum con Nginx y Let’s Encrypt SSL en Ubuntu 20.04 LTS
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.
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.
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.
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.