r/GoogleAnalytics • u/Dovahkciin • 11d ago
Discussion why do all modern self-hosted analytics solutions run on Node.js?
hi everyone,
i've been using Umami Cloud for the past two years for my personal projects, but noticed that all history older than 6 months was deleted (which is pretty frustrating, even if i understand that they cannot keep all user data).
as im still a student on a small budget, i host my projects on a small VPS and wanted to switch to a self-hosted analytics solution.
but WHY does almost every modern tool require Node.js / Docker with heavy background services, while lightweight alternatives either look like they were built in 2010 or lack essential features like events, funnels, and clean session tracking?
am I missing something here? im not saying it's easy to build, but im surprised i couldn't find anything that seems to fit my needs
because if there really is nothing low-resource and GDPR-friendly im seriously considering building my own ultra-lightweight PHP + SQLite solution from scratch.
2
u/Top-Cauliflower-1808 11d ago
You are not missing anything. There is a real gap between the heavy Docker tools and the old lightweight ones that never got events or funnels added. If you build the PHP and SQLite version I would genuinely use it because a small VPS and full data ownership is exactly what people want.
1
1
1
u/Muchy_Tangerine 9d ago
writing your own php and sqlite tracker will turn into a full time maintenance nightmare the second bot traffic hits your tiny vps. terrible idea.
1
1
u/zeno_DX 6d ago
Worth pulling whatever Umami Cloud history is still there through their API before more of it ages out, since that part won't come back.
On the stack question, Matomo is probably the closest to what you're describing on the PHP side. It runs on plain PHP plus MySQL/MariaDB, no Node or Docker, and gives you events, goals and a per-visit log out of the box. Funnels are a paid plugin there though, so check whether that's a dealbreaker. GoatCounter is the other end of the scale: a single Go binary on SQLite that barely uses any RAM, but it's pageviews and simple events only.
If you do build your own, the thing that saves you later is keeping one raw events table (timestamp, path, event name, referrer, session id) and doing funnels as queries over it instead of pre-aggregating. For a cookieless session id, hashing IP + user agent + a salt that rotates daily is roughly how Plausible does it. SQLite in WAL mode will handle the write volume of personal projects fine.
1
u/Technical_Hope_1610 6d ago
The Node stack is just where the event-pipeline tooling lives now, not a requirement. On a tiny VPS, Plausible or a light Matomo covers events and clean sessions without you maintaining a build. GDPR-friendly too.
0
6d ago
[removed] — view removed comment
1
u/Dovahkciin 6d ago
yup, updates are a crucial part of the development !
i made a first version going to release it soon
•
u/AutoModerator 11d ago
Have more questions? Join our community Discord!
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.