Vince is a privacy friendly web analytics server focused on painless self hosting.
- Automatic TLS native support for let's encrypt.
- Drop in replacement for plausible you can use existing plausible scripts and just point them to the vince instance (note that vince is lean and only covers features for a single entity self hosting, so it is not our goal to be feature parity with plausible).
- Outbounds links tracking
- File download tracking
- 404 page tracking
- Custom event tracking
- Time period comparison
- Public dashboards allow access to the dashoard to anyone(by default all dashboards are private).
- Unique shared access generate unique links to dahboards that can be password protected.
- Zero Dependency: Ships a single binary with everything in it. No runtime dependency.
- Easy to operate: One line commandline flags with env variables is all you need.
- Unlimited sites: There is no limit on how many sites you can manage.
- Unlimited events: scale according to availbale resources.
- Privacy friendly: No cookies and fully compliant with GDPR, CCPA and PECR.
Vince ships a single executable without any dependencies.
curl -fsSL https://vinceanalytics.com/install.sh | bash
docker pull ghcr.io/vinceanalytics/vince
❯ helm repo add vince http://vinceanalytics.com/charts
❯ helm install vince vince/vince
vince --version
create admin
❯ vince admin --name acme --password 1234
start server
❯ vince serve
2024/10/23 15:32:08 [JOB 1] WAL file vince-data/pebble/000002.log with log number 000002 stopped reading at offset: 124; replayed 1 keys in 1 batches
2024/10/23 15:32:08 INFO starting event processing loop
2024/10/23 15:32:08 INFO starting server addr=:8080
compressed | uncompressed |
---|---|
122MB | 310 MB |
To ensure smooth deployments we embed a couple of things
asset | size | notes |
---|---|---|
mmdb | 108MB | City Geolocation Database from https://db-ip.com under Creative Commons Attribution 4.0 International License. |
geoid database | 384MB | All cities, countries and regions data |
The reason you can breakdown by city/region is because we derive city/region geoid from city/region names from our embedded geoid data, something that would have been impossible because geoid is missing from the free mmdb downloads.
We use a number of techiques to shrink the embedded assets and avoid excessive memory allocations.
- flatbuffers: we organize location data using flatbuffers in such a way that we never
decode and values from embedded memory are passed around to avoid any allocation. An
idle vince instance consumes around
14MB
and0.0%
of cpu. - Bit sliced seralized roaring bitmaps: all mapping with embedded data is encoded as BSI. Like flatbuffers, there is no decoding, we use the embedded slice memory directly.
Stay calm and don't worry. The fat binary wont eat your ram or hijack your cpu. Under
heavy local load testing I havent peaked at 70MB
of ram yet, data is well organized
and GC works like a charm.
Please load test with your workload and tell me your findings.
feature | vince | plausible |
---|---|---|
Entrerprise features | ❌ | ✅ |
Hosted offering | ❌ | ✅ |
Multi tenant | ❌ | ✅ |
Funnels | ❌ | ✅ |
Goals Conversion | ✅ | ✅ |
Unique visitors | ✅ | ✅ |
Total visits | ✅ | ✅ |
Page views | ✅ | ✅ |
Views per visit | ✅ | ✅ |
Visit duration | ✅ | ✅ |
Breakdown by Cities, Sources, Pages and Devices | ✅ | ✅ |
Self Hosted | ✅ | ✅ |
<1KB script | ✅ | ✅ |
No Cookies(GDPR, PECR compliant) | ✅ | ✅ |
100% data ownershiip | ✅ | ✅ |
Unique shared access to stats | ✅ | ✅ |
Outbound links tracking | ✅ | ✅ |
File download tracking | ✅ | ✅ |
404 page tracking | ✅ | ✅ |
Time period comparisons | ✅ | ✅ |
Unlimited sites | ✅ | ❌ |
Unlimited events | ✅ | ❌ |
Zero dependency | ✅ | ❌ (needs elixir, clickhouse, postgresql ...etc) |
Automatic TLS | ✅ | ❌ |
Plausible Analytics : vince
started as a Go port of plausible with a focus on self hosting.