Cómo instalar el software de la Comunidad Flarum en Ubuntu 24.04

Flarum es un software de debate de código abierto que es el sucesor combinado de los foros esoTalk y FluxBB. Está escrito en PHP, y su interfaz está potenciada por Mithril, un framework JavaScript que ocupa muy poco espacio. Es receptivo, rápido y admite extensiones a través de una potente API de extensiones. También es ligero, por lo que puede funcionar en un servidor bastante barato.

En este tutorial, aprenderemos a instalar Flarum Community Software en un servidor basado en Ubuntu 24.04.

Requisitos previos

  • Un servidor con Ubuntu 24.04.
  • Un usuario no root con privilegios sudo.
  • Un Nombre de Dominio Completamente Cualificado (FQDN) como flarum.example.com que apunte a tu servidor.
  • Asegúrate de que tu servidor tiene habilitado el almacenamiento swap si estás en un servidor con 1 GB de RAM.
  • Asegúrate de que todo está actualizado.
    $ sudo apt update && sudo apt upgrade
    
  • Se necesitan algunos paquetes esenciales para que el tutorial y Flarum funcionen. Algunos de ellos ya estarán en tu servidor.
    $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
    

Paso 1 – Configurar el cortafuegos

El primer paso es configurar el cortafuegos. Debian viene con ufw (Uncomplicated Firewall) por defecto.

Comprueba si el cortafuegos se está ejecutando.

$ sudo ufw status

Obtendrás la siguiente salida.

Status: inactive

Permite el puerto SSH para que el cortafuegos no rompa la conexión actual al activarlo.

$ sudo ufw allow OpenSSH

Permite también los puertos HTTP y HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Habilita 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

Comprueba de nuevo el estado del cortafuegos.

$ sudo ufw status

Deberías ver un resultado similar.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Paso 2 – Instala Nginx

Ubuntu 24.04 incluye una versión antigua de Nginx. Para instalar la última versión, necesitas descargar el repositorio oficial de Nginx.

Importa la clave de firma de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Añade el repositorio de la versión estable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Configura el anclaje de repositorios para dar preferencia al repositorio oficial sobre los paquetes de Ubuntu.

echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \
    | sudo tee /etc/apt/preferences.d/99nginx

Actualiza los repositorios del sistema.

$ sudo apt update

Instala Nginx.

$ sudo apt install nginx

Verifica la instalación.

$ nginx -v
nginx version: nginx/1.26.1

Inicia el servidor Nginx.

$ sudo systemctl start nginx

Comprueba el estado del servicio.

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Mon 2024-06-03 10:41:52 UTC; 2s ago
       Docs: https://nginx.org/en/docs/
    Process: 1817 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 1818 (nginx)
      Tasks: 3 (limit: 4543)
     Memory: 2.9M (peak: 3.1M)
        CPU: 15ms
     CGroup: /system.slice/nginx.service
             ??1818 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??1819 "nginx: worker process"
             ??1820 "nginx: worker process"

Jun 03 10:41:52 flarum systemd[1]: Starting nginx.service - nginx - high performance web server...
Jun 03 10:41:52 flarum systemd[1]: Started nginx.service - nginx - high performance web server.

Abre la dirección IP de tu servidor en tu navegador web. Deberías ver la siguiente página, lo que significa que tu servidor está en funcionamiento.

Página por defecto de Nginx

Paso 3 – Instalar PHP

Ubuntu 24.04 incluye PHP 8.3 por defecto. Puedes instalarlo ejecutando el siguiente comando.

$ sudo apt install php-cli php-fpm php-mysql php-xml php-gd php-json php-mbstring php-zip php-curl -y

Para estar siempre con la última versión de PHP o si quieres instalar varias versiones de PHP, añade el repositorio PHP de Ondrej.

Añade el repositorio PHP de Ondrej Sury.

$ sudo add-apt-repository ppa:ondrej/php

