Panduan Matomo Self-Hosted: Alternatif Google Analytics

Panduan Matomo Self-Hosted: Alternatif Google Analytics

Bitnesia Software Apr 23, 2026 84 EN

Keputusan website yang baik harus berlandaskan data agar tidak hanya mengandalkan intuisi. Analytics tool bekerja melalui tracking code untuk merekam perilaku pengunjung, sehingga pemilik website bisa memahami efektivitas konten dan mendeteksi perubahan tren secara akurat.

Google Analytics selama ini menjadi pilihan utama, namun model ini berisiko karena data dikelola sepenuhnya oleh pihak ketiga. Hal tersebut sering dianggap melanggar regulasi privasi seperti GDPR karena transfer data ke infrastruktur luar negeri.

Matomo hadir sebagai alternatif open-source yang memungkinkan Anda menguasai data sepenuhnya melalui instalasi di server pribadi. Panduan ini menjelaskan langkah pemasangan Matomo on-premise, mencakup konfigurasi Nginx, setup database MySQL, hingga pengaturan privasi yang sesuai regulasi.

Apa Itu Matomo?

Matomo adalah platform web analytics open-source yang sebelumnya dikenal sebagai Piwik. Dibangun menggunakan PHP dan MySQL, Matomo memberikan kontrol penuh atas data pengunjung website karena semua data disimpan di server milik Anda sendiri, bukan di infrastruktur pihak ketiga. Saat ini Matomo digunakan oleh lebih dari satu juta website di 190 negara, termasuk lembaga pemerintah, universitas, dan perusahaan Fortune 500.

Matomo tersedia dalam dua skema: Matomo Cloud (SaaS, dikelola tim InnoCraft) dan Matomo On-Premise (self-hosted, gratis, open-source di bawah lisensi GPLv3). Panduan ini fokus pada opsi kedua karena memberikan kepemilikan data sepenuhnya.

Keuntungan Self-Hosted dibanding Google Analytics

AspekGoogle Analytics 4Matomo On-Premise
Kepemilikan dataGoogle (pihak ketiga)100% milik Anda
Sampling dataAda (batas hit per hari)Tidak ada, data penuh
Kepatuhan GDPR/UU PDPPerlu konfigurasi tambahanBuilt-in, lebih mudah dibuktikan
BiayaGratis (data Anda adalah produknya)Gratis (biaya server sendiri)
Privasi pengunjungData dibagikan ke ekosistem GoogleData tidak keluar dari server Anda
Akses raw dataTerbatas melalui BigQueryLangsung via MySQL
Histori dataDibatasi (default 14 bulan)Tidak ada batas

Matomo memungkinkan organisasi membuktikan kepatuhan terhadap GDPR (General Data Protection Regulation) di Uni Eropa dan UU PDP (Undang-Undang Perlindungan Data Pribadi) di Indonesia karena tidak ada transfer data lintas negara ke pihak ketiga.

Prasyarat

Sebelum memulai instalasi, pastikan server Anda memenuhi persyaratan minimum berikut. Matomo 5.x (versi terbaru saat artikel ini ditulis: 5.9.0) membutuhkan:

  • Web Server: Nginx, Apache, LiteSpeed, atau IIS
  • PHP: versi 7.2.5 atau lebih baru; sangat disarankan PHP 8.2 atau 8.3
  • Database: MySQL 5.5+ atau MariaDB (disarankan MySQL 8+ atau MariaDB 10.6+)
  • PHP Extensions: pdo, pdo_mysql, mbstring, xml, gd, curl

Untuk keperluan personal atau situs kecil dengan traffic di bawah 100.000 pageview per bulan, satu server sudah cukup. Spesifikasi minimum yang direkomendasikan Matomo: 2 CPU, 2 GB RAM, 50 GB SSD.

Langkah Persiapan Server

Instalasi Dependensi PHP dan MariaDB

Langkah pertama adalah memastikan semua paket yang dibutuhkan sudah terpasang. Perintah berikut berlaku untuk Ubuntu:  

sudo apt update && sudo apt upgrade -y

# Tambahkan repository Ondřej:
sudo add-apt-repository ppa:ondrej/php -y

# Instal Nginx, PHP 8.3, dan ekstensi yang diperlukan
sudo apt install -y nginx php8.3 php8.3-fpm php8.3-mysql php8.3-xml \
  php8.3-mbstring php8.3-gd php8.3-curl php8.3-cli php8.3-zip

# Instal MySQL Server
sudo apt install -y mariadb-server

