mrkeyoor.com_
Sun 25 Oct 15:39 UTC
Self-Hostedevaluationupdated 25 Oct 2026

umami review

Umami collects website traffic and event data so you can see how people reach and use your site. You can run the analytics service yourself with PostgreSQL or use its cloud service, which suits teams choosing who operates their reporting infrastructure.

Verdict

Our Umami build stopped after 4 seconds because DATABASE_URL was missing, and tests stopped after 5 seconds for the same setting. Shortlist it if your team can operate PostgreSQL and wants website analytics on its own infrastructure. Complete a database-backed reporting trial before trusting it with your traffic history.

We ran it

Lab card: what happened when we ran umamiScreenshot of umami (umami.is)
Install✓ · 48s1024 packages · 1254 MB
Build✗ · 4s
Tests✗ · 5sran, no count parsed
Repo2026 files~163,947 lines of source · 9.1 MB · 5 CI workflows · Dockerfile · tests dir

Answers from our run

Does umami build from source?

Dependencies installed in 48 seconds (1024 packages), and the build failed. We cloned commit 559e3c6 into a clean Debian container with 3 CPUs and no project-specific setup.

Do umami's tests pass?

No. The project's own test command exited unsuccessfully after 5 seconds, and its output did not expose an individual test count.

Who should not use umami?

Developers expecting a static dashboard without a database: the README requires PostgreSQL and a database connection URL.

What are the alternatives to umami?

Plausible Analytics, Matomo. Our Umami build stopped after 4 seconds because DATABASE_URL was missing, and tests stopped after 5 seconds for the same setting.

SetupN/APackage installation succeeded, but missing DATABASE_URL blocked the build and tests before a working database-backed deployment.
DocsN/AThe README explains the missing setting and authentication prerequisites; the full documentation was not checked against a running service.
CommunityN/ARecent pushes, release dates, and issue activity were checked; support response quality was not assessed.
MaturityN/AThe run did not reach a working analytics service, so reporting accuracy, upgrades, and database recovery remain unassessed.

Who it’s for

Site owners who want to keep analytics in infrastructure they control and can maintain PostgreSQL.
Node.js teams prepared to configure database access before building the application.
Operators evaluating traffic and event reports against known visits before moving a live site.

Who it’s NOT for

Developers expecting a static dashboard without a database: the README requires PostgreSQL and a database connection URL.
Deployment teams that prohibit database writes during a build: the README says the first build creates tables and an initial admin login.
Administrators expecting two-factor authentication to work without extra configuration: the README says it is unavailable until its encryption key is set.

Setup reality

Our sandbox installed commit 559e3c6 in 48 seconds, recording 1,024 dependencies and 1,254 MB on disk. The build failed with exit 1 after 4 seconds because DATABASE_URL was undefined. Tests failed with exit 1 after 5 seconds when Prisma could not resolve the same variable.

The README requires PostgreSQL v12.14 or newer and a connection URL. It says the first build creates tables and an initial admin login. Docker images and a compose file provide another deployment route, which our run did not exercise.

The README requires Node.js 18.18 or newer. Our lab-node:22 image label does not establish the actual runtime or operating-system version. Two-factor authentication requires its own encryption key, and the optional MCP endpoint is disabled by default.

Umami's source build reached a missing database setting before it reached an analytics dashboard. That is a useful warning for anyone choosing it because they want to own their traffic data: the database is part of the product you must operate. Umami offers website analytics on your own infrastructure or through its cloud service. I'd shortlist the self-hosted option for a team comfortable running PostgreSQL, with an evaluation that follows an event all the way into a report.

What happened when we ran it

Our sandbox installed Umami commit 559e3c6 in 48 seconds, recording 1,024 dependencies and 1,254 MB on disk. The build failed with exit 1 after 4 seconds. Tests failed with exit 1 after 5 seconds. We ran it on October 24, 2026, with 3 CPUs and 8 GB of RAM. The recorded image label was lab-node:22, which establishes neither the actual Node.js version nor the operating system.

The build stopped at check:env because DATABASE_URL was not defined. Its log lists that missing variable and says the environment check exited with 1. The test command tried to generate the database client through Prisma and also stopped because it could not resolve DATABASE_URL. These excerpts identify the configuration boundary. They do not show a compiler defect, failing analytics assertions, or a database connection attempt with valid credentials.