Actualiza la lista de repositorios del sistema.

$ sudo apt update

Puedes ignorar el siguiente error. Launchpad no es compatible con el algoritmo de encriptación más potente que requiere Ubuntu 24.04. El mensaje debería desaparecer pronto.

A continuación, instala PHP y las extensiones requeridas por Flarum.

$ sudo apt install php8.3-cli php8.3-fpm php8.3-mysql php8.3-xml php8.3-gd php8.3-mbstring php8.3-zip php8.3-curl -y

Comprueba si PHP funciona correctamente.

$ php --version

Deberías ver un resultado similar.

PHP 8.3.7 (cli) (built: May 23 2024 12:36:54) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies

Paso 4 – Instalar Composer

Composer es un gestor de dependencias para PHP. Composer es necesario para que Flarum instale varios componentes que necesita instalar y ejecutar.

Ejecuta los siguientes comandos para instalar Composer. Primero, cogemos el instalador, comprobamos el hash para verificarlo y, a continuación, ejecutamos el instalador utilizando la línea de comandos de PHP. A continuación, movemos el binario al directorio /usr/local/bin.

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
$ php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
$ php composer-setup.php
$ php -r "unlink('composer-setup.php');"
$ sudo mv composer.phar /usr/local/bin/composer

Comprueba si Composer se ha instalado correctamente.

$ composer --version
Composer version 2.7.6 2024-05-04 23:03:15
PHP version 8.3.7 (/usr/bin/php8.3)
Run the "diagnose" command to get more detailed diagnostics output.

Paso 5 – Instalar MariaDB

MariaDB es un sustituto directo de MySQL, lo que significa que los comandos para ejecutar y hacer funcionar MariaDB son los mismos que los de MySQL.

Ubuntu 24.04, por defecto, incluye MariaDB 10.11.7, que está un poco obsoleta. Necesitas utilizar el repositorio oficial para obtener la última versión estable de MariaDB. El repositorio oficial de Ubuntu 24.04 no aparece en la página de descargas de MariaDB, pero funcionaba cuando se escribió este tutorial.

Importa la clave GPG de MariaDB.

$ sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'

Crea el archivo del repositorio de MariaDB.

$ echo "deb [signed-by=/etc/apt/keyrings/mariadb-keyring.pgp] https://deb.mariadb.org/10.11/ubuntu `lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/mariadb-server.list

Actualiza la lista de repositorios del sistema.

$ sudo apt update

Ejecuta el siguiente comando para instalar el servidor MariaDB.

$ sudo apt install mariadb-server -y

Comprueba si MariaDB se ha instalado correctamente.

$ mysql --version

Deberías ver la siguiente salida.

mysql  Ver 15.1 Distrib 10.11.8-MariaDB, for debian-linux-gnu (x86_64) using  EditLine wrapper

También puedes utilizar mariadb --version para comprobar la versión.

El servicio MariaDB ya está habilitado y en ejecución. Comprueba su estado utilizando el siguiente comando.

$ sudo systemctl status mariadb
? mariadb.service - MariaDB 10.11.8 database server
     Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: enabled)
    Drop-In: /etc/systemd/system/mariadb.service.d
             ??migrated-from-my.cnf-settings.conf
     Active: active (running) since Mon 2024-06-03 11:31:09 UTC; 27s ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Process: 14981 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
    Process: 14983 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Process: 14985 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSREP_START_POSITION=$VAR ||>    Process: 15029 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
    Process: 15032 ExecStartPost=/etc/mysql/debian-start (code=exited, status=0/SUCCESS)
   Main PID: 15015 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 14 (limit: 29985)
     Memory: 78.9M (peak: 81.8M)
        CPU: 559ms
     CGroup: /system.slice/mariadb.service
             ??15015 /usr/sbin/mariadbd

Ejecuta el siguiente comando para realizar la configuración por defecto, como dar una contraseña de root, eliminar los usuarios anónimos, no permitir el inicio de sesión de root de forma remota y eliminar las tablas de prueba.