# Aktifkan dan jalankan service
sudo systemctl enable --now nginx php8.3-fpm mariadb

Setup Database: Membuat Database dan User MariaDB

Matomo membutuhkan database dan user MariaDB tersendiri. Jangan gunakan user root untuk keperluan aplikasi karena melanggar prinsip least privilege.

sudo mariadb

Setelah masuk ke MariaDB prompt, jalankan perintah berikut secara berurutan:

-- Buat database khusus Matomo
CREATE DATABASE matomo_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Buat user dengan password yang kuat
CREATE USER 'matomo_user'@'localhost' IDENTIFIED BY 'GantiDenganPasswordKuat!';

-- Berikan semua hak yang dibutuhkan Matomo
GRANT ALL PRIVILEGES ON matomo_db.* TO 'matomo_user'@'localhost';

-- Terapkan perubahan privileges
FLUSH PRIVILEGES;

EXIT;

Konfigurasi Nginx Virtual Host

Buat file konfigurasi Nginx untuk domain Matomo. Contoh di bawah menggunakan analytics.example.com sebagai domain, sesuaikan dengan domain Anda.

sudo nano /etc/nginx/sites-available/analytics.example.com.conf

Isi dengan konfigurasi berikut:

server {
  listen 80;
  server_name analytics.example.com;

  root /var/www/matomo;
  index index.php;

  # Security headers
  add_header X-Frame-Options "SAMEORIGIN" always;
  add_header X-Content-Type-Options "nosniff" always;
  add_header Referrer-Policy "no-referrer-when-downgrade" always;

  # Logging
  access_log /var/log/nginx/analytics.example.com_access.log;
  error_log  /var/log/nginx/analytics.example.com_error.log;

  location / {
      try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ \.php$ {
      include         snippets/fastcgi-php.conf;
      fastcgi_pass    unix:/run/php/php8.3-fpm.sock;
      fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include         fastcgi_params;
  }

  # Blokir akses ke file sensitif
  location ~ /\. {
      deny all;
  }
  location ~* \.(log|conf|ini|sh)$ {
      deny all;
  }

  # Optimalkan penyajian aset statis
  location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff2)$ {
      expires 1y;
      add_header Cache-Control "public, immutable";
  }
}

Aktifkan konfigurasi dan uji sintaks Nginx:

# Buat symlink untuk mengaktifkan site
sudo ln -s /etc/nginx/sites-available/analytics.example.com.conf /etc/nginx/sites-enabled/

# Uji sintaks konfigurasi
sudo nginx -t

# Reload Nginx jika tidak ada error
sudo systemctl reload nginx

Memasang SSL Certificate dengan Certbot

Matomo harus diakses melalui HTTPS agar data tracking pengunjung tidak dapat diintercept. Gunakan Certbot untuk mendapatkan sertifikat SSL gratis dari Let's Encrypt:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --non-interactive \
-m [email protected] \
--agree-tos \
--no-eff-email \
--nginx -d analytics.example.com \
--redirect

Setelah sertifikat terbit, Certbot akan otomatis memperbarui konfigurasi Nginx dan mengatur renewal otomatis setiap 90 hari.

Proses Instalasi On-Premise

Download dan Ekstrak Paket Matomo

Unduh versi terbaru Matomo langsung dari server menggunakan wget, kemudian ekstrak ke direktori web root:

# Pindah ke direktori web root
cd /var/www

# Unduh paket Matomo terbaru
sudo wget https://builds.matomo.org/matomo.zip -O matomo.zip

# Ekstrak arsip
sudo unzip matomo.zip

# Hapus file zip setelah selesai
sudo rm matomo.zip

Konfigurasi Izin Folder

Folder instalasi Matomo membutuhkan pengaturan permissions yang tepat agar installer dapat menulis file konfigurasi, dan agar PHP-FPM dapat mengakses file-file yang diperlukan.

# Atur kepemilikan ke user Nginx (www-data di Ubuntu)
sudo chown -R www-data:www-data /var/www/matomo

# Atur permissions direktori dan file
sudo find /var/www/matomo -type d -exec chmod 755 {} \;
sudo find /var/www/matomo -type f -exec chmod 644 {} \;

Memulai Instalasi Melalui Browser

Setelah file terunggah dan Nginx sudah dikonfigurasi dengan benar, buka browser dan akses URL Matomo Anda, misalnya https://analytics.example.com. Installer Matomo akan muncul secara otomatis.

Welcome Screen

Halaman pertama adalah layar selamat datang. Klik Next » untuk memulai proses instalasi langkah demi langkah.

