Cara instalasi Matomo Web Analytics di Ubuntu 18.04
Tags: matomo, analytics, ubuntu, indonesia
Published: 2021-03-15 18:09:16

Matomo (sebelumnya bernama Piwik) adalah sebuah aplikasi untuk web analytics, yang saat ini populer digunakan sebagai alternatif untuk menggantikan Google Analytics. Matamo dapat melacak data pengunjung website, dan kemudian menampilkan hasilnya dalam sebuah laporan untuk di analisa. 

Matomo adalah sebuah aplikasi open source, dan progress pengembangannya bisa dilihat di Github. 

{% github matomo-org/matomo no-readme %}

Fitur yang dimiliki Matomo beberapa diantaranya adalah, A/B Testing, Heatmaps, Funnels, Tracking & Reporting API, Google AdWords, Facebook Ads, Bing Ads, Cost Per Click (CPC), dan masih banyak lagi.

Dalam tutorial ini akan dikupas cara instalasi Matomo web analytics di Ubuntu 18.04, dengan menggunakan Nginx sebagai web server-nya, PHP7.4, MariaDB, dan untuk sertifikat SSL akan menggunakan Let’s Encrypt.

---


## Instalasi dasar

Pilih timezone tempat Anda tinggal, dengan menjalankan perintah dibawah ini.
```bash
sudo dpkg-reconfigure tzdata
```

Selanjutnya lakukan instalasi beberapa dependencies.
```bash
sudo apt install curl wget vim git unzip socat -y
```

---


## Instalasi MariaDB

Jalankan perintah berikut untuk melakukan instalasi MariaDB.
```bash
sudo apt install mariadb-server -y
```

Untuk mengecek apakah MariaDB sudah berjalan dengan normal, cek dengan perintah berikut.
```bash
sudo systemctl status mariadb
```
```bash
● mariadb.service - MariaDB 10.1.44 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since 46s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 1975 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 27 (limit: 658)
   CGroup: /system.slice/mariadb.service
           └─1975 /usr/sbin/mysqld
```

Selanjutnya jalankan perintah berikut untuk mengamankan instalasi MariaDB.
```bash
sudo mysql_secure_installation
```

Lalu jawablah semua pertanyaan yang muncul dengan konfigurasi berikut.
```bash
Enter current password for root (enter for none): isi_password
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
```

---


## Buat database untuk Matomo

Login ke MariaDB dengan menggunakan perintah,
```bash
sudo mysql -u root -p
```

Isi password MariaDB untuk user `root` ketika diminta, dan setelah masuk jalankan perintah berikut.
```mysql
CREATE DATABASE matomodba;
CREATE USER 'matomo'@'localhost' IDENTIFIED BY 'isi-password-disini';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, DROP, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON matomodba.* TO 'matomo'@'localhost';
GRANT FILE ON *.* TO 'matomo'@'localhost';
FLUSH PRIVILEGES;
exit
```

Untuk nama database `matomodba` bisa diganti sesuai selera, namun untuk database user disarankan tetap menggunakan `matomo`.

---


## Instalasi PHP

Sebelum melakukan instalasi PHP 7.4, jalankan perintah dibawah ini untuk mengaktifkan repository-nya.
```bash
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php
```

Lakukan instalasi PHP 7.4 dengan perintah berikut.
```bash
sudo apt install php7.4 php7.4-cli php7.4-curl php7.4-fpm php7.4-gd php7.4-intl php7.4-json php7.4-mbstring php7.4-mysql php7.4-opcache php7.4-readline php7.4-xml php7.4-xsl php7.4-zip php7.4-bz2 libapache2-mod-php7.4 -y
```

Cek versi PHP dengan perintah ini.
```bash
php --version
```
```bash
PHP 7.4.5 (cli) (built: Apr 19 2020 07:36:30) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies
```

---


## Aktifkan firewall