$ sudo mariadb-secure-installation

Se te pedirá la contraseña de root. Como no tenemos establecida ninguna contraseña de root, pulsa la tecla Intro para continuar.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none): [PRESS ENTER]
OK, successfully used password, moving on...

A continuación, se te preguntará si quieres cambiar al complemento unix_socket. El complemento unix_socket te permite acceder a MariaDB con tus credenciales de usuario de Linux. Elige n para no cambiar a él, puesto que ya tienes una cuenta protegida root.

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] n
 ... skipping.

A continuación, se te preguntará si quieres cambiar tu contraseña de root. En Ubuntu 24.04, la cuenta raíz para MariaDB está estrechamente vinculada al mantenimiento automatizado del sistema, por lo que no debes cambiar los métodos de autenticación configurados para la cuenta. Hacerlo permitiría que una actualización de paquetes rompiera el sistema de base de datos al eliminar el acceso a la cuenta administrativa. Escribe n para continuar.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

A partir de aquí, pulsa y y luego Enter para aceptar los valores por defecto de todas las preguntas siguientes. Esto eliminará el acceso a los usuarios anónimos, probará las bases de datos, desactivará el inicio de sesión de root remoto y cargará los cambios.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Ya está. La próxima vez que quieras acceder al shell de MariaDB, utiliza el siguiente comando.

$ sudo mysql

Introduce tu contraseña de root de Linux cuando se te solicite.

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 37
Server version: 10.11.8-MariaDB-ubu2404 mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Pulsa exit para cerrar el intérprete de comandos de MariaDB.

Paso 6 – Configurar MariaDB

Accede al intérprete de comandos MariaDB.

$ sudo mysql

Crea una nueva base de datos MySQL, un usuario de base de datos y una contraseña para tu instalación de Flarum.

MariaDB> CREATE DATABASE flarum;
MariaDB> CREATE USER 'flarumuser'@'localhost' IDENTIFIED BY 'yourpassword';
MariaDB> GRANT ALL PRIVILEGES ON flarum.* TO 'flarumuser'@'localhost';

Sustituye flarum, flarumuser y yourpassword por las credenciales de tu elección. Elige una contraseña segura.

Crea también un usuario administrativo con las mismas capacidades que la cuenta root.

MariaDB> GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Borra los privilegios para asegurarte de que se guardan en la sesión actual.

MariaDB> FLUSH PRIVILEGES;

Sal del intérprete de comandos MariaDB.

MariaDB> exit

Paso 7 – Instalar Flarum

Crea un directorio donde vivirá Flarum.

$ sudo mkdir /var/www/flarum -p

Utilizando la directiva -p se crean directorios padre que antes no existían.

Cambia la propiedad del directorio Flarum al usuario de Linux conectado en ese momento para que puedas ejecutar comandos sin utilizar sudo.

$ sudo chown -R $USER:$USER /var/www/flarum

Permite el acceso de escritura al directorio.

$ sudo chmod 775 -R /var/www/flarum

Navega hasta la carpeta de instalación.

$ cd /var/www/flarum

Descarga e instala Flarum utilizando Composer.

$ composer create-project flarum/flarum .

Cambia la propiedad del directorio Flarum a nginx para el servidor Nginx.

$ sudo chown -R nginx:nginx /var/www/flarum

A partir de aquí, Composer necesitará permisos sudo para ejecutarse, lo cual no es recomendable. También puedes cambiar los permisos de grupo del directorio a tu usuario de Linux y volver a cambiarlos a nginx después de finalizar Composer. Esta no es una solución ideal, ya que requiere que ejecutes los mismos comandos repetidamente. Una solución más permanente es añadir tu nombre de usuario al grupo nginx. Ejecuta el siguiente comando para añadir tu usuario Linux actualmente conectado al grupo nginx.

$ sudo usermod -a -G nginx $USER

