Introduzione
Questa è una breve e semplice guida su come installare Matomo su server con Ubuntu 20.04.
Descriveremo quali comandi da terminale devono essere utilizzati per la prima parte della installazione di Matomo, mentre la successiva sarà completata mediante interfaccia web.
Prerequisiti
Sul sito web di Matomo è disponibile la configurazione.
E’ necessario installare sul server - salvo che non siano già installati - i seguenti pacchetti:
- PHP versione 7.2.5 o superiore;
- MySQL versione 5.5 o superiore oppure MariaDB;
- NGINX.
Infine è necessario un nome a dominio (es.: matomo.domain.com)
1. Verificare che il server Ubuntu 20.04 sia aggiornato
Una volta effettuato l’accesso via SSH al server, verificare la presenza di eventuali aggiornamenti:
sudo apt update
sudo apt upgrade
Installare alcune dipendenze (qualora non siano già installate sul server):
apt install curl wget unzip gnupg2 -y
2. Installare i pacchetti necessari
Qualora non siano già installati sul server i pacchetti indicati tra i prerequisiti, procedere con la loro installazione come segue:
Proponiamo due soluzioni a seconda che, per il database da creare, si desideri installare solo MySQL oppure solo MariaDB. Sul punto, precisiamo che si tratta di due differenti soluzioni, ove MySQL è stato il primo ad essere sviluppato nel 1995, mentre MariaDB è un fork di MySQL sviluppato nel 2009. Su Internet si trovano diversi contributi che espongono la comparazione tra le due soluzioni.
Nel nostro caso, useremo MariaDB.
E pertanto, ai fini della installazione, optare per una delle seguenti soluzioni che sono alternative tra loro:
- Per il database che si dovrà creare, se si vuole installare solo MySQL, procedere come segue:
apt install nginx mysql-server php7.4 php7.4-cli php7.4-fpm php7.4-common php7.4-curl php7.4-gd php7.4-xml php7.4-mbstring php7.4-mysql -y
- Per il database che si dovrà creare, se si vuole installare solo MariaDB, procedere come segue:
apt install nginx mariadb-server php7.4 php7.4-cli php7.4-fpm php7.4-common php7.4-curl php7.4-gd php7.4-xml php7.4-mbstring php7.4-mysql -y
3. Creazione del database
Accedere a MySQL o MariaDB - senza impostare la password - con il seguente comando:
sudo mysql -u root
Dopo aver digitato il comando su riportato si presenterà un prompt come segue:
MariaDB [(none)]>
Se invece fosse MySQL, si avrà:
mysql>
Quindi, procedere alla creazione del database come segue:
CREATE DATABASE matomo;
Poi creare utente e password come segue, decidendo - se si vuole - di cambiare matomoadmin
con altro nome utente (sarà quello utilizzato per accedere al database), ma fondamentalmente sostituire strongpassword
con la password che sarà necessaria per l’accesso al database di Matomo.
CREATE USER 'matomoadmin'@'localhost' IDENTIFIED BY 'strongpassword';
Quindi, garantire all’utente creato (sempre che intenda lasciare matomoadmin
, altrimenti cambiare con il nome utente scelto) il pieno accesso al database così:
GRANT ALL ON matomo.* TO 'matomoadmin'@'localhost';
Salvare le impostazioni come segue:
FLUSH PRIVILEGES;
Uscire dalla shell di MariaDB o di MySQL digitando:
exit;
4. Installazione di Matomo
Prima di installare Matomo, sul server eseguire questi comandi:
Spostarsi nella cartella dove dovrà essere installato Matomo
cd /var/www/
Quindi, con il comando wget
scarichiamo il file “matomo.zip” digitando il link presente sulla pagina di installazione di Matomo e poi decomprimiamo il file:
wget https://builds.matomo.org/matomo.zip && unzip matomo.zip
Verrà scaricato il file matomo.zip e quindi decompresso automaticamente nella cartella “matomo” che sarà in /var/www/
.
Infatti, digitando
ls -la
Si potrà vedere la cartella “matomo” che sarà appunto in /var/www/matomo/
.
A questo punto, si dovrà attribuire la ownership all’utente “www-data” per la cartella “matomo” come segue
sudo chown -R www-data:www-data /var/www/matomo
Cambiare i permessi per l’accesso alla cartella “matomo” come segue
sudo chmod -R 755 /var/www/matomo
5. Configurazione di NGINX con un nome a dominio
Se si è in possesso di un nome a dominio, bisogna creare un file di configurazione di NGINX per il corretto indirizzamento.
Sul sito di Matomo a questa pagina cliccando su Nginx si verrà indirizzati ad una pagina di GitHub dove poter scaricare il file di configurazione di NGINX.
Quindi, sul server, spostarsi all’interno della cartella sites-available
di NGINX come segue
cd /etc/nginx/sites-available/
Creare un file al quale attribuiremo il nome “nomeadominio.conf” come segue
nano nomeadominio.conf
Copiare e incollare il contenuto del file di configurazione di Ngnix precedente scaricato e che, per comodità, riportiamo:
server {
listen [::]:80; # remove this if you don't want Matomo to be reachable from IPv6
listen 80;
server_name matomo.domainname.com;
# Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
location / {
return 301 https://$host$request_uri;
}
}
server {
listen [::]:443 ssl http2; # remove this if you don't want Matomo to be reachable from IPv6
listen 443 ssl http2;
server_name matomo.domainname.com; # list all domains Matomo should be reachable from
access_log /var/log/nginx/matomo.access.log;
error_log /var/log/nginx/matomo.error.log;
## uncomment if you want to enable HSTS with 6 months cache
## ATTENTION: Be sure you know the implications of this change (you won't be able to disable HTTPS anymore)
#add_header Strict-Transport-Security max-age=15768000 always;
## replace with your SSL certificate
ssl_certificate /etc/letsencrypt/live/matomo.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/matomo.example.com/privkey.pem;
# include ssl.conf; # if you want to support older browsers, please read through this file
add_header Referrer-Policy origin always; # make sure outgoing links don't show the URL to the Matomo instance
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
root /var/www/matomo/; # replace with path to your matomo instance
index index.php;
## only allow accessing the following php files
location ~ ^/(index|matomo|piwik|js/index|plugins/HeatmapSessionRecording/configs)\.php$ {
include snippets/fastcgi-php.conf; # if your Nginx setup doesn't come with a default fastcgi-php config, you can fetch it from https://github.com/nginx/nginx/blob/master/conf/fastcgi.conf
#try_files $fastcgi_script_name =404; # protects against CVE-2019-11043. If this line is already included in your snippets/fastcgi-php.conf you can comment it here.
fastcgi_param HTTP_PROXY ""; # prohibit httpoxy: https://httpoxy.org/
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; #replace with the path to your PHP socket file
#fastcgi_pass 127.0.0.1:9000; # uncomment if you are using PHP via TCP sockets (e.g. Docker container)
}
## deny access to all other .php files
location ~* ^.+\.php$ {
deny all;
return 403;
}
## serve all other files normally
location / {
try_files $uri $uri/ =404;
}
## disable all access to the following directories
location ~ ^/(config|tmp|core|lang) {
deny all;
return 403; # replace with 404 to not show these directories exist
}
location ~ /\.ht {
deny all;
return 403;
}
location ~ js/container_.*_preview\.js$ {
expires off;
add_header Cache-Control 'private, no-cache, no-store';
}
location ~ \.(gif|ico|jpg|png|svg|js|css|htm|html|mp3|mp4|wav|ogg|avi|ttf|eot|woff|woff2|json)$ {
allow all;
## Cache images,CSS,JS and webfonts for an hour
## Increasing the duration may improve the load-time, but may cause old files to show after an Matomo upgrade
expires 1h;
add_header Pragma public;
add_header Cache-Control "public";
}
location ~ ^/(libs|vendor|plugins|misc|node_modules) {
deny all;
return 403;
}
## properly display textfiles in root directory
location ~/(.*\.md|LEGALNOTICE|LICENSE) {
default_type text/plain;
}
}
# vim: filetype=nginx
Una volta incollato, chiudere l’editor con Ctrl+X e scrivere Y per consentire di salvare.
Per verificare che la configurazione del il file sia corretta, digitare
nginx -t
Se otterremo la seguente risposta
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
vuol dire che la configurazione è corretta e, in questo caso, possiamo creare il link nella cartella /etc/nginx/sites-enabled/
precisando che nomeadominio.conf è il nome del fine di configurazione di Nginx che si era scelto.
Quindi digiteremo
ln -s /etc/nginx/sites-enabled/nomeadominio.conf /etc/nginx/sites-available/nomeadominio.conf
A questo punto, riavviamo Nginx con
systemctl restart nginx
6. Installazione del certificato SSL con Let’s Encrypt
Per ottenere una connessione al sito matomo.domainname.com con procollo HTTPS installiamo il certificato SSL con certbot come segue:
certbot --nginx
A questo punto seguire le indicazioni che compaiono a terminale prestando attenzione a scegliere la voce che corrisponde al nome a dominio (avevamo esemplificato con “matomo.domainname.com” e poi scegliere il n. 2 e cioè
“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.”.
7. Completare l’installazione con il browser
A questo punto è sufficiente aprire il browser e scrivere nella barra degli indirizzi il nome a dominio che avevamo impostato (nel nostro caso matomo.domainname.com).
Se tutto è andato a buon fine, apparirà la pagina web dalla quale completare la configurazione di Matomo, come si può vedere sul sito ufficiale.
Se questa risorsa è stata utile, potreste contribuire con
o donare via
Follow us on Mastodon
Stay tuned!