---
title: "Self-hosted Google Analytics alternatives: choosing and deploying Umami or Plausible"
description: "Compare Umami and Plausible, two open-source, cookie-free web analytics tools, then deploy one on your own server with Zenavo, secure the first account, add the tracking script, check the data and back it up."
date: 2026-11-12
language: en
url: https://zenavo.app/blog/umami-vs-plausible
---

# Self-hosted Google Analytics alternatives: choosing and deploying Umami or Plausible

Most sites want a few answers: how many visitors came today, where from, and which pages they read. Google Analytics answers them, but it's complex to set up, the data lives with a third party, and it usually comes with a cookie banner.

[Umami](https://umami.is) and [Plausible](https://plausible.io) are open-source web analytics tools with clean dashboards. They use no cookies by default and keep the data in your own database. Zenavo has a template for each, so either runs on a server you rent or own within minutes.

## Pick one

| | Umami | Plausible Community Edition |
|---|---|---|
| Services | Umami + PostgreSQL | Plausible + PostgreSQL + ClickHouse |
| Memory | Small; shares a small server with other apps | The template asks for about 2 GB |
| Good for | Personal sites, several small sites, least upkeep | Higher traffic, or if you like Plausible's reports |
| First sign-in | A default admin account; change its password at once | Register the first account |
| Email | Not needed | Needed (SMTP) for invites and password resets |

If in doubt, start with Umami: it's lighter, and backing it up or moving it involves a single PostgreSQL. Consider ClickHouse-based Plausible when traffic outgrows PostgreSQL.

Neither uses cookies, but whether you still need a privacy notice or consent depends on your local law and what you collect; check for yourself. Some ad blockers block these scripts too, so counts run a little below real visits.

## Deploy Umami

[Connect a Linux server](https://docs.zenavo.app/servers/add-a-server) to Zenavo, open the [Umami template](https://zenavo.app/deploy?template=umami), choose the server and deploy. It creates two services:

- **postgresql**: PostgreSQL 17, data in a `/var/lib/postgresql/data` volume, password generated;
- **umami**: `ghcr.io/umami-software/umami:postgresql-latest` on HTTP port `3000`, connected through `DATABASE_URL`, with a generated `APP_SECRET`.

On the umami service's **Networking** tab, bind a domain such as `stats.example.com` to port `3000`, set up DNS and wait for HTTPS ([Domains & HTTPS](https://docs.zenavo.app/networking/domains)).

**Sign in as soon as the domain works.** Umami's default admin is `admin` with the password `umami`. Change it right away under **Settings → Profile**, and turn on two-factor authentication under **Security**. Until you do, anyone who finds the address can sign in with the default password.

Then add your site under **Settings → Websites** and copy the tracking code it shows.

## Deploy Plausible

Open the [Plausible template](https://zenavo.app/deploy?template=plausible). Before deploying, it asks for the **Site URL**: the full address you will open Plausible at, such as `https://stats.example.com`. It creates three services:

- **postgresql**: accounts and site settings;
- **clickhouse**: the visit events, with threads and logs turned down for small servers;
- **plausible**: Community Edition `v3.1.0` on HTTP port `8000`, which creates and migrates its databases on start.

After deploying, bind the **same** domain to the plausible service. If the Site URL and the domain differ, sign-in and the script address break; to change the address, edit the `BASE_URL` variable and redeploy.

ClickHouse needs a CPU with SSE 4.2 (x86) or NEON (ARM). Common cloud servers have it; very old machines may fail to start it.

Open the site and register the first account. Plausible CE defaults to `DISABLE_REGISTRATION=invite_only`: after the first account, people join only by invitation.

Invitations and password resets need email. Add SMTP settings to the plausible service's **Variables**, such as `MAILER_EMAIL`, `SMTP_HOST_ADDR`, `SMTP_HOST_PORT`, `SMTP_USER_NAME` and `SMTP_USER_PWD`, then redeploy. Plausible's [configuration page](https://github.com/plausible/community-edition/wiki/configuration) explains each one. Keep the SMTP password in the variables only, never in a repository.

Once signed in, click **Add a website**, enter the domain to track, and copy the tracking code it shows.

## Install the script and check it works

Put the copied `<script>` in the `<head>` of every page. In Next.js, Vue and similar frameworks, add it to the shared layout; in WordPress, Ghost and other CMSs, use the theme's or site's header code setting.

Open your site on a phone or in a private window. The visit should appear within seconds in Umami's **Realtime** view or Plausible's current visitors. If nothing shows up:

- check in the browser's developer tools **Network** panel that the script request returns 200;
- try again with ad blockers off;
- make sure the site's domain matches the website added in Umami or Plausible.

## Back up

All the stats live in databases. For Umami, back up the postgresql service. For Plausible, accounts are in postgresql and visit events in clickhouse's volume; keep both.

Back up PostgreSQL directly from the database service's **Backup & Restore** tab. ClickHouse is a volume, so stop the project while backing it up. For data that matters, download a backup to keep, and restore it once into a new project to be sure it works. See [Backup & Restore](https://docs.zenavo.app/operations/backups).

## FAQ

**Can I import my Google Analytics history?**
Plausible CE can import Google Analytics 4 history once you create OAuth credentials in Google Cloud and add `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET` to the plausible service's variables; see Plausible's [import guide](https://plausible.io/docs/google-analytics-import). For Umami, check its current documentation.

**Can one Umami track several sites?**
Yes. Add each site under **Websites**; each gets its own tracking code.

**If analytics goes down, does my site break?**
No. A script that fails to load doesn't stop the page; visits during that time just aren't counted.

**Plausible never finishes starting?**
Look at the clickhouse and plausible services' logs. Usually the server is short of memory, or its CPU lacks the instructions ClickHouse needs.

Start from the [Umami template](https://zenavo.app/deploy?template=umami) or the [Plausible template](https://zenavo.app/deploy?template=plausible): secure the admin account first, then install the script, confirm data arrives, and back it up.