Para aplicar la nueva pertenencia al grupo, sal del servidor y vuelve a entrar, o escribe lo siguiente.

su - ${USER}

Paso 8 – Instalar SSL

Necesitamos instalar Certbot para generar el certificado SSL. Puedes instalar Certbot utilizando el repositorio de Debian u obtener la última versión utilizando la herramienta Snapd. Nosotros utilizaremos la versión Snapd. Ubuntu 24.04 viene con Snapd instalado.

Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd está actualizada.

$ sudo snap install core && sudo snap refresh core

Instala Certbot.

$ sudo snap install --classic certbot

Utiliza el siguiente comando para asegurarte de que se puede ejecutar el comando Certbot creando un enlace simbólico al directorio /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Comprueba si Certbot funciona correctamente.

$ certbot --version
certbot 2.10.0

Genera el certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d flarum.example.com

El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/flarum.example.com de tu servidor.

Genera un certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Comprueba el servicio programador de renovación de Certbot.

$ sudo systemctl list-timers

Encontrarás snap.certbot.renew.service como uno de los servicios programados para ejecutarse.

NEXT                            LEFT LAST                           PASSED UNIT                           ACTIVATES                 
---------------------------------------------------------------------------------------------------------------------------------
Mon 2024-06-03 11:39:00 UTC      36s Mon 2024-06-03 11:09:06 UTC 29min ago phpsessionclean.timer          phpsessionclean.service
Mon 2024-06-03 13:09:56 UTC 1h 31min Mon 2024-06-03 10:34:09 UTC         - motd-news.timer                motd-news.service
Mon 2024-06-03 21:58:00 UTC      10h -                                   - snap.certbot.renew.timer       snap.certbot.renew.service

Realiza una ejecución en seco del proceso para comprobar si la renovación SSL funciona correctamente.

$ sudo certbot renew --dry-run

Si no ves ningún error, ya está todo listo. Tu certificado se renovará automáticamente.

Paso 9 – Configurar PHP-FPM

Abre el archivo /etc/php/8.3/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.3/fpm/pool.d/www.conf

Debemos establecer el usuario/grupo Unix de los procesos PHP en nginx. Busca las líneas user=www-data y group=www-data en el archivo y cámbialas por nginx.

; Unix user/group of the child processes. This can be used only if the master
; process running user is root. It is set after the child process is created.
; The user and group can be specified either by their name or by their numeric
; IDs.
; Note: If the user is root, the executable needs to be started with
;       --allow-to-run-as-root option to work.
; Default Values: The user is set to master process running user by default.
;                 If the group is not set, the user's group is used.
user = nginx
group = nginx
...

Busca las líneas listen.owner = www-data y listen.group = www-data en el archivo y cámbialas por nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: Owner is set to the master process running user. If the group
;                 is not set, the owner's group is used. Mode is set to 0660.
listen.owner = nginx
listen.group = nginx

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.

Aumenta el tamaño de subida del archivo a 8 MB.

$ sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 8M/' /etc/php/8.3/fpm/php.ini

Reinicia el servicio PHP-FPM.

$ sudo systemctl restart php8.3-fpm

Cambia el grupo del directorio de sesiones PHP a Nginx.

$ sudo chgrp -R nginx /var/lib/php/sessions

Paso 10 – Configurar Nginx

Ejecuta el siguiente comando para añadir un archivo de configuración para tu sitio.

$ sudo nano /etc/nginx/conf.d/flarum.conf

Pega el siguiente código en el editor.

server {
    listen [::]:80;
    listen 80;

    server_name flarum.example.com;

    # redirect http to https
    return 301 https://flarum.example.com$request_uri;
}