Pada tutorial ini menggunakan firewall bawaan Ubuntu yaitu `ufw`. Aktifkan dengan perintah berikut.
```bash
sudo ufw allow OpenSSH
sudo ufw enable
```

---


## Instalasi sertifikat SSL

Tindakan mengamankan website dengan sertifikat SSL, sangatlah disarankan. Untuk memperoleh sertifikat SSL dari Let’s Encrypt, pada artikel ini akan menggunakan `acme.sh` dan mesti diinstall terlebih dulu, dengan menjalankan perintah berikut ini secara berurutan.
```bash
sudo mkdir /etc/letsencrypt
sudo curl https://get.acme.sh | sh
```

Tutup terminal yang sedang digunakan, kemudian buka kembali dan lakukan pengecekan versinya,
```bash
acme.sh --version
```
```bash
https://github.com/acmesh-official/acme.sh
v2.8.7
```

Selanjutnya, jalankan perintah dibawah ini untuk registrasi sertifikat RSA dan ECC/ECDSA untuk domain yang akan digunakan, disini akan menggunakan `contoh.com`. **Pastikan domain Anda sudah diarahkan ke server ini**.
```bash
sudo acme.sh --issue --standalone --home /etc/letsencrypt -d contoh.com --keylength 2048
sudo acme.sh --issue --standalone --home /etc/letsencrypt -d contoh.com --keylength ec-256
```

Ingat, ganti `contoh.com` diatas dengan nama domain dari Matomo Anda.

Langkah ini selesai apabila kode certificate-nya sudah muncul. Tampilannya mirip seperti dibawah ini.
```bash
-----BEGIN CERTIFICATE-----
MIIEjDCCA3SgAwIBAgISBN92sUegDEJB8biuLJRE52LRMA0GCSqGSIb3DQEBCwUA
...
FEZiTnEu5NFMfLAWZuKKYg==
-----END CERTIFICATE-----
```

---


## Instalasi Nginx

Untuk cara instalasi Nginx, silahkan baca artikel berikut.

