Matomo (former: Piwik) is an open-source web-analytics platform designed to evaluate the visitor’s behaviour for one or multiple websites.
The tool is written in PHP and stores its data in a MySQL/MariaDB database.
Requirements
- You have an account and are logged into console.scaleway.com
- You have configured your SSH Key
- You have a compute instance running on Ubuntu Bionic Beaver (18.04).
- You have sudo privileges or access to the root user.
Matomo is a web application written in PHP and uses MySQL/MariaDB database to store its data. To serve the web contents, it relies on a web server, for example Nginx. Therefore a working LEMP-Stack is required on the Matomo instance.
1 . Update the apt packet cache and upgrade the packets already installed on the instance:
apt update && apt -y upgrade
2 . Install the required software via apt:
apt install -y ufw nginx mariadb-server php-fpm php-mysql php-curl php-gd php-cli php-xml php-mbstring software-properties-common
3 . Secure the MariaDB server by executing the following command:
mysql_secure_installation
When asked for the current MySQL root password, press Enter as no password is set by default.
4 . Install Certbot to manage the TLS/SSL certificate:
add-apt-repository ppa:certbot/certbot
apt update
apt install -y python-certbot-nginx
1 . Enter the directory /var/www/html
cd /var/www/html
2 . Download the latest release of Matomo:
wget https://builds.matomo.org/matomo-latest.tar.gz
3 . Unpack Matomo:
tar xfz matomo-lastest.tar.gz
4 . Set the ownership of the Matomo files to the www-data
user:
chown -R www-data:www-data matomo
Important: When doing the following steps, replace
matomo.example.com
with the domain name your Matomo will run on.
1 . Create a Nginx Configuration file and open it in a text editor:
nano /etc/nginx/sites-available/matomo.example.com
2 . Copy the following content into the configuration file:
server {
listen 80;
root /var/www/html/matomo;
index index.php index.html index.htm;
server_name matomo.example.com;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
3 . Enable the newly created site by creating a symlink:
ln -s /etc/nginx/sites-available/matomo.example.com /etc/nginx/sites-enabled/
4 . Check the Nginx configuration file for possible errors:
nginx -t
5 . Reload Nginx to activate the new configuration:
service nginx reload
6 . Run Certbot with the --nginx
flag to request a Let’s Encrypt TLS/SSL certificate for the newly created server block:
certbot --nginx
1 . Log into the MySQL shell with the root
user.
mysql -u root -p
Important: The password of the MySQL root user is the one configured during the secure installation of MySQL.
2 . Run the following commands from the MySQL shell to create the database for Matomo:
CREATE DATABASE matomodb;
GRANT ALL ON matomodb.* TO matomo@localhost IDENTIFIED BY 'SECURE-DATABASE-PASSWORD';
FLUSH PRIVILEGES;
quit;
1 . To finalize the installation of Matomo, open a web browser and go to https://matomo.example.com/
. The web installer displays. Click on Next to go to the second step:
2 . Matomo launches some automatic checks if all pre-requirements are fulfilled. If everything is green, click on Next to continue with the installation:
3 . Proceed with the database configuration:
127.0.0.1
matomo
)SECURE-DATABASE-PASSWORD
)matomodb
)matomo_
)PDO\MYSQL
)Click on Next to proceed with the installation.
4 . Matomo verifies the MySQL/MariaDB credentials. If everything is working well, the database structure is created automatically and a success message displays. Click Next to continue with the installation:
5 . Configure a super-user (or admin) user for Matomo. This user will be the master user which is able to configure all settings of the tool and can add additional users and sites:
Click on Next to create the super user account and to proceed with the installation.
6 . Setup a first website that shall be tracked and analysed by Matomo:
Click on Next to validate the form and to continue with the installation.
Important: Additional websites can be configured once the initial setup has been completed.
7 . A tracking shows up. Make sure this code is on every page of your website so it can be tracked correctly. It is recommended to put it in the header-section of the website, immediately before the closing </head>
tag.
Copy the displayed tracking code and put it into your website header. The tracking code looks like the following example:
<!-- Matomo -->
<script type="text/javascript">
var _paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//matomo.scw-site.ml/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
Click on Next once you have copied the code to continue with the installation.
8 . The installation is completing. It is possible to anonymize the data tracked by Matomo. This is recommended to comply with data protection regulations.
1 . Once the installation is completed, the login screen displays:
Enter the super-user login and the password set in a previous step.
2 . The Matomo Dashboard displays. If the tracking code was added to the website, the application begins to track users and generates usage statistics over the time:
Matomo is now installed, counting visitors and analyzing their behaviour. For more information about the integration of Matomo on different Content Management Systems (CMS) and advanced configuration of the tool, refer to the official documentation.