server {
    listen [::]:443 ssl;
    listen 443 ssl;
    
    http2 on;

    server_name flarum.example.com;

    access_log /var/log/nginx/flarum.access.log;
    error_log  /var/log/nginx/flarum.error.log;

    root /var/www/flarum/public;
    index index.php;

    include /var/www/flarum/.nginx.conf;

    client_max_body_size 8M;

    if ($host != "flarum.example.com") {
        return 301 $scheme://flarum.example.com$request_uri;
    }

    # SSL code
    ssl_certificate /etc/letsencrypt/live/flarum.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/flarum.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/flarum.example.com/chain.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_prefer_server_ciphers off;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001] 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844] valid=60s;
    resolver_timeout 2s;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    tcp_nopush on;
    types_hash_max_size 2048;

    location ~ \.php$ {
        fastcgi_pass  unix:/run/php/php8.3-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
        include  fastcgi_params;
    }
}

Este archivo asume que alojaremos example.com en el directorio /var/www/flarum/public. Flarum incluye algunos ajustes predeterminados de Nginx en el archivo /var/www/flarum/.nginx.conf que hemos incluido en nuestra configuración de Nginx mediante la siguiente directiva.

include /var/www/flarum/.nginx.conf;

Una vez hayas terminado, pulsa Ctrl + X para cerrar el editor y pulsa Y cuando se te pida guardar el archivo.

Abre el archivo /etc/nginx/nginx.conf para editarlo.

$ sudo nano /etc/nginx/nginx.conf	

Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size 64;

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite. Prueba la configuración de Nginx.

$ sudo nginx -t

Deberías ver la siguiente salida indicando que tu configuración es correcta.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Vuelve a cargar el servicio Nginx.

$ sudo systemctl reload nginx

Paso 11 – Accede y completa la instalación de Flarum

Abre http://example.com en tu navegador para completar la instalación.

Instalación de Flarum

Rellena los valores necesarios de la base de datos que creamos anteriormente. Puedes dejar en blanco la entrada Prefijo de tabla para permitir que Flarum utilice el prefijo predeterminado o puedes introducir cualquier prefijo personalizado como fla_. Elige un nombre de usuario, una contraseña segura y un ID de correo electrónico para instalar Flarum.

Haz clic en el botón Instalar Flarum para finalizar la instalación.

Una vez instalado, aparecerá la página de inicio predeterminada de Flarum.

Página de Flarum

Tu foro ya está instalado y listo para usar.

Habilitar 2FA

La autenticación de dos factores es una característica esencial para cualquier foro público. Flarum no incluye esta función de forma nativa, pero puedes activarla instalando una extensión. La extensión está disponible en GitHub.

Para instalar el plugin, primero, cambia al directorio de Flarum.

$ cd /var/www/flarum

Instala el plugin utilizando Composer.

$ composer require ianm/twofactor:"*"

El siguiente paso es activar el plugin desde el panel de administración de Flarum. Haz clic en tu nombre en la parte superior derecha de la página de inicio y haz clic en el enlace Administración del menú desplegable.

Menú Admin Flarum

Accederás al panel de administración. Selecciona la función 2FA en el menú de la izquierda y actívala. No necesitas cambiar nada, ya que la configuración por defecto debería funcionar bien.

Página de administración de Flarum 2FA

Si quieres que los moderadores del foro tengan activada la función 2FA, haz clic en el botón Mods y activa la opción 2FA requerida. Haz clic en el botón Guardar cambios para terminar.

Flarum Mods 2FA

Para activar la 2FA en tu cuenta, abre tu página de configuración en el menú superior derecho de la página principal del foro. Abre la página Seguridad seleccionando en la barra lateral izquierda.

Página 2FA de usuario de Flarum

Haz clic en el botón Activar 2FA y se abrirá la siguiente ventana emergente.

Ventana emergente de configuración 2FA de Flarum

Escanea el código QR o elige la opción manual utilizando tu aplicación 2FA e introduce el código generado en la casilla. Pulsa el botón Verificar cuando hayas terminado. Se te mostrarán los códigos de seguridad. Guárdalos y pulsa el botón para continuar.

Flarum 2FA Códigos de seguridad

