Hello,
In this week’s feature highlight, we look at How to Install Flarum on Ubuntu 20.04
Flarum is a free, open-source, and next-generation forum application that helps you to build your online discussion forum. Flarum looks and feels great out of the box. The user interface is streamlined so you can spend less time clicking and more time talking.
Update the system.
apt update
apt upgrade
Install LAMP Server
apt-get install apache2 mariadb-server php8.0 libapache2-mod-php8.0 php8.0-common php8.0-mbstring php8.0-xmlrpc php8.0-soap php8.0-mysql
php8.0-gd php8.0-xml php8.0-curl php8.0-cli php8.0-zip php8.0-tokenizer wget unzip curl git -y
After installing all packages, edit the php.ini file for some tweak settings,
nano /etc/php/8.0/apache2/php.ini
Edit/Modify the following variables in php.ini as follows,
file_uploads = On
allow_url_fopen = On
memory_limit = 256M
upload_max_file_size = 150M
max_execution_time = 450
Create a Flarum Database
mysql
Create database and user with the below command.
Replace the password with a strong and secure password.
MariaDB [(none)]> CREATE DATABASE flarum;
MariaDB [(none)]> CREATE USER 'flarum'@'localhost' IDENTIFIED BY 'password';
Grant all the privileges to the flarum database using the below command,
MariaDB [(none)]> GRANT ALL PRIVILEGES ON flarum.* TO 'flarum'@'localhost';
Flush the privileges and exit,
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Install Composer
Install composer using below command,
curl -s https://getcomposer.org/installer | php
Output:
All settings correct for using Composer
Downloading...
Composer (version 1.10.10) successfully installed to: /root/composer.phar
Use it: php composer.phar
Move Composer binary file to the /usr/local/bin/
directory with the following command,
mv composer.phar /usr/local/bin/composer
Verify Composer version using below command,
composer -V
Output:
Composer version 1.10.10 2020-08-03 11:35:19
Install Flarum
Need to create directory for Flarum inside Apache web directory,
mkdir /var/www/html/flarum
Download the latest version of Flarum using Composer,
composer create-project flarum/flarum . --stability=beta
Install all PHP dependencies,
composer install
Change the ownership of Flarum to www-data and set permissions using below command,
chown -R www-data:www-data /var/www/html/flarum/
chmod -R 755 /var/www/html/flarum/
Configure Flarum with Apache
Create Apache virtual host configuration file for host Flarum,
nano /etc/apache2/sites-available/flarum.conf
Replace (customer-domain.here) with (actual domain name).
Add the following lines,
<VirtualHost *:80>
ServerAdmin customer-domain.here
DocumentRoot /var/www/html/flarum/public
ServerName customer-domain.here
DirectoryIndex index.php
<Directory /var/www/html/flarum/public/>
Options +FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Enable the Flarum virtual host and Apache rewrite module using the below command,
a2ensite flarum
a2enmod rewrite
Restart Apache serving to apply the changes,
systemctl restart apache2
systemctl status apache2
Output:
? apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-08-23 09:57:11 UTC; 2min 44s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 27164 (apache2)
Tasks: 6 (limit: 2353)
Memory: 12.3M
CGroup: /system.slice/apache2.service
??27164 /usr/sbin/apache2 -k start
??27165 /usr/sbin/apache2 -k start
??27166 /usr/sbin/apache2 -k start
??27167 /usr/sbin/apache2 -k start
??27168 /usr/sbin/apache2 -k start
??27169 /usr/sbin/apache2 -k start
Secure Flarum with Let’s Encrypt SSL
First, install the Certbot Let’s Encrypt client using the below command,
apt-get install python3-certbot-apache -y
Run the below command to install Let’s Encrypt SSL for Flarum Site,
certbot --apache -d customer-domain.here
You will be asked to provide your email address and accept the terms,
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): Your_Email_Address
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 customer-domain.here
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/flarum-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/flarum-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/flarum-le-ssl.conf
Choose whether or not to redirect HTTP traffic to 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
Output:
Redirecting vhost in /etc/apache2/sites-enabled/flarum.conf to ssl vhost in /etc/apache2/sites-available/flarum-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://customer-domain.here
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=customer-domain.here
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/customer-domain.here/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/customer-domain.here/privkey.pem
Your cert will expire on 2020-11-21. 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.
Navigate your browser:
Replace customer-domain.here with actual_domain_name.
https://cutomer-domain.here
Done.