Cara instalasi Matomo Web Analytics di Ubuntu 18.04

Dalam tutorial ini akan dikupas cara instalasi Matomo web analytics di Ubuntu 18.04, dengan menggunakan Nginx dan Let's Encrypt.
0

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. 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, dan untuk sertifikat SSL akan menggunakan Let’s Encrypt.

Instalasi dasar

Pilih timezone tempat Anda tinggal, dengan menjalankan perintah dibawah ini.

sudo dpkg-reconfigure tzdata

Selanjutnya lakukan instalasi beberapa dependencies.

sudo apt install -y curl wget vim git unzip socat

Install MariaDB

Jalankan perintah berikut untuk melakukan instalasi MariaDB.

sudo apt install -y mariadb-server

Untuk mengecek apakah MariaDB sudah berjalan dengan normal, cek dengan perintah berikut.

sudo systemctl status mariadb
● mariadb.service - MariaDB 10.1.44 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-04-19 21:40:14 WITA; 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.

sudo mysql_secure_installation

Lalu jawablah semua pertanyaan yang muncul dengan konfigurasi berikut.

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,

sudo mysql -u root -p

Isi password MariaDB untuk user root ketika diminta, dan setelah masuk jalankan perintah berikut.

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

Instalasi PHP

Sebelum melakukan instalasi PHP 7.4, jalankan perintah dibawah ini untuk mengaktifkan repository-nya.

sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php

Lakukan instalasi PHP 7.4 dengan perintah berikut.

sudo apt install -y 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

Cek versi PHP dengan perintah ini.

php --version
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

Aktifkan dengan perintah berikut.

ufw allow OpenSSH
ufw enable

Instalasi sertifikat SSL

Tindakan mengamankan website dengan sertifikat SSL, sangatlah disarankan. Untuk memperoleh sertifikat SSL dari Let’s Encrypt, harus menginstalasi acme.sh terlebih dulu, dengan menjalankan perintah berikut ini secara berurutan. Jalankan dengan menggunakan user root.

mkdir /etc/letsencrypt
curl https://get.acme.sh | sh

Tutup terminal yang sedang digunakan, kemudian buka kembali dan lakukan pengecekan versinya,

acme.sh --version
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. Pastikan domain Anda sudah diarahkan ke server ini.

acme.sh --issue --standalone --home /etc/letsencrypt -d contoh.com --keylength 2048
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.

-----BEGIN CERTIFICATE-----
MIIEjDCCA3SgAwIBAgISBN92sUegDEJB8biuLJRE52LRMA0GCSqGSIb3DQEBCwUA
...
FEZiTnEu5NFMfLAWZuKKYg==
-----END CERTIFICATE-----

Instalasi Nginx

Untuk cara instalasi Nginx, silahkan baca artikel Cara install Nginx di Ubuntu 18.04.

Selanjutnya, buat konfigurasi Matomo untuk Nginx, dengan menjalankan perintah berikut.

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.

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.

sudo ln -s /etc/nginx/sites-available/matomo.conf /etc/nginx/sites-enabled

Tambahkan Nginx ke firewall.

ufw allow "Nginx Full"
ufw reload

Lakukan pengecekan konfigurasi Nginx.

nginx -t
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.

systemctl reload nginx.service

Instalasi Matomo Web Analytics

Instalasi Matomo dilakukan dengan cara menjalankan perintah berikut ini secara berurutan.

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 Matomo dari browser. Tekan Next pada langkah 1 pengaturan Matomo.

Tahap 1 instalasi Matomo

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.

Tahap 2 instalasi Matomo

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

Tahap 3 instalasi Matomo

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.

Tahap 4 instalasi Matomo

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

Tahap 5 instalasi Matomo

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.

Tahap 6 instalasi Matomo

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

Tahap 7 instalasi Matomo

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

Tahap 8 instalasi Matomo

Selamat, proses instalasi Matomo selesai.

Gambar halaman login Matomo

Troubleshooting

Proxy masih berjalan

Apabila muncul pesan error seperti dibawah ini,

[Sat Aug  8 09:58:08 WITA 2020] LISTEN   0         128                       *:80                     *:*        users:(("apache2",pid=2207,fd=4),("apache2",pid=2206,fd=4),("apache2",pid=2205,fd=4),("apache2",pid=2204,fd=4),("apache2",pid=2202,fd=4),("apache2",pid=2170,fd=4))
[Sat Aug  8 09:58:08 WITA 2020] tcp port 80 is already used by (("apache2",pid=2207,fd=4),("apache2",pid=2206,fd=4),("apache2",pid=2205,fd=4),("apache2",pid=2204,fd=4),("apache2",pid=2202,fd=4),("apache2",pid=2170,fd=4))
[Sat Aug  8 09:58:08 WITA 2020] Please stop it first
[Sat Aug  8 09:58:08 WITA 2020] _on_before_issue.

Stop dulu service apache2 yang sedang berjalan, dengan cara berikut.

service apache2 stop

Port 80 terblokir

Apabila muncul pesan error seperti dibawah ini,

[Sat Aug  8 10:15:52 WITA 2020] Standalone mode.
[Sat Aug  8 10:15:52 WITA 2020] Single domain='contoh.com'
[Sat Aug  8 10:15:52 WITA 2020] Getting domain auth token for each domain
[Sat Aug  8 10:15:55 WITA 2020] Getting webroot for domain='contoh.com'
[Sat Aug  8 10:15:55 WITA 2020] Verifying: contoh.com
[Sat Aug  8 10:15:55 WITA 2020] Standalone mode server
[Sat Aug  8 10:16:00 WITA 2020] Pending
[Sat Aug  8 10:16:03 WITA 2020] Pending
[Sat Aug  8 10:16:05 WITA 2020] Pending
[Sat Aug  8 10:16:08 WITA 2020] contoh.com:Verify error:Fetching http://contoh.com/.well-known/acme-challenge/bYQS7C58B7onTpHPDj6gBi2YBmcOSY4zhvne51QQUz0: Timeout during connect (likely firewall problem)
[Sat Aug  8 10:16:08 WITA 2020] Please add '--debug' or '--log' to check more details.
[Sat Aug  8 10:16:08 WITA 2020] See: https://github.com/acmesh-official/acme.sh/wiki/How-to-debug-acme.sh

Pastikan firewall server tidak memblokir port 80, jika firewallnya menggunakan ufw jalankan perintah berikut secara berurutan.

ufw allow http
ufw allow https
ufw reload

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
0

Leave a Reply