The checkout occupied 9.1 MB and contained 2,026 files with roughly 163,947 source lines. Our scan found monorepo workspaces, a Dockerfile, a compose file, a tests directory, and 5 CI workflow files. Those signals tell a contributor where to look for deployment and verification machinery. They do not turn our failed commands into a passing suite. We have no passing-test count or working analytics session from this run.

PostgreSQL is required before the source build can proceed

The README requires PostgreSQL v12.14 or newer and a server with Node.js 18.18 or newer. It tells you to provide the database connection through DATABASE_URL. Our missing-variable result matches that documented requirement. A team already running PostgreSQL can evaluate Umami within a familiar operating setup. Someone expecting a static dashboard they can upload to web hosting has picked the wrong deployment shape.

The README says the build creates database tables on first use and creates an initial admin login. That makes database access a concern before the application starts serving requests. For a trial, give Umami a disposable database of its own. Agree on who can run the command against a persistent database before putting it in deployment automation. This is advice based on the documented behavior, not a database mutation we observed.

Docker includes a database, while backups remain your job

Umami provides Docker images and a compose file that runs the application with PostgreSQL. That is a documented alternative to the source route that stopped in our sandbox. We did not run the container deployment, so it has no measured setup result here. If containers are your team's standard, evaluate that route directly instead of assuming our source-command outcome predicts it.

For a source deployment, the README describes an application listening locally and a web server proxy in front of it. Decide where the database persists and how you would restore it before adding a live site's traffic. Change the documented initial login before exposing the dashboard. Having a compose file answers how to start the services; your retention and recovery requirements still need an owner.

Two-factor authentication needs its own encryption key

Two-factor authentication is unavailable until TWO_FACTOR_ENCRYPTION_KEY is set. The README specifies a 64-character hexadecimal value and says two-factor authentication cannot be required without it. For a shared analytics service, this belongs in the deployment requirements alongside the database connection. An administrator who expects to enforce two-factor authentication after login needs that configuration in place first.

Umami's MCP endpoint is disabled by default and requires an API key when enabled. The README documents MCP_ENABLED=1 and a key generated in Settings. That may interest teams connecting analytics to a Model Context Protocol client, but our commands exercised neither the endpoint nor its permissions. Leave it disabled during a basic dashboard evaluation unless that integration is part of the job you are selecting Umami to do.

Current maintenance does not establish analytics accuracy

The last push was October 23, 2026, and GitHub's recent activity feed included issues and pull requests updated on October 24 and 25. Release v3.4.1 was published on October 23. Those dates show current maintenance. They don't tell us how quickly support questions receive answers, and the API's combined open count includes pull requests.

The README presents traffic, campaigns, behavior, conversions, and revenue as Umami's scope. It also describes collection without cookies. These are upstream product claims, not results from our sandbox. During a trial, send a known page visit and a named event, then check where each appears. If campaign attribution or revenue is the reason you're switching, make that the acceptance case before moving the rest of your reporting.

Plausible and Matomo offer different operating choices

Plausible Analytics offers a managed cloud service and a self-hosted Community Edition. Compare its managed service if the missing database step reminds you that you don't want to operate analytics infrastructure. Its README separates the commercial and Community Edition feature sets, so check the edition against the report you need. We measured neither alternative in this review.

Matomo uses PHP and MySQL or MariaDB. I'd compare it when those are already the services your team knows how to maintain. Umami is the more natural candidate for an operator committed to Node.js and PostgreSQL. Before adopting it, complete the step our run could not reach: connect a dedicated database, generate known events, and verify the resulting reports.

Alternatives

ProjectWhat it isPick it when
Plausible Analytics gh↗Website analytics available as a managed cloud service or self-hosted Community Edition.pick this instead when you want to compare managed hosting with a separately documented Community Edition feature set.
Matomo gh↗An analytics platform using PHP and MySQL or MariaDB.pick this instead when your operators already maintain PHP and MySQL or MariaDB and want analytics within that stack.

What people are saying

  1. [github-trending] umami-software/umami

Sources

  1. Umami README
  2. Umami v3.4.1 release
  3. Umami repository facts
  4. Umami recent issue and pull-request activity
  5. Plausible Analytics README
  6. Matomo README

More self-hosted reviews

mathua · redlib · logto · bloom · Mailu · immich-go · the whole board →