Analitik Web Self-Hosted untuk VPS Kecil
Bandingkan Plausible, Umami, Matomo, GoatCounter, Medama, Rybbit, dan GoAccess berdasarkan RAM, database, pertumbuhan disk, reverse proxy, serta celah ad blocker.
Alat analitik web self-hosted apa yang sebaiknya dijalankan pada VPS?
Analitik web self-hosted terbagi menjadi dua keluarga, dan memilih keluarga yang salah menimbulkan biaya lebih besar daripada memilih produk yang salah. Salah satu keluarga menjalankan skrip kecil di browser pengunjung lalu menyimpan data yang dilaporkan skrip tersebut. Keluarga lainnya membaca access log yang sudah ditulis oleh web server Anda. Semua hal setelah itu, termasuk database dan memori yang dibutuhkan, bergantung pada pilihan tersebut.
Jawaban singkat untuk server kecil. GoatCounter dan Medama dapat berjalan pada RAM 1 GB karena masing-masing hanya menggunakan satu proses dan satu file. Umami menambahkan container Postgres dan menyediakan dashboard yang dapat dibaca oleh pengguna nonteknis. Plausible Community Edition dan Rybbit sama-sama menjalankan ClickHouse, jadi siapkan RAM 2 GB atau lebih. Matomo adalah produk lengkap dan memerlukan server yang ukurannya disesuaikan dengan trafik Anda. GoAccess sama sekali tidak menambahkan apa pun ke halaman karena membaca log yang sudah tersedia.
Tag skrip atau log server: hal yang dapat dilihat masing-masing
Tag skrip mengukur browser. Halaman dimuat, skrip dijalankan, lalu skrip mengirim satu request ke collector Anda. Apa pun yang memutus rangkaian tersebut tidak terlihat oleh Anda: JavaScript dinonaktifkan, daftar filter memblokir request, request ke collector gagal, atau crawler tidak pernah menjalankan skrip.
Parser log mengukur request. Web server menulis satu baris untuk setiap request, terlepas dari apakah Anda memasang apa pun. Jadi, datanya sudah tersimpan di disk. Parser ini melihat setiap crawler dan setiap akses ke file yang tidak memuat tag skrip. Parser ini tidak dapat melihat apa yang terjadi di dalam browser. Parser ini juga tidak dapat melihat halaman yang disajikan dari cache browser atau dari CDN (content delivery network) di depan server Anda, karena request tersebut tidak pernah mencapai server Anda.
Kedua angka tersebut tidak akan sama, dan tidak ada yang salah. Matomo dapat melakukan keduanya. Matomo mendokumentasikan data yang tidak tersedia pada log import dibandingkan dengan JavaScript tracker-nya: resolusi layar dan judul halaman, event, content tracking, heatmap, session recording, dan analitik formulir. Daftar tersebut menunjukkan konsekuensi penghitungan request, bukan browser.
Trafik bot adalah penyebab lain dari perbedaan tersebut. Penghitungan berbasis log mencakup crawler kecuali Anda memfilternya. Pada situs biasa, proporsi crawler cukup besar untuk mengubah kesimpulan Anda. GoAccess dan log import Matomo sama-sama memfilter bot yang dikenal. Keduanya tidak dapat memfilter crawler yang memalsukan user agent. Karena itu, penghitungan berbasis log sebaiknya dipadukan dengan memblokir crawler AI di server, lalu baca log setelah pemblokiran diterapkan, bukan sebelumnya.
GoAccess: analitik dari log yang sudah tersedia
Instal GoAccess dari repositori Debian dan Ubuntu milik proyek tersebut. Paket dari distribusi biasanya tertinggal dari rilis terbaru.
wget -O - https://deb.goaccess.io/gnugpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/goaccess.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/goaccess.gpg arch=$(dpkg --print-architecture)] https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/goaccess.list
sudo apt-get update
sudo apt-get install goaccessKemudian arahkan GoAccess ke log dan tulis laporan statis.
goaccess /var/log/nginx/access.log -o ~/report.html --log-format=COMBINEDPerintah tersebut gagal dengan Permission denied jika dijalankan oleh pengguna biasa, karena di Ubuntu log nginx dimiliki oleh root dengan grup adm. Tambahkan akun Anda ke grup tersebut dengan sudo usermod -aG adm $USER, lalu keluar dan masuk kembali karena keanggotaan grup dibaca saat login. Jalankan id dan pastikan adm muncul dalam daftar sebelum mencoba lagi.
Laporan yang hanya membaca log aktif mencakup data yang belum dipindahkan oleh logrotate. Permintaan kemarin berada di access.log.1, sedangkan log yang lebih lama telah dikompresi. Karena itu, tampilan mingguan juga harus membaca file yang sudah dirotasi.
zcat /var/log/nginx/access.log.*.gz | goaccess - --log-format=COMBINED -o ~/last-week.htmlTersedia pula mode live, --real-time-html, yang memperbarui halaman melalui WebSocket. Mode ini memerlukan port kedua dan aturan proxy tersendiri. Untuk sebagian besar situs, laporan per jam yang ditulis oleh cron sudah memadai dan lebih sedikit komponen yang perlu diamankan.
GoatCounter: satu biner Go dan satu file SQLite
GoatCounter dirilis sebagai biner yang dikompilasi secara statis, sehingga tidak ada runtime yang perlu diinstal. Ambil build dari halaman rilis lalu jalankan, atau gunakan image.
docker run -p 8080:8080 -v goatcounter-data:/home/goatcounter/goatcounter-data arp242/goatcounterJika dijalankan sebagai biner, goatcounter serve mendengarkan pada port 8080 dan membuat database SQLite di ./goatcounter-data/db.sqlite3. Buat situs pertama dari command line, bukan melalui wizard web, jika instance sudah berada di belakang proxy.
goatcounter db create site -vhost=stats.example.com -user.email=me@example.comGoatCounter dapat menangani sertifikatnya sendiri dengan goatcounter serve -listen=:443 -tls=tls,rdr,acme menggunakan ACME (automatic certificate management environment). Ini berguna pada server yang tidak menjalankan layanan lain. Jika nginx atau Caddy sudah menggunakan port 443, biarkan GoatCounter berjalan pada port 8080 lalu teruskan trafik ke sana melalui proxy. Menurut angka dari proyek tersebut, skrip pelacakan berukuran sekitar 3.5K. Tersedia juga tracking pixel untuk halaman yang tidak memuat JavaScript. Jika SQLite menjadi batasan pada situs yang sibuk, biner yang sama dapat menggunakan Postgres dengan goatcounter serve -db 'postgresql+dbname=goatcounter'. Pencadangan cukup dilakukan dengan menyalin file. Inilah alasan utama memilih bentuk alat seperti ini.
Medama: satu container yang mengklaim penggunaan 256 MB
Medama adalah opsi binary tunggal terbaru di sini. Secara desain, Medama tidak menggunakan cookie, dan proyek ini menyatakan bahwa trackernya berukuran kurang dari 1 KB serta situs kecil dapat berjalan pada mesin virtual dengan memori 256 MB. Angka tersebut merupakan klaim yang dipublikasikan proyek, bukan hasil pengukuran untuk panduan ini.
docker volume create medama-data
docker run -d -p 127.0.0.1:8080:8080 -v medama-data:/app/data ghcr.io/medama-io/medama:latestPerintah resmi memublikasikan port sebagai 8080:8080. Prefix loopback di atas digunakan secara sengaja, dan bagian reverse proxy menjelaskan alasannya. Login pertama dilakukan dengan admin menggunakan password CHANGE_ME_ON_FIRST_LOGIN, dan nama password tersebut adalah petunjuknya.
Ada satu mode kegagalan yang perlu diperhatikan. Login hanya berfungsi melalui HTTPS atau pada localhost. Jadi, jika Anda menyiapkan proxy sebelum sertifikat, formulir akan menolak password yang benar dan alasannya tidak ditampilkan. Selesaikan penyiapan TLS (transport layer security) terlebih dahulu, lalu lakukan login.
Umami: PostgreSQL dan dashboard yang mudah dikenali
git clone https://github.com/umami-software/umami.git
cd umami
docker compose up -dPerintah tersebut menjalankan aplikasi pada port 3000 dengan container PostgreSQL di sampingnya. Dokumentasi menetapkan PostgreSQL v12.14 sebagai versi minimum, serta Node.js 18.18 atau yang lebih baru jika Anda melakukan build dari source. Tersedia image siap pakai, docker.umami.is/umami-software/umami:postgresql-latest, yang memerlukan DATABASE_URL agar menunjuk ke database yang sudah Anda jalankan.
Login pertama adalah admin dengan password umami. Ubah password tersebut sebelum mengarahkan DNS ke server, karena instance dapat diakses dari Internet segera setelah record berhasil di-resolve dan proxy merespons. Untuk detail Compose, file environment, dan kebijakan restart, lihat stack Docker Compose pada VPS daripada menyalin stack yang belum Anda pahami.
Jejak resource-nya terdiri atas satu proses Node dan Postgres. Ini lebih berat daripada satu binary, tetapi jauh lebih ringan daripada aplikasi apa pun yang menjalankan ClickHouse.
Plausible Community Edition: ClickHouse menetapkan batas minimum RAM
git clone -b v3.2.1 --single-branch https://github.com/plausible/community-edition plausible-ce
cd plausible-ce
touch .env
echo "BASE_URL=https://stats.example.com" >> .env
echo "SECRET_KEY_BASE=$(openssl rand -base64 48)" >> .env
docker compose up -dVersi v3.2.1 adalah versi terbaru per Agustus 2026, dan perintah clone sengaja menguncinya pada versi tersebut. Stack ini terdiri atas tiga bagian: aplikasi, Postgres untuk akun dan pengaturan, serta ClickHouse untuk data peristiwa. SECRET_KEY_BASE harus berupa string dengan panjang minimal 64 byte. Nilai tersebut dihasilkan oleh pemanggilan openssl.
Persyaratan resmi Plausible meminta RAM minimal 2 GB agar ClickHouse dan aplikasi tidak dihentikan oleh out of memory killer, serta CPU yang mendukung SSE 4.2 atau NEON, yang diperlukan ClickHouse. Persyaratan kedua ini perlu diperiksa sebelum membeli VPS. Persyaratan ini juga menjadi salah satu perbedaan praktis dalam memilih VPS ARM atau x86. ClickHouse juga akan menggunakan memori sebanyak yang dianggap tersedia. Karena itu, pada server bersama, tetapkan batas maksimum seperti yang dijelaskan dalam membatasi memori container di Compose.
BASE_URL harus sama persis dengan URL publik. Jika tidak, Anda dapat login, tetapi aplikasi mengarahkan Anda ke host yang salah. Cookie sesi kemudian ditulis untuk domain yang tidak digunakan browser Anda. Akibatnya, Anda kembali ke formulir login tanpa pesan error.
File compose yang disertakan tidak memublikasikan port karena konfigurasi tersebut mengasumsikan adanya proxy di depannya. Tambahkan override yang memublikasikan port aplikasi default hanya pada loopback.
cat > compose.override.yml << EOF
services:
plausible:
ports:
- 127.0.0.1:8000:8000
EOFMatomo: produk lengkap dan server yang dibutuhkannya
Matomo berjalan pada PHP dengan MySQL atau MariaDB. Artinya, Matomo lebih sesuai dengan stack web klasik daripada stack container. Matomo juga satu-satunya alat di sini yang menerbitkan panduan perangkat keras berdasarkan volume trafik.
The data behind this chart
[
{
"label": "100K/month",
"cpu_cores": 2,
"ram_gb": 2,
"disk_gb": 50
},
{
"label": "1M/month",
"cpu_cores": 4,
"ram_gb": 8,
"disk_gb": 250
},
{
"label": "10M/month",
"cpu_cores": 8,
"ram_gb": 16,
"disk_gb": 400
}
]Itulah spesifikasi minimum yang diterbitkan Matomo per August 2026, bukan hasil pengukuran untuk panduan ini. Hingga 100,000 pageview per bulan, Matomo membutuhkan 2 core CPU, 2 GB RAM, dan 50 GB SSD. Satu server dapat menjalankan aplikasi dan database. Pada 1M/month, kebutuhan tersebut menjadi 8 GB RAM dan 250 GB disk. Pada 10M/month, Matomo merekomendasikan dua server. Baris terakhir menunjukkan server database: 16 GB RAM dan 400 GB disk. Bandingkan angka disk tersebut dengan opsi biner tunggal, yang menyimpan seluruh dataset dalam satu file SQLite.
Proses archiving sering mengejutkan pengguna. Secara default, Matomo membuat laporan saat seseorang membuka dashboard. Akibatnya, dashboard menjadi semakin lambat ketika data bertambah dan pada akhirnya mengalami timeout. Perbaikan yang didokumentasikan adalah menonaktifkan archiving yang dipicu browser pada pengaturan umum, lalu menjalankan archiver dari cron sebagai user yang memiliki file Matomo, dari direktori Matomo.
php console core:archive --url=https://analytics.example.comMatomo juga menyimpan tabel log mentah di samping tabel laporan yang telah diproses. Matomo dapat menghapus data mentah lama dan laporan lama sesuai jadwal. Aktifkan fitur tersebut saat instalasi, bukan setelah disk penuh. Matomo juga dapat mengimpor log akses server. Dengan demikian, Matomo adalah satu-satunya produk di sini yang mencakup kedua kelompok tersebut sekaligus.
Rybbit dan stack yang lebih baru
git clone https://github.com/rybbit-io/rybbit.git
cd rybbit
chmod +x *.sh
./setup.sh your.domain.nameRybbit adalah proyek baru dengan dashboard modern. Skrip penyiapan menulis file environment dan menjalankan stack menggunakan Docker Compose. Rybbit menjalankan ClickHouse dan menyertakan Caddy sebagai web server sendiri. Caddy menggunakan port 443 dan meminta sertifikat untuk domain yang Anda masukkan. Pada server yang port 443-nya sudah digunakan oleh nginx, skrip tersebut tidak dapat melakukan bind. Gunakan jalur Compose manual dari proyek itu, lalu letakkan Rybbit di belakang proxy yang sudah ada. Dokumentasi menyebutkan kebutuhan RAM minimal 2 GB, pengujian pada Ubuntu 24 LTS, serta ARMv8.2-A atau yang lebih baru pada ARM karena ClickHouse.
Catatan penting untuk proyek yang masih baru: fitur dirilis dengan cepat, begitu pula perubahan yang dapat menyebabkan inkompatibilitas. Tetapkan tag, baca catatan rilis sebelum melakukan pull, dan buat cadangan database terlebih dahulu.
Retensi dan pertumbuhan disk: ukur sendiri pada server Anda
Pertumbuhan disk bergantung pada data yang disimpan oleh alat untuk setiap event. GoatCounter mengagregasikan hit ke dalam counter, sehingga ukuran filenya lebih banyak bertambah berdasarkan halaman dan hari yang berbeda daripada volume mentah. Umami dan Matomo menyimpan baris untuk setiap event, sedangkan Matomo juga menyimpan tabel laporan yang telah diproses di atas data mentah. ClickHouse menyimpan event dalam kolom dan mengompresnya secara agresif. Karena itu, Plausible mampu menangani volume yang dapat membebani penyimpanan berbasis baris.
Panduan ini tidak mencantumkan angka megabyte per satu juta pageview karena angka tersebut tidak diukur berdasarkan trafik Anda. Lakukan pengukuran sendiri. Sesuaikan nama service dan user dengan Compose file Anda.
du -h goatcounter-data/db.sqlite3
docker compose exec db psql -U umami -d umami -c "SELECT pg_size_pretty(pg_database_size('umami'));"
docker compose exec plausible_events_db clickhouse-client -q "SELECT formatReadableSize(sum(bytes_on_disk)) FROM system.parts WHERE active"Catat angkanya, tunggu selama seminggu, lalu catat kembali dan bagi selisihnya dengan jumlah pageview yang dilaporkan dashboard untuk minggu tersebut. Angka itu mencerminkan situs dan pemfilteran bot Anda, sehingga lebih berguna daripada rata-rata yang dipublikasikan. Selanjutnya, tetapkan batas retensi saat angkanya masih kecil. Disk penuh akan menghentikan semua service pada VPS, bukan hanya analytics. Ini menjadi alasan terkuat untuk menyimpan volume database di lokasi yang akan diperingatkan oleh df -h. Risiko tersebut perlu lebih diperhatikan pada server yang sudah menyimpan sesuatu yang berukuran besar, karena server foto yang di-host sendiri akan menghabiskan disk jauh sebelum database analytics mendekati batasnya.
Cara kerjanya di balik reverse proxy pada subdomain
Tempatkan collector pada subdomain situs yang diukurnya, misalnya stats.example.com. Dengan demikian, permintaan collector dianggap sebagai first-party sehingga tidak terpengaruh oleh aturan browser yang memblokir permintaan third-party.
Bind aplikasi ke loopback saat Anda memublikasikan port container. Docker menulis aturan firewall-nya sendiri sebelum ufw, sehingga container yang dipublikasikan sebagai -p 3000:3000 tetap dapat diakses dari Internet meskipun ufw status menyatakan bahwa port tersebut ditolak. Uji dari mesin lain dengan curl http://SERVER_IP:3000 untuk mengakses dashboard. Jika dipublikasikan sebagai -p 127.0.0.1:3000:3000, pengujian yang sama menghasilkan Connection refused dan hanya proxy yang dapat mengaksesnya.
server {
listen 443 ssl;
server_name stats.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Header penerusan wajib digunakan di sini. Tanpa X-Forwarded-For, setiap kunjungan terlihat berasal dari 127.0.0.1, sehingga laporan negara kosong dan jumlah pengunjung unik cenderung menjadi satu. Setiap project menentukan header yang dipercaya dan pengaturan yang digunakan. Periksa dokumentasi proxy project tersebut satu kali, bukan membuat asumsi. Caddy menetapkan header tersebut secara otomatis, dan Caddyfile untuk kebutuhan yang sama hanya terdiri atas dua baris.
stats.example.com {
reverse_proxy 127.0.0.1:3000
}Jika Anda belum memilih proxy, perbandingan nginx, Caddy, dan Traefik menjelaskan proxy yang sesuai untuk satu server dengan beberapa subdomain.
Apakah Anda masih memerlukan banner cookie jika melakukan self-hosting?
Self-hosting mengubah pihak yang menyimpan data. Namun, hal itu tidak mengubah ketentuan hukum mengenai data tersebut. Bedakan dua aturan berikut. Aturan persetujuan ePrivacy mengatur penyimpanan atau pembacaan apa pun pada perangkat pengunjung. Jadi, alat yang tidak menetapkan cookie dan tidak menulis apa pun ke penyimpanan lokal tidak termasuk dalam persyaratan khusus tersebut. GDPR mengatur pemrosesan data pribadi. Alamat IP termasuk data pribadi. Karena itu, Anda tetap memerlukan dasar hukum, batas waktu penyimpanan, dan jawaban ketika seseorang menanyakan data apa yang Anda simpan tentang dirinya.
Plausible, Umami, GoatCounter, dan Medama tidak menetapkan cookie secara default. Data yang diturunkan oleh masing-masing alat berbeda menurut proyek dan dapat berubah antarversi. Karena itu, baca dokumentasi privasi proyek tersebut, bukan ringkasan. Matomo menyediakan anonimisasi IP dan endpoint opt-out yang harus Anda aktifkan melalui antarmuka admin.
Regulator di berbagai negara dapat mengambil kesimpulan yang berbeda. Sebagai contoh, CNIL di Prancis menerbitkan kondisi yang memungkinkan pengukuran audiens dikecualikan dari persetujuan. Bagian ini merupakan ringkasan faktual, bukan nasihat hukum. Untuk situs nyata dengan pengguna nyata, mintalah nasihat pengacara di yurisdiksi Anda.
Satu hal yang sering terlewat: access log juga merupakan data pribadi. GoAccess tidak menambahkan skrip ke halaman, tetapi tetap memproses alamat IP. Jadi, analitik berbasis log tidak otomatis berada di luar cakupan aturan.
Pemblokir iklan dan alasan jumlah Anda akan menurun
Daftar filter mencocokkan hostname dan pola URL. Produk analitik yang di-host mudah dicocokkan karena semua orang memuatnya dari hostname terkenal yang sama. Memindahkan collector ke subdomain Anda sendiri menghapus hostname tersebut dari request. Menyajikan script dari path yang Anda pilih menghapus nama file yang terkenal. Keduanya mengubah hal yang harus dicocokkan oleh daftar filter.
Tulisan ini tidak menyatakan tingkat pemblokiran karena tidak mengukurnya. Persentase pengunjung yang memblokir setup tertentu bergantung pada audiens Anda. Audiens developer memblokir jauh lebih banyak daripada audiens umum. Ukur selisih Anda sendiri. Pada minggu yang sama, hitung request untuk halaman HTML dalam access log menggunakan GoAccess. Bandingkan hasilnya dengan pageview yang dilaporkan oleh tool berbasis script Anda. Selisih tersebut mencakup kunjungan yang diblokir dan halaman yang disajikan dari cache di situs Anda.
Perkirakan total akan berubah pada hari ketika Anda beralih dari produk yang di-host. Sebagian perubahan itu mungkin tidak berkaitan dengan pemblokiran. Setiap produk memiliki definisi pageview yang berbeda. Produk juga berbeda dalam menentukan apakah perubahan route di dalam single-page application dihitung sebagai satu pageview dan kapan sebuah session berakhir. Bandingkan tren selama beberapa minggu sebelum menyimpulkan bahwa traffic menurun.
Pilih yang mana untuk situs apa
- Situs pribadi atau blog dengan sekitar 50.000 pageview per bulan: GoatCounter atau Medama pada VPS 1 GB, dengan pencadangan berupa penyalinan file.
- Situs yang tidak memungkinkan Anda menambahkan skrip, atau memiliki audiens yang banyak menggunakan pemblokir: GoAccess pada log yang sudah ada, dijalankan sesuai jadwal.
- Situs bisnis kecil yang dasbor-nya dibaca oleh orang lain: Umami, dengan container Postgres-nya.
- Situs yang memerlukan sasaran dan funnel, pada server dengan RAM 2 GB atau lebih: Plausible Community Edition, atau Rybbit jika Anda menginginkan dasbor yang lebih baru dan menerima bahwa proyeknya masih lebih muda.
- Banyak situs, banyak akun pengguna, atau persyaratan untuk menyimpan data mentah sesuai kebijakan retensi Anda sendiri: Matomo, dengan ukuran server yang mengikuti panduan yang telah diterbitkan di atas.
Mulailah dengan alat terkecil yang dapat menjawab pertanyaan Anda. Jika nanti berpindah dari GoatCounter ke Plausible, Anda hanya perlu menyediakan subdomain dan sebagian riwayat. Jika berpindah dari Matomo ke alat lain, Anda harus melakukan migrasi yang tidak mudah. Jika Anda masih menentukan apa lagi yang akan ditempatkan pada server yang sama, rangkuman self-hosting yang lebih luas membahas layanan yang dapat berjalan bersamanya. Jika yang sebenarnya Anda perlukan adalah pelacakan pada tingkat request untuk aplikasi, bukan jumlah pengunjung, gunakan layanan observabilitas self-hosted untuk kebutuhan tersebut.
FAQ
Apakah self-hosting analytics menghilangkan kebutuhan akan banner cookie?
Tidak, dan kedua pertanyaan tersebut berbeda. Aturan persetujuan dalam ePrivacy mencakup penyimpanan atau pembacaan sesuatu pada perangkat pengunjung. Jadi, alat yang tidak menetapkan cookie dan tidak menulis apa pun ke local storage berada di luar persyaratan khusus tersebut. GDPR adalah aturan yang berbeda dan mencakup pemrosesan data pribadi. Alamat IP merupakan data pribadi, sehingga Anda tetap memerlukan dasar hukum dan batas retensi meskipun tidak menggunakan cookie. Self-hosting memindahkan data ke server Anda dan menjadikan Anda pihak yang bertanggung jawab atas data tersebut. Periksa panduan regulator di wilayah Anda dan mintalah nasihat pengacara untuk kasus Anda.
Berapa banyak RAM yang dibutuhkan analytics yang di-self-host pada VPS?
Datastore yang menentukan, bukan dashboard. GoatCounter dan Medama berjalan sebagai satu proses menggunakan satu file, dan dokumentasi Medama menyatakan bahwa situs kecil dapat berjalan pada mesin dengan 256 MB. Umami menambahkan container Postgres di samping aplikasi Node. Plausible Community Edition dan Rybbit sama-sama menjalankan ClickHouse, dan kedua proyek tersebut menyatakan kebutuhan minimal 2 GB. Panduan Matomo sendiri dimulai dari 2 core CPU dan 2 GB RAM untuk hingga 100,000 pageview per bulan.
Mengapa angka self-hosted saya lebih rendah daripada analytics yang saya gantikan?
Ada dua penyebab, dan keduanya nyata. Filter list memblokir sebagian request ke collector, sehingga setiap alat berbasis script kehilangan kunjungan tersebut. Produk-produk ini juga menghitung dengan cara yang berbeda. Definisi pageview dan waktu berakhirnya session berbeda-beda. Bandingkan request halaman HTML selama satu minggu dari access log dengan pageview berbasis script pada minggu yang sama. Selisih tersebut mencakup kunjungan yang diblokir dan halaman yang disajikan dari cache. Pengukurannya berasal dari situs Anda sendiri, bukan dari persentase yang dipublikasikan pihak lain.
Apakah saya dapat menjalankan Plausible atau Rybbit pada VPS ARM?
Keduanya menjalankan ClickHouse. ClickHouse memerlukan SSE 4.2 pada x86 atau NEON pada ARM. Persyaratan Plausible menyatakan hal tersebut secara tepat, dan dokumentasi Rybbit menyatakan bahwa sistem ARM memerlukan ARMv8.2-A atau yang lebih baru. Core server ARM saat ini memenuhi persyaratan tersebut, sedangkan core yang lebih lama tidak. Kegagalan muncul sebagai ClickHouse yang menolak start dengan error instruction set, bukan sebagai error dalam application log. Pada mesin ARM kecil, alat yang menggunakan satu file menghindari masalah ini karena tidak ada yang menjalankan ClickHouse.
Haruskah saya mem-parsing server log daripada menggunakan tracking script?
Gunakan parsing log jika Anda tidak dapat menambahkan script, jika audiens Anda banyak menggunakan pemblokir, atau jika Anda ingin menghitung kunjungan crawler. GoAccess membaca log yang sudah ditulis oleh server Anda, sehingga tidak menambah bobot halaman atau database. Anda kehilangan semua aktivitas yang terjadi di dalam browser. Anda juga tidak menghitung halaman yang disajikan dari CDN atau browser cache karena request tersebut tidak pernah mencapai server Anda. Banyak situs menjalankan keduanya dan memperlakukannya sebagai dua pengukuran yang berbeda.