{% post https://dev.to/erolj/cara-install-nginx-di-ubuntu-18-04-43k2 %}

Selanjutnya, buat konfigurasi Matomo untuk Nginx, dengan menjalankan perintah berikut.
```bash
sudo vim /etc/nginx/sites-available/matomo.conf
```

Isi dengan baris konfigurasi dibawah ini. Jangan lupa mengganti `contoh.com` dengan nama domain Anda sebelum konfigurasi dibawah ini disimpan.
```conf
server {

  listen [::]:443 ssl http2;
  listen 443 ssl http2;
  listen [::]:80;
  listen 80;

  server_name contoh.com;
  root /var/www/matomo/;
  index index.php;

  ssl_certificate /etc/letsencrypt/contoh.com/fullchain.cer; 
  ssl_certificate_key /etc/letsencrypt/contoh.com/contoh.com.key; 
  ssl_certificate /etc/letsencrypt/contoh.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/contoh.com_ecc/contoh.com.key;

  location ~ ^/(index|matomo|piwik|js/index).php {
    include snippets/fastcgi-php.conf;
    fastcgi_param HTTP_PROXY ""; 
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; 
  }
  
  location = /plugins/HeatmapSessionRecording/configs.php {
    include snippets/fastcgi-php.conf;
    fastcgi_param HTTP_PROXY "";
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
  }

  location ~* ^.+\.php$ {
    deny all;
    return 403;
  }

  location / {
    try_files $uri $uri/ =404;
  }
  
  location ~ /(config|tmp|core|lang) {
    deny all;
    return 403;
  }

  location ~ \.(gif|ico|jpg|png|svg|js|css|htm|html|mp3|mp4|wav|ogg|avi|ttf|eot|woff|woff2|json)$ {
    allow all;
  }

  location ~ /(libs|vendor|plugins|misc/user) {
    deny all;
    return 403;
  }

}
```

Aktifkan dengan perintah berikut.
```bash
sudo ln -s /etc/nginx/sites-available/matomo.conf /etc/nginx/sites-enabled
```

Tambahkan Nginx ke firewall.
```bash
sudo ufw allow "Nginx Full"
sudo ufw reload
```

Lakukan pengecekan konfigurasi Nginx.
```bash
sudo nginx -t
```
```bash
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```

Langkah terakhir pada bagian ini, adalah dengan me-restart Nginx.
```bash
sudo systemctl reload nginx
```

---


## Instalasi Matomo Web Analytics

Instalasi Matomo dilakukan dengan cara menjalankan perintah berikut ini secara berurutan.
```bash
cd /var/www/
sudo wget https://builds.matomo.org/matomo.zip && sudo unzip matomo.zip
sudo rm matomo.zip
sudo chown -R root:root /var/www/matomo
```

Sampai pada langkah ini, Matomo sudah berhasil terpasang dan siap untuk dilakukan pengaturan, supaya dapat segera digunakan.

---


## Pengaturan Matomo Web Analytics

Akses domain Matomo dari browser. Tekan Next pada langkah 1 pengaturan Matomo.

![Langkah 1](https://cdn.hashnode.com/res/hashnode/image/upload/v1615830602196/LhHzMhuZ8.png)

Pada langkah 2, adalah pengecekan konfigurasi sistem. Jika semuanya sudah memiliki tanda centang, maka konfigurasi sudah benar dan bisa dilanjutkan ke langkah selanjutnya. Tekan tombol Next.

![Langkah 2](https://cdn.hashnode.com/res/hashnode/image/upload/v1615830631618/Fed4amyml.png)

Pada langkah 3, isilah detil login database yang sudah diatur sebelumnya pada waktu pembuatan database. Klik Next untuk melanjutkan.

![Langkah 3](https://cdn.hashnode.com/res/hashnode/image/upload/v1615830652716/s1ll4h2Tz.png)

Pada langkah 4 ini, apabila detil login database sudah benar, maka akan muncul pesan

> **Tables created with success!** 

dan klik Next untuk lanjut ke langkah selanjutnya.

![Langkah 4](https://cdn.hashnode.com/res/hashnode/image/upload/v1615830692629/DH8lV58uJ.png)

Langkah 5 adalah membuat login Super User (admin) untuk Matomo. Isilah dengan login yang diinginkan, lanjutkan dengan menekan tombol Next.

![Langkah 5](https://cdn.hashnode.com/res/hashnode/image/upload/v1615830715301/KF7GVczCi.png)

Langkah 6 adalah langkah awal untuk mulai melakukan tracking menggunakan Matomo. Masukkan detil website pertama yang mau di tracking, tekan Next untuk melanjutkan ke langkah selanjutnya.

![Langkah 6](https://cdn.hashnode.com/res/hashnode/image/upload/v1615830734513/Hexbsdb3z.png)

Langkah 7 menyediakan tracking code untuk disertakan pada website yang akan di-track dengan Matomo. Kode harus ditempelkan sebelum tag `</head>` pada halaman website.

![Langkah 7](https://cdn.hashnode.com/res/hashnode/image/upload/v1615830755457/CqEK7-nEd.png)

Pada langkah 8 adalah langkah terakhir untuk proses pengaturan Matomo, selanjutnya tekan tombol Continue to Matomo untuk segera masuk ke dashboard Matomo.

![Langkah 8](https://cdn.hashnode.com/res/hashnode/image/upload/v1615830777376/M0KYcFswp.png)

Selamat, proses instalasi Matomo selesai.

![Homepage Matomo](https://cdn.hashnode.com/res/hashnode/image/upload/v1615830798794/7wUd-4xCV.png)

---


## Tautan berguna
- (https://matomo.org/docs/installation/#check-you-meet-the-minimum-requirements)
- (https://github.com/matomo-org/matomo-nginx)
- (https://github.com/acmesh-official/acme.sh/wiki)