Complete Guide on How to Install Matomo Web Analytics using LAMP Stack on AlmaLinux 8
Matomo is an open-source web analytics platform that provides complete control over your site's visitor data. With Matomo, you can accurately monitor website traffic statistics without relying on third parties. In this guide, we'll cover how to install Matomo Web Analytics on AlmaLinux 8 using a LAMP Stack, from server setup to final settings in the Matomo dashboard.
Prerequisites
- Full root access
- Domain (optional)
- Basic Linux Command Line
Preparation
Make sure the firewall and SELinux have been adjusted or temporarily disabled if you want to avoid problems during the initial installation.
Before starting the Shopware installation, make sure your AlmaLinux 8 server is up to date and ready to install the LAMP Stack (Linux, Apache, MariaDB, PHP).
dnf update -y
dnf install epel-release -y
Install Apache
Apache is a reliable web server and is widely used in production environments. To install it, run the following command:
dnf install httpd -y
Once the installation is complete, enable and start the Apache service with the following command:
systemctl enable --now httpd
To allow access to the server via HTTP and HTTPS, allow the firewall:
firewall-cmd --permanent --add-service={http,https}
firewall-cmd --reload
Install PHP
PHP (Hypertext Preprocessor) is a server-side programming language that is crucial in this stack. We will install PHP 8 from the Remi Repository to use the latest version of PHP.
Run the following command to install the Remi Repository:
dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Then list the available PHP using the following command:
dnf module list php
Output example:
AlmaLinux 8 - AppStream
Name Stream Profiles Summary
php 7.2 [d] common [d], devel, minimal PHP scripting language
php 7.3 common [d], devel, minimal PHP scripting language
php 7.4 common [d], devel, minimal PHP scripting language
php 8.0 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
php remi-8.4 common [d], devel, minimal PHP scripting language
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Enable the desired PHP module version. For example, for PHP 8.4, run the following command:
dnf module reset php -y
dnf module enable php:remi-8.4 -y
Once the repository is active, we can proceed with installing PHP along with the commonly used essential modules:
dnf install -y php php-cli php-common php-mysqlnd php-fpm php-opcache php-gd php-curl php-mbstring php-xml php-json php-soap php-bcmath
Check the installed PHP version with the following command:
php -v
Install MariaDB
MariaDB is a replacement for MySQL and is compatible with MySQL-based applications. Run the following command to install it:
dnf module list mariadb
Output example:
AlmaLinux 8 - AppStream
Name Stream Profiles Summary
mariadb 10.3 [d] client, galera, server [d] MariaDB Module
mariadb 10.5 client, galera, server [d] MariaDB Module
mariadb 10.11 client, galera, server [d] MariaDB Module
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
The output above shows that the default version of MariaDB is 10.11 (the latest version from the OS). However, we'll use MariaDB version 11.4.7 using the official repository at https://mariadb.org/download/ and then reset MariaDB to remove it from the OS's default repository:
dnf module reset mariadb
Run the following command to add the MariaDB version 11.4.7 repository:
nano /etc/yum.repos.d/MariaDB.repo
Add the following parameters:
# MariaDB 11.4 RedHatEnterpriseLinux repository list - created 2025-07-31 14:04 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
# rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# baseurl = https://rpm.mariadb.org/11.4/rhel/$releasever/$basearch
baseurl = https://mirror.its.dal.ca/mariadb/yum/11.4/rhel/$releasever/$basearch
module_hotfixes = 1
# gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgkey = https://mirror.its.dal.ca/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
Then run the following command to install MariaDB:
dnf install MariaDB-server MariaDB-client
Enable and activate the MariaDB service:
systemctl enable --now mariadb
systemctl status mariadb
Before using it for production or testing, it is best to secure the MariaDB installation first by running the following command:
mariadb-secure-installation
Then follow the instructions that appear:
- Enter current password for root (enter for none) → [ENTER]
- Switch to unix_socket authentication → Y
- Change the root password? → Y
- Remove anonymous users? → Y
- Disallow root login remotely? Y
- Remove test database and access to it? Y
- Reload privilege tables now? Y
Install Matomo
Before installing Matomo, we'll first create a virtual host and database (to store Matomo's content, configuration, and structure). Run the following command to create a virtual host:
Make sure you're using a valid domain (FQDN) and that the DNS A record is pointed to the server IP address used on your server.
nano /etc/httpd/conf.d/focusnic.biz.id.conf
Fill in the following parameters:
<VirtualHost *:80>
ServerAdmin webmaster@focusnic.biz.id
ServerName focusnic.biz.id
ServerAlias www.focusnic.biz.id
DocumentRoot /var/www/focusnic.biz.id/public_html
<Directory /var/www/focusnic.biz.id/public_html>
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/focusnic.biz.id-error.log
CustomLog /var/log/httpd/focusnic.biz.id-access.log combined
</VirtualHost>
Then create a directory on the virtualhost above:
mkdir -p /var/www/focusnic.biz.id/public_html
Restart Apache to save changes:
apachectl configtest
systemctl restart httpd
Create a database by running the following command:
mariadb
Then run the following command to create a database, user, and password:
create database matomo_db;
create user 'matomo_user'@'localhost' identified by '2ia1ap2Hfrn1ATX6';
grant all on matomo_db.* to 'matomo_user'@'localhost';
flush privileges;
quit;
Download the Matomo file and place it in the appropriate directory of the virtual host:
cd /var/www/focusnic.biz.id/public_html
wget https://builds.matomo.org/matomo-latest.zip
unzip latest.zip
mv matomo/* .
Adjust permissions:
find /var/www/focusnic.biz.id/public_html -type f -exec chmod 644 {} \;
find /var/www/focusnic.biz.id/public_html -type d -exec chmod 755 {} \;
chown -R apache:apache /var/www/focusnic.biz.id
Matomo setup via http://$DOMAIN
Matomo's system check, make sure everything is checked. Then, scroll down and click "Next."
Set up the Matomo database, making sure to use the database, user, and password you created earlier. Continue until the database table creation process is successful.
Then create an administration user for Matomo
Add the domain you want to track
Follow the instructions on this page to add the Matomo tracker to your website.
Matomo has been successfully installed, scroll to the bottom of the page and click "CONTINUE TO MATOMO"
The following is a display of the Matomo admin dashboard which can be accessed via http://$DOMAIN
Troubleshooting
- Error "PHP extension missing"
Make sure all PHP extensions are installed by running the following command:
dnf install -y php php-cli php-common php-mysqlnd php-fpm php-opcache php-gd php-curl php-mbstring php-xml php-json php-soap php-bcmath php-zip php-intl php-posix
- Error "Database connection failed"
Edit the configuration file /var/www/focusnic.biz.id/public_html/config/config.ini.php
in the Matomo folder and adjust it with the database credentials.
- Permission Denied on the Matomo Folder
Apache does not have write permissions to the Matomo folder. Grant permission to the Apache user:
find /var/www/focusnic.biz.id/public_html -type f -exec chmod 644 {} \;
find /var/www/focusnic.biz.id/public_html -type d -exec chmod 755 {} \;
chown -R apache:apache /var/www/focusnic.biz.id
Conclusion
By following this guide, we have successfully installed Matomo Web Analytics on AlmaLinux 8 using the LAMP Stack. This solution provides full control over analytics data without relying on third parties, while maintaining user privacy.
If you want an optimal, secure, and well-managed Matomo server, use Focusnic's server installation or cloud VPS service so you can focus on business development without the hassle of technical issues.
Q: Is Matomo free to use?
A: Yes, Matomo is open-source software that is free to use. However, there are paid service options for additional features.
Q: Can Matomo be integrated with WordPress or other CMSs?
A: Yes. Matomo provides official plugins for WordPress and other CMSs such as Joomla, Drupal, and PrestaShop.
Q: What are the minimum server specifications for Matomo?
A: A minimum of 2 GB of RAM and a dual-core processor. For high traffic, 4 GB of RAM or more with an SSD/NVMe is recommended.
Q: Is Matomo secure for user data?
A: Yes, Matomo stores all data on your servers, which protects visitor privacy better than third-party analytics services.
Further References: