Esta guía explica cómo instalar Flarum en un stack LAMP en Ubuntu 20.04 y asegurarlo con Let's Encrypt SSL usando Certbot.
Para seguir con esta guía debemos tener un servidor con acceso SSH, en este caso utilizaremos un VPS de UpCloud, puedes consultar la lista de proveedores recomendados (Lista de proveedores recomendados).
Instalación de Flarum
1. Modificar la configuración de PHP
- Editar
php.ini
con Nano.
sudo nano /etc/php/7.4/fpm/php.ini
- Localiza los siguientes ajustes, luego edita los valores para que coincidan con estos:
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 150M
allow_url_fopen = On
file_uploads = On
- Guarda y sal del archivo.
2. Crear una base de datos para Flarum
- Inicie sesión en el shell de MariaDB.
sudo mysql
- Crea una base de datos para Flarum. Sustituye
flarum_db
por el nombre que prefieras para la base de datos.
CREATE DATABASE flarum_db;
- Cree un nuevo usuario. Sustituye
flarum_user
por el nombre de usuario que prefieras y flarum_pass
por la contraseña segura que prefieras.
CREATE USER 'flarum_user'@'localhost' IDENTIFIED BY 'flarum_pass';
- Conceda al nuevo usuario todos los privilegios para
flarum_db
.
GRANT ALL PRIVILEGES ON flarum_db.* TO 'flarum_user'@'localhost';
- Descarga los privilegios
FLUSH PRIVILEGES;
- Cierra MariaDB.
exit
3. Instalación de Composer
Composer es la herramienta para la gestión de dependencias PHP. Composer se utilizará para instalar las dependencias de Flarum, ya que Flarum está escrito en PHP.
- Instalar Composer.
sudo curl -s https://getcomposer.org/installer | php
- Mueve el
composer.phar
que se ha creado con el anterior comando al directorio /usr/local/bin/
.
sudo mv composer.phar /usr/local/bin/composer
- Verifica la correcta instalación de Composer comprobando su versión.
composer -V
4. Instalación de Flarum
- Cree un nuevo directorio para Flarum dentro del directorio raíz de web Apache.
sudo mkdir /var/www/html/flarum
- Cambiar el directorio a
/var/www/html/flarum
.
cd /var/www/html/flarum
- Descarga la última versión de Flarum. Introduce
yes
cuando se te pida que continúes como root/superusuario, o de lo contrario te encontrarás con un error.
composer create-project flarum/flarum .
- Instala todas las dependencias de Flarum PHP. Introduce
yes
cuando se te pida que continúes como root/superusuario, o de lo contrario te encontrarás con un error.
sudo composer install
- Cambia la propiedad del directorio Flarum
/var/www/html/flarum
a www-data
.
sudo chown -R www-data:www-data /var/www/html/flarum/
- Asigna los permisos adecuados al directorio Flarum
/var/www/html/flarum
.
sudo chmod -R 755 /var/www/html/flarum/
5. Configurar Apache para Flarum
- Crear un archivo de configuración de host virtual en Apache para Flarum.
sudo nano /etc/apache2/sites-available/flarum.conf
- Pega esto en tu archivo
flarum.conf
. Sustituya tu-nombre-de-dominio.com
por el nombre de tu dominio.
<VirtualHost *:80>
DocumentRoot /var/www/html/flarum/public
ServerName your-domain-name.com
DirectoryIndex index.php
<Directory /var/www/html/flarum/public/>
Options +FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/flarum-error.log
CustomLog ${APACHE_LOG_DIR}/flarum-access.log combined
</VirtualHost>
- Guarda y sal del archivo.
- Habilita el host virtual de Flarum.
sudo a2ensite flarum
- Habilita el módulo de reescritura de Apache, también conocido como
mod_rewrite
.
sudo a2enmod rewrite
- Reinicia el servicio de Apache.
sudo systemctl restart apache2
6. Activar el Firewall de Ubuntu
- Habilita el Firewall de Ubuntu. Introduce
y
cuando se te pida que procedas con la operación.
sudo ufw enable
- Comprueba el estado del cortafuegos. Asegúrate de que los puertos que vas a utilizar (SSH - Puerto 22, HTTP - Puerto 80) están permitidos.
sudo ufw status
- Si no ves los puertos listados arriba, necesitas habilitarlos.
sudo ufw allow 22,80/tcp
7. Acabando la instalación de Flarum
Navega a la dirección IP de tu servidor en tu navegador web.
Rellena todos los detalles, como el título del foro, el nombre de la base de datos, el nombre de usuario y la contraseña de la base de datos, y las credenciales de administrador.
Después de rellenar todos los datos, haz clic en Instalar Flarum para terminar de configurar Flarum.
Serás redirigido a tu Foro una vez que la instalación haya terminado.
Has terminado de instalar Flarum 🎉
Opcional: Configurar el nombre de dominio y Let's Encrypt SSL
Esta parte de la guía es completamente opcional y solo será realmente necesaria si quieres utilizar un nombre de dominio propio.
1. Apunta tu dominio al servidor donde esta Flarum
- Inicia sesión en el panel de su proveedor de dominios.
- Vaya a la gestión de DNS o algo similar para gestionar sus registros DNS.
- Añade un registro A y apúntalo a tu servidor Flarum (su dirección IP). Ten en cuenta que la propagación de los DNS puede tardar hasta 72 horas en surtir efecto. Puedes usar verificadores de DNS en línea para comprobar la propagación de tus DNS.
2. Configurar Let's Encrypt SSL con Certbot
- Instalar Certbot para Apache.
sudo apt-get install python3-certbot-apache -y
- Instala Let's Encrypt SSL para tu sitio web Flarum. Reemplaza
tu-nombre-de-dominio.com
con tu nombre de dominio.
sudo certbot --apache -d tu-nombre-de-dominio.com
- Se te pedirá que introduzcas tu dirección de correo electrónico. También tienes que leer y aceptar sus condiciones de servicio.
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): youremail@example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for your-domain-name.com
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/flarum-le-ssl.conf
Deploying Certificate to VirtualHost /etc/apache2/sites-available/flarum-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/flarum-le-ssl.conf
- Elige si quieres redirigir el tráfico HTTP a HTTPS o no. Se recomienda redirigir todo el tráfico HTTP a HTTPS.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting vhost in /etc/apache2/sites-enabled/flarum.conf to ssl vhost in /etc/apache2/sites-available/flarum-le-ssl.conf
- Deberías obtener este mismo resultado una vez finalizada la instalación.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://your-domain-name.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=your-domain-name.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your-domain-name.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your-domain-name.com/privkey.pem
Your cert will expire on 2022-03-26. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
- We were unable to subscribe you the EFF mailing list because your
e-mail address appears to be invalid. You can try again later by
visiting https://act.eff.org.
- En tu terminal SSH, edita el
config.php
del directorio de Flarum.
sudo nano /var/www/html/flarum/config.php
- Encuentra
'url'
y cambia http://
por https://
. También debes sustituir la dirección IP de tu servidor por el nombre de tu dominio. Por ejemplo:
'url' => 'http://192.168.0.1',
Debería ser:
'url' => 'https://tu-nombre-de-dominio.com',
- Guarda y sal del archivo.
- Permite el puerto HTTPS (Puerto 443) en el firewall.
sudo ufw allow 443
- Prueba tu configuración SSL en SSL Labs.
Listo, has instalado exitosamente Flarum en tu servidor! 🥳
Si tienes alguna duda o te has quedado atascado con algún error, coméntalo por aquí para que te ayudemos.