System Check

Matomo akan menjalankan pemeriksaan otomatis terhadap seluruh dependensi server. Setiap item yang lolos pemeriksaan ditandai dengan indikator hijau. Jika ada item yang gagal (ditandai merah atau kuning), Matomo akan menampilkan panduan cara memperbaikinya.

Modul PHP yang paling sering menjadi penyebab kegagalan System Check adalah php-gd dan php-mbstring. Pastikan keduanya terpasang:

sudo apt install -y php8.3-gd php8.3-mbstring
sudo systemctl restart php8.3-fpm

Setelah semua item lolos, klik Next » untuk melanjutkan.

Database Setup

Masukkan kredensial database yang sudah dibuat sebelumnya pada formulir yang tersedia:

FieldNilai
Database Serverlocalhost
Loginmatomo_user
PasswordPassword yang Anda buat tadi
Database Namematomo_db
Table Prefixmatomo_ (default, bisa diubah)

Matomo akan otomatis membuat semua tabel yang dibutuhkan. Klik Next » setelah proses pembuatan tabel berhasil.

Super User Creation

Buat akun administrator utama (Super User). Akun ini memiliki akses penuh ke semua pengaturan Matomo, termasuk manajemen user, penambahan website, dan konfigurasi plugin. Gunakan password yang kuat dan simpan di password manager karena tidak ada mekanisme reset password otomatis pada instalasi on-premise.

Super User Login    : admin_anda
Super User Password : [min. 8 karakter, kombinasi huruf, angka, simbol]
Super User Email    : [email protected]

Setup Website Pertama