Se te pedirá confirmación de nuevo. Pulsa el botón Aceptar para continuar. El proceso ha finalizado.

Página Flarum 2FA Configurado

Configurar los ajustes de correo electrónico

También tendrás que configurar los ajustes de correo desde el panel de Administración. Flarum admite el servicio SMTP Mailgun de forma nativa o puedes utilizar un proveedor SMTP externo.

Configuración del correo electrónico de Flarum

Nosotros estamos utilizando el servicio Amazon SES para el que hemos seleccionado smtp en el menú desplegable del controlador de correo electrónico en la página de correo electrónico. Haz clic en el botón Guardar cambios.

Antes de enviar un correo de prueba, tendrás que instalar un paquete composer para que funcione. Cambia al directorio Flarum del servidor.

$ cd /var/www/flarum

Instala el paquete compositor.

$ composer require guzzlehttp/guzzle:^7.0

Vuelve a la página de configuración del correo electrónico y pulsa el botón Enviar para enviar un correo de prueba. La página notificará si el correo se ha enviado correctamente. Deberías recibir el siguiente correo.

Correo de prueba Flarum

Si quieres utilizar Mailgun, elige mailgun en el menú desplegable. Rellena los campos necesarios y guarda la configuración.

Configuración de Flarum MailGun

Paso 12 – Actualizar Flarum

Necesitas tener la extensión Extension Manager para poder actualizar Flarum desde el panel de administración. Instala el Extension Manager con el siguiente comando.

$ cd /var/www/flarum
$ composer require flarum/extension-manager:*

Abre el panel de control del Administrador y activa la extensión Extension Manager cambiando el botón desactivado a la derecha.

Gestor de extensiones Flarum desactivado

Al habilitar la extensión, debería tener el siguiente aspecto.

Gestor de extensiones Flarum activado

Antes de actualizar el foro, debes activar el modo de mantenimiento del foro. La configuración para ello no está disponible a través del panel de control de Administración. Algunos de los ajustes están disponibles a través del archivo config.php en el directorio raíz de Flarum. Pasa al terminal y abre el archivo config.php para editarlo.

$ nano /var/www/flarum/config.php

Busca la línea 'debug' => false, y añade la siguiente línea después de ella para que tenga el siguiente aspecto.

'debug' => false,
'offline' => true,

Cuando hayas terminado, pulsa Ctrl + X para cerrar el editor y pulsa Y cuando se te pida que guardes el archivo.

Vuelve al panel de control y haz clic en el botón Buscar actualizaciones en la página inferior del Gestor de extensiones para actualizar el software de Flarum. Para utilizar el gestor de extensiones para gestionar las actualizaciones de extensiones, consulta la documentación del Gestor de extensiones.

Paso 12 – Copia de seguridad y restauración de Flarum

La forma más sencilla de hacer una copia de seguridad de Flarum es hacer una copia de seguridad de la base de datos MariaDB. Para ello, utiliza la herramienta mysqldump mediante el siguiente comando.

$ sudo mysqldump flarum > flarumbackup.sql

Para restaurar la base de datos en el nuevo servidor, repite todos los comandos del paso 6 sobre la configuración de MariaDB. Esto creará una base de datos en blanco (flarum) y un usuario de base de datos con acceso a ella.

A continuación, ejecuta el siguiente comando para restaurar el foro.

$ sudo mysql flarum < backup.sql

Para hacer una copia de seguridad de los archivos, copia toda la carpeta /var/www/flarum y restáurala en el nuevo servidor. Si vas a cambiar la URL, modifica el valor de la variable url en el archivo config.php y vuelve a configurar Nginx para que sirva el foro.

Conclusión

Con esto concluye nuestro tutorial sobre la instalación del software del foro de la Comunidad Flarum en un servidor Ubuntu 24.04. Si tienes alguna duda o comentario, escríbelo en los comentarios a continuación.

También te podría gustar...