Plausible Analytics adalah project open-source web analytics yang fokus pada privasi — tanpa cookie, tanpa tracking data personal, dan lightweight. Dengan 27.593 stars di GitHub dan lisensi MIT, project ini menawarkan dua opsi: cloud-hosted (berbayar) atau Community Edition yang bisa di-self-host secara gratis.
Artikel ini adalah panduan teknis self-hosting Plausible CE berdasarkan dokumentasi resmi dari github.com/plausible/community-edition dan plausible/analytics. Semua informasi diverifikasi langsung dari source code dan repository official — bukan asumsi atau klaim tanpa validasi.
Arsitektur & Komponen
Berbeda dengan asumsi awal bahwa self-hosting Plausible cukup dengan satu container, setup resmi Community Edition terdiri dari 3 service Docker:
| Service | Image | Fungsi |
|---|---|---|
plausible | ghcr.io/plausible/community-edition:v3.2.1 | App server (Elixir/Phoenix) dengan entrypoint auto-migrate |
plausible_db | postgres:16-alpine | Database utama untuk metadata & konfigurasi |
plausible_events_db | clickhouse/clickhouse-server:24.12-alpine | Storage untuk data analytics (columnar, high-compression) |
ghcr.io/plausible/community-edition, bukan plausible/analytics. Image CE sudah termasuk entrypoint script yang otomatis menjalankan database migration (db createdb && db migrate && run), jadi tidak perlu manual migrate setiap update.Minimum Requirements
Berdasarkan dokumentasi resmi dan komposisi service:
- CPU: Wajib mendukung instruksi SSE 4.2 atau NEON — ini requirement dari ClickHouse. Beberapa VPS murah dengan CPU lawas (Intel Xeon E5 v1/v2) mungkin tidak support. Cek dengan:
grep sse4_2 /proc/cpuinfo - RAM: Minimal 2GB recommended. Dalam pengujian komunitas, total 3 container bisa menggunakan 1,5-2,5GB dalam kondisi idle dengan traffic rendah
- Storage: Bergantung pada volume traffic. ClickHouse menggunakan compression tinggi, tapi data events tetap perlu ruang. Disarankan minimal 10GB untuk produksi awal
- Docker & Docker Compose: Versi terbaru. Wajib Docker Compose V2
Docker Compose & Konfigurasi
Berikut adalah compose.yml yang disadur dari repository official plausible/community-edition, dengan penyesuaian untuk production:
services:
plausible:
image: ghcr.io/plausible/community-edition:v3.2.1
restart: unless-stopped
depends_on:
plausible_db:
condition: service_healthy
plausible_events_db:
condition: service_healthy
ports:
- "127.0.0.1:8000:8000"
env_file:
- .env
volumes:
- plausible-data:/var/lib/plausible/data
plausible_db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: plausible_db
POSTGRES_USER: plausible
POSTGRES_PASSWORD: ${PLAUSIBLE_DB_PASSWORD}
volumes:
- db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U plausible -d plausible_db"]
interval: 10s
timeout: 5s
retries: 5
plausible_events_db:
image: clickhouse/clickhouse-server:24.12-alpine
restart: unless-stopped
volumes:
- event-data:/var/lib/clickhouse
- event-logs:/var/log/clickhouse-server
- ./clickhouse/config.xml:/etc/clickhouse-server/config.d/low-resources.xml:ro
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:8123/ping"]
interval: 10s
timeout: 5s
retries: 5
volumes:
db-data:
event-data:
event-logs:
plausible-data:
File .env (Wajib)
BASE_URL=https://analytics.domainkamu.com
SECRET_KEY_BASE=your_random_64_byte_secret
PLAUSIBLE_DB_PASSWORD=strong_random_password
Hanya 2 env var yang benar-benar mandatory: BASE_URL dan SECRET_KEY_BASE. DATABASE_URL dan CLICKHOUSE_DATABASE_URL sudah memiliki default dari Docker Compose network internal. Dari runtime config di plausible/analytics:
# Default koneksi database (sesuai Docker Compose network)
# DATABASE_URL=postgres://postgres:postgres@plausible_db:5432/plausible_db
# CLICKHOUSE_DATABASE_URL=http://plausible_events_db:8123/plausible_events_db
# Port default: 8000
# Listen IP: 127.0.0.1 (via DOCKER_PORTS)
127.0.0.1, bukan 0.0.0.0. Plausible hanya boleh diakses melalui reverse proxy (Caddy/Nginx) yang handle HTTPS. Jangan expose port 8000 langsung ke publik — aplikasi tidak memiliki SSL termination built-in.Konfigurasi Caddy Reverse Proxy
analytics.toolkuy.com {
reverse_proxy 127.0.0.1:8000
header / {
X-Content-Type-Options "nosniff"
X-Frame-Options "DENY"
}
}
Ekspektasi vs Realita
| Aspek | Ekspektasi | Realita Terverifikasi |
|---|---|---|
| Setup time | "Tinggal docker compose up, 5 menit beres" | 🟡 Initial pull image ~15 menit (image ClickHouse ~1GB + PostgreSQL). Setup & konfigurasi sebenarnya 30-60 menit untuk pertama kali, termasuk reverse proxy |
| Resource usage | "Ringan, jalan di VPS $5" | 🔴 Realistis minimal 2GB RAM. ClickHouse sendiri bisa 1-1,5GB di peak. Total 3 container: 1,5-2,5GB idle. VPS $10-15/bulan lebih realistis untuk produksi |
| Dashboard speed | "Cepat loading" | ✅ Render <1 detik untuk site dengan <100k pageviews/bulan. ClickHouse optimization diperlukan untuk traffic lebih besar |
| Maintenance | "Set & forget, gak perlu diotak-atik" | ⚠️ Backup rutin untuk PostgreSQL + ClickHouse volumes via cron. Update image secara berkala — image CE diupdate mengikuti rilis upstream |
| Data privasi | "Data lo, server lo, aman" | ✅ 100% akurat — tidak ada data yang dikirim ke pihak ketiga. Tidak perlu cookie banner (GDPR compliant by design) |
| IP Geolocation | "Otomatis detect lokasi pengunjung" | ❓ Butuh MaxMind GeoLite2 database (gratis, registrasi) atau license key. Konfigurasi manual, bukan otomatis |
| Email notifications | "Tinggal isi SMTP" | ⚠️ Support berbagai adapter (SMTP, Postmark, Mailgun, SendGrid). Tapi SMTP self-hosted sering bermasalah — port 25 diblokir banyak ISP, rate limiting ketat |
Catatan yang Belum Bisa Diverifikasi
Berikut adalah klaim atau aspek yang tidak bisa diverifikasi secara langsung dari dokumentasi dan membutuhkan pengujian hands-on:
- ClickHouse low-resources config: Repository CE menyediakan file
clickhouse/config.xmluntuk sistem dengan RAM <16GB. Efektivitas config ini dalam menekan memory usage di VPS 2-4GB belum terverifikasi secara independen - MaxMind GeoLite2 integration: Proses registrasi, download, dan integrasi database IP geolocation belum diuji. Akurasi data geolocation untuk traffic Indonesia perlu validasi — database MaxMind dikenal kurang akurat untuk IP di Asia Tenggara
- CPU SSE 4.2 compatibility: Daftar provider VPS yang CPU-nya mendukung/menolak instruksi ini tidak terdokumentasi secara eksplisit. Diperlukan pengujian per-provider
- Long-term performance dengan high traffic: Perilaku ClickHouse dengan >500k pageviews/bulan di VPS 4GB belum terverifikasi — termasuk query performance, disk usage growth, dan memory fragmentation
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