Tambahkan situs pertama yang ingin dilacak. Masukkan nama website dan URL-nya. Pastikan URL menggunakan format yang tepat termasuk protokol (https://) agar tracking berjalan akurat. Setelah disimpan, Matomo akan menghasilkan Site ID yang akan digunakan dalam kode tracking.

Memasang Tracking Code

Metode Manual: Copy-Paste JavaScript

Setelah instalasi selesai, Matomo akan menampilkan JavaScript Tracking Tag yang perlu dipasang di setiap halaman website yang ingin dilacak. Letakkan kode ini tepat sebelum tag penutup </head>:

<!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//analytics.example.com/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '1']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->

Ganti analytics.example.com dengan domain Matomo Anda, dan angka 1 pada setSiteId dengan Site ID yang diberikan Matomo saat setup website.

Metode Plugin: Integrasi CMS

Untuk pengguna CMS, Matomo menyediakan integrasi resmi yang tidak memerlukan pengeditan kode secara manual:

Verifikasi: Mengecek Data Masuk ke Dashboard

Setelah tracking code terpasang, buka dashboard Matomo dan navigasi ke Dashboard → Real-time. Akses website Anda dari browser (gunakan mode normal, bukan Incognito, dan nonaktifkan ad-blocker sementara untuk keperluan verifikasi awal). Kunjungan Anda harus muncul di laporan real-time dalam hitungan detik.

Cara lain untuk memverifikasi adalah memeriksa network request di browser DevTools. Buka tab Network, muat ulang halaman, lalu cari request ke matomo.php. Jika mendapat response 204 No Content, tracking berjalan dengan benar.

# Di Nginx website utama (bukan server Matomo)
location = /js/analytics.js {
    proxy_pass https://analytics.example.com/matomo.js;
    proxy_set_header Host analytics.example.com;
}

location /tracking {
    proxy_pass https://analytics.example.com/matomo.php;
    proxy_set_header Host analytics.example.com;
}

Kemudian sesuaikan URL di tracking code agar mengarah ke endpoint proxy tersebut.

Panduan Penggunaan Dasar Dashboard

Dashboard Matomo menyajikan data analitik dalam beberapa laporan utama yang bisa langsung digunakan tanpa konfigurasi tambahan.

Real-time Visitor Map

Fitur Visitor Map (menu Visitors → Real-time Map) menampilkan lokasi geografis pengunjung yang sedang aktif di website dalam bentuk peta dunia. Setiap titik pada peta merepresentasikan satu kunjungan aktif. Fitur ini berguna untuk memantau lonjakan traffic secara langsung, misalnya saat artikel viral atau saat kampanye iklan berjalan.

Acquisition Report: Sumber Traffic

Laporan Acquisition (menu Acquisition → All Channels) menunjukkan dari mana pengunjung berasal. Matomo mengkategorikan sumber traffic ke dalam:

  • Search Engines: Pengunjung dari Google, Bing, DuckDuckGo, dan mesin pencari lainnya. Tersedia breakdown per keyword (meski Google membatasi data keyword).
  • Social Networks: Kunjungan dari platform media sosial seperti Facebook, Twitter/X, LinkedIn, dan lainnya.
  • Direct: Pengunjung yang mengetikkan URL langsung atau berasal dari bookmark.
  • Referral: Kunjungan dari tautan di website lain.
  • Campaigns: Traffic dari URL yang menggunakan parameter UTM atau Matomo Campaign Tracking.

Behavior Report: Perilaku Pengunjung

Laporan Behavior (menu Behavior → Pages) menampilkan halaman mana yang paling sering dikunjungi, berapa lama pengunjung tinggal, dan dari halaman mana mereka meninggalkan situs (exit pages). Metrik penting yang perlu diperhatikan:

  • Pageviews: Jumlah total tampilan halaman.
  • Unique Pageviews: Jumlah sesi yang memuat halaman tersebut (satu sesi bisa memuat halaman yang sama lebih dari sekali).
  • Avg. Time on Page: Rata-rata waktu yang dihabiskan pengunjung di halaman tersebut.
  • Bounce Rate: Persentase pengunjung yang langsung pergi setelah membuka satu halaman.
  • Exit Rate: Persentase pengunjung yang meninggalkan situs dari halaman tersebut.

Visitor Profile: Profil Demografis

Menu Visitors menyediakan sub-laporan untuk memahami profil pengunjung:

  • Devices: Persentase pengunjung dari desktop, mobile, dan tablet.
  • Browsers & OS: Browser dan sistem operasi yang digunakan pengunjung.
  • Locations: Negara, wilayah, dan kota asal pengunjung (membutuhkan setup GeoIP).
  • Visitor Log: Log per kunjungan individual yang menampilkan setiap halaman yang dikunjungi dalam satu sesi.

Goals: Pelacakan Konversi

Matomo mendukung pelacakan konversi melalui fitur Goals (menu Goals → Manage Goals). Goal bisa dikonfigurasi berdasarkan: kunjungan ke URL tertentu (misalnya halaman thank you setelah form submission), jumlah halaman yang dikunjungi per sesi, atau durasi kunjungan. Fitur ini sangat berguna untuk mengukur efektivitas landing page atau kampanye marketing.

Tips Optimasi & Privasi

Anonymize IP: Anonimitas Data Pengunjung

Salah satu fitur privasi terpenting Matomo adalah IP Anonymization. Fitur ini memotong sebagian oktet IP address sebelum disimpan ke database, sehingga identitas pengunjung tidak dapat dilacak secara langsung dari IP.

Aktifkan melalui: Administration → Privacy → Anonymize Data. Pilih Anonymize visitors' IP addresses dan pilih metode:

  • Mask 1 byte: Contoh: 192.168.1.x — tingkat anonimitas rendah.
  • Mask 2 bytes: Contoh: 192.168.x.x — direkomendasikan untuk kepatuhan GDPR.
  • Mask 3 bytes: Contoh: 192.x.x.x — anonimitas sangat tinggi.

Untuk kepatuhan GDPR dan UU PDP, pilih setidaknya Mask 2 bytes. Fitur ini bisa dikombinasikan dengan Do not track user when they have opted-out untuk menghormati preferensi pengunjung.

Geolocation: Setup DBIP atau GeoIP2

Secara default Matomo menggunakan metode geolocation sederhana berbasis database PHP yang akurasinya terbatas pada tingkat negara. Untuk akurasi hingga tingkat kota, install database DBIP atau MaxMind GeoIP2:

# Buat direktori untuk database GeoIP
sudo mkdir -p /var/www/matomo/misc

# Unduh database DBIP (gratis, tersedia bulanan di dbip.com)
# Atau gunakan MaxMind GeoLite2 (perlu registrasi gratis di maxmind.com)
# Contoh mengunduh GeoLite2-City.mmdb dari MaxMind:

cd /var/www/matomo/misc
sudo wget -O GeoLite2-City.tar.gz \
  "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-City&license_key=YOUR_KEY&suffix=tar.gz"
sudo tar -xzf GeoLite2-City.tar.gz --wildcards --no-anchored '*.mmdb' --strip-components 1
sudo chown www-data:www-data GeoLite2-City.mmdb
sudo rm GeoLite2-City.tar.gz

Setelah file .mmdb tersedia, aktifkan di Matomo: Administration → System → Geolocation, lalu pilih GeoIP 2 (Php) atau GeoIP 2 (PECL) jika ekstensi PHP sudah terpasang.

Setup Cron untuk Auto-Archiving

Untuk situs dengan traffic lebih dari beberapa ratus kunjungan per hari, sangat disarankan untuk mengonfigurasi cron job yang memproses laporan secara berkala. Tanpa ini, Matomo akan memproses ulang laporan setiap kali dashboard dibuka, yang memperlambat loading dan meningkatkan beban database.

# Buka crontab untuk user www-data
sudo crontab -u www-data -e

Tambahkan baris berikut untuk menjalankan archiving setiap 5 menit:

*/5 * * * * /usr/bin/php /var/www/matomo/console core:archive --url=https://analytics.example.com/ > /dev/null 2>&1

Backup Database Secara Rutin

Data analytics yang terkumpul selama berbulan-bulan atau bertahun-tahun tidak ternilai harganya untuk analisis jangka panjang. Atur backup otomatis database Matomo menggunakan script berikut:

#!/bin/bash
# /usr/local/bin/backup-matomo.sh

BACKUP_DIR="/var/backups/matomo"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="matomo_db"
DB_USER="matomo_user"
DB_PASS="GantiDenganPasswordKuat!"

mkdir -p "$BACKUP_DIR"

# Dump database dan kompres
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$BACKUP_DIR/matomo_${DATE}.sql.gz"

# Hapus backup yang lebih dari 30 hari
find "$BACKUP_DIR" -name "matomo_*.sql.gz" -mtime +30 -delete

echo "Backup selesai: matomo_${DATE}.sql.gz"
# Beri izin eksekusi dan tambahkan ke cron
sudo chmod +x /usr/local/bin/backup-matomo.sh

# Jalankan backup setiap hari pukul 02:00
(sudo crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/backup-matomo.sh") | sudo crontab -

Update Matomo ke Versi Terbaru

Matomo merilis pembaruan secara rutin yang mencakup perbaikan keamanan dan fitur baru. Proses update bisa dilakukan melalui dashboard Matomo (jika izin folder mengizinkan), atau secara manual melalui command line:

# Unduh versi terbaru
cd /var/www
sudo wget https://builds.matomo.org/matomo.zip -O matomo_new.zip

# Ekstrak ke direktori sementara
sudo unzip matomo_new.zip -d matomo_update/

# Salin file baru ke direktori Matomo (timpa file lama, kecuali config/)
sudo rsync -av --exclude='config/config.ini.php' matomo_update/matomo/ matomo/

# Perbaiki kepemilikan
sudo chown -R www-data:www-data /var/www/matomo

# Jalankan update database via CLI
sudo -u www-data php /var/www/matomo/console core:update

# Bersihkan direktori sementara
sudo rm -rf matomo_update/ matomo_new.zip

Mengamankan Direktori Matomo

Setelah instalasi berhasil, perketat permissions pada direktori konfigurasi:

# Buat config/ hanya bisa dibaca oleh www-data
sudo chmod 750 /var/www/matomo/config/
sudo chmod 640 /var/www/matomo/config/config.ini.php

# Dua direktori yang masih perlu bisa ditulis oleh PHP:
sudo chmod -R 755 /var/www/matomo/tmp/
sudo chmod 644 /var/www/matomo/js/piwik.js /var/www/matomo/js/matomo.js

File config/config.ini.php berisi kredensial database dalam bentuk plaintext. Pastikan direktori ini tidak dapat diakses langsung melalui web browser. Konfigurasi Nginx yang sudah dibuat sebelumnya sudah menangani ini melalui blok location ~ /\..

Kesimpulan

Matomo On-Premise adalah pilihan tepat bagi siapa pun yang membutuhkan platform web analytics yang serius tanpa mengorbankan kepemilikan data dan privasi pengunjung. Proses instalasi memang membutuhkan keahlian dasar administrasi Linux, tetapi setelah berjalan, Matomo memberikan data yang lengkap, tanpa sampling, dan tanpa batasan histori.

Kepatuhan terhadap regulasi seperti GDPR dan UU PDP Indonesia jauh lebih mudah dibuktikan ketika data sepenuhnya berada di infrastruktur sendiri dan tidak dikirimkan ke server pihak ketiga. Fitur bawaan seperti IP anonymization, consent management, dan data retention settings menjadikan Matomo pilihan andal untuk organisasi yang beroperasi di bawah regulasi ketat.

Tutorial ini membantu? Traktir kami segelas kopi agar kami tetap semangat menulis panduan open source lainnya!

Traktir Kopi

Related Posts