NODED.CLOUD/Blog/Self-Hosted Web Analytics on a VPS: Umami vs Matomo vs Plausible Sizing

Self-Hosted Web Analytics on a VPS: Umami vs Matomo vs Plausible Sizing

24 Sept 2026 · Mario Marin

The lightest of the three runs on a €4 machine; the heaviest wants 8 GB at the same traffic. Here is the sizing table nobody publishes, plus the EU residency part.

Self-hosting your web analytics solves two problems at once: you stop paying per pageview, and the question "where does our visitor data go" gets a one-word answer. For an EU business that second part is worth more than the first, because the awkward conversations about analytics are rarely about money.

The three common self-hosted options have very different appetites, though, and the sizing advice you find online is usually written by whoever maintains the tool. Here is a straight comparison of what each one needs, which of our shapes fits, and what it costs per month in each location.

The three you are choosing between

ToolStorage engineResource profileRealistic minimum shape
UmamiPostgreSQL or MySQLLightest of the three. A Node app plus a normal relational database.VPS I (2 GB) for small sites, VPS II (4 GB) with room to breathe
Plausible (self-hosted)PostgreSQL and ClickHouseTwo databases. ClickHouse is fast and not shy about memory.VPS III (8 GB); 4 GB only for very small sites
MatomoMySQL / MariaDBPHP plus a database that grows quickly; report archiving is the expensive part.VPS II (4 GB) to start, VPS III–IV as traffic and history grow

The pattern to notice: the tool that stores raw events in a columnar database (Plausible) needs the most memory even at low traffic, while the lightest option (Umami) trades some query flexibility for running comfortably on a €4 machine. Matomo sits in the middle until you turn on the heavier reports, at which point the archiving job — not the traffic — sets your shape.

Sizing by traffic, honestly

Analytics load is writes plus report queries. Writes are tiny; reports are not. A rough guide for a single site:

Monthly pageviewsUmamiMatomoPlausible
Up to ~100kVPS IVPS IIVPS III
~100k – 1MVPS IIVPS IIIVPS III
~1M – 5MVPS IIIVPS IVVPS IV
Above 5MVPS IV+VPS V+VPS V+

And what those cost per month with us:

ShapeRAM / vCPU / diskBucharestWarsaw · AmsterdamFrankfurt · Vienna
VPS I KVM2 GB / 1 / 20 GB€4.00€5.00€5.50
VPS II KVM4 GB / 2 / 40 GB€6.00€8.00€9.00
VPS III KVM8 GB / 2 / 60 GB€10.00€14.00€16.00
VPS IV KVM16 GB / 4 / 80 GB€16.00€24.00€26.00

At those prices the hosting is rarely the deciding factor: a €10 machine in Bucharest carries a million pageviews a month on any of the three tools. What costs you is choosing the heaviest tool for a site that needed the lightest.

Where to put it, and why the location matters more here

An analytics endpoint is called by every visitor on every page. Two consequences:

  • Latency is user-visible if you load the tracker synchronously (you should not) and still matters for the request itself. Put the analytics box near the bulk of your audience rather than near your office.
  • The data lands where the machine is. This is the entire point for an EU business: our five locations — Bucharest, Warsaw, Amsterdam, Frankfurt and Vienna — are all in EU member states, so visitor data never leaves the Union, and there is no transfer mechanism to document. The price list per location shows what each city costs, and Bucharest versus Warsaw covers the CEE choice.

Hosting inside the EU is the part you can solve with a location dropdown. It does not by itself make your analytics lawful — that depends on what you collect, whether it is personal data, how long you keep it and whether you set a cookie. All three tools can be configured to run without cookies and without storing raw IP addresses; that configuration is your decision, not a property of the server.

Serve the tracker from your own domain

The practical benefit people miss: when the analytics instance answers on a subdomain of your own site, the tracker is a first-party request. It is not blocked as a third-party script, the data is not shared with anyone, and you are not asking your visitors' browsers to talk to a domain they have never heard of. Point a subdomain at your VPS, terminate TLS there with an ACME certificate, and keep the dashboard behind authentication.

Disk, retention and the thing that grows

Raw event storage grows linearly with traffic and never shrinks unless you tell it to. Before you launch:

  • Decide a retention period and configure it. Twelve or twenty-four months is plenty for most businesses, and short retention is also a data-protection argument in your favour.
  • Watch database size as a metric, not disk free space. You want to see the trend before the wall.
  • If you run out of room, add disk rather than jumping shapes: extra storage is €4 a month per 50 GB increment, up to three increments per machine.

Prove the shape before you commit

Every shape above is available on hourly billing, so the sizing question is answerable in an afternoon rather than in arguments:

  1. Order the candidate shape hourly — a VPS III is €0.0139 an hour in Bucharest, €0.0222 in Frankfurt.
  2. Install the tool, then replay a month of your access logs into it, or point a copy of your site's tracker at it for a day.
  3. Open the heaviest report you actually use and watch memory and query time.
  4. Destroy the machine. Four hours of a VPS III in Bucharest is about €0.06.

Hourly services need €5 of account credit to start, and a stopped machine keeps billing — destroy it to stop the meter.

How Noded Can Help

If you are replacing a SaaS analytics bill, start with Umami on a VPS I or VPS II in the location nearest your audience and see whether the lighter tool covers your reporting. If you need Plausible's model or Matomo's depth, order a VPS III on hourly billing from the hourly VPS page and test the reports you care about before switching to the monthly price. Our PostgreSQL sizing notes apply directly to the database half, and if you would rather have a second opinion on the tool choice, open a ticket.

FAQ

Which self-hosted analytics tool is lightest?

Umami, by a clear margin — a Node application plus PostgreSQL runs on a 2 GB machine for a small site. Plausible needs ClickHouse alongside PostgreSQL and wants 8 GB to be comfortable. Matomo sits between the two until report archiving becomes the bottleneck.

Does self-hosting analytics in the EU make me GDPR-compliant?

It removes the international transfer question, which is a real and common problem. Lawfulness still depends on what you collect, your retention period and whether you set cookies. All three tools can be run cookieless and without storing raw IPs.

How much traffic can a €10 VPS handle?

Our 8 GB shape comfortably serves around a million pageviews a month on any of the three tools, with the database on the same machine. Report queries, not incoming events, are what eventually push you up a shape.

Where should the analytics server live?

Closest to the majority of your visitors, since every page view makes a request to it. All five of our locations are EU-based, so residency is satisfied in every one of them.

What happens when the event table gets huge?

Set retention first, then add storage increments (50 GB for €4 a month, up to three) before considering a bigger shape — analytics data grows on disk long before it needs more RAM.

← All posts

Related services

Run this on NODED.CLOUD.

Like the way we run things? Spin up a server in 60 seconds.