Umami

Installation

Install a self-hosted Umami instance from source, with Docker Compose, from a prebuilt Docker image, or on Kubernetes with a third-party Helm chart.

There are several different ways to install Umami.

  • Installing from source: Get the code from GitHub and build the application yourself.
  • Using Docker Compose: Build your own Docker container using docker compose.
  • Using a Docker image: Download a pre-built Docker image.
  • Using Kubernetes with HelmForge: Deploy Umami with a third-party Helm chart maintained by the HelmForge project. See the Running on Kubernetes with HelmForge guide.
Change the default password

Umami creates a default login account with username admin and password umami the first time it sets up its database. Since v3.5.0, Umami requires you to replace the default password before you can continue after logging in with it.

Installing from source#

Requirements#

  • A server with Node.js version 20.19 or newer (22 LTS recommended).
  • A database. Umami supports PostgreSQL (minimum v12.14) databases.
Use UTC

We recommend configuring the PostgreSQL database to use the UTC timezone. UTC avoids issues caused by regional offsets, ensuring consistent, predictable timestamps across environments, services, and deployments.

Install pnpm#

Get the source code and install packages#

Configure Umami#

Create an .env file with the following:

The connection URL is in the following format:

APP_SECRET is required and secures authentication tokens. Generate one with openssl rand -hex 32. See APP_SECRET.

Build the application#

The first time the build is run, it will create all the required database tables in your database. It will also create a login account with username admin and password umami. You will be asked to change this password the first time you log in.

Start the application#

By default this will launch the application on http://localhost:3000. You will need to either proxy requests from your web server or change the port to serve the application directly.

To bind to the HOSTNAME and PORT set in your .env file, start with pnpm run start:env instead.

Running Umami#

You can simply run pnpm start to start Umami, but it's highly recommended you use a process manager like PM2 which will handle restarts for you.

To run with PM2:

Installing with Docker#

Umami ships with a Docker Compose file that contains the application and a PostgreSQL database.

The Compose file reads APP_SECRET from an .env file next to it and will not start without it. Create the file first:

Generate the value with openssl rand -hex 32.

To build the Docker container and start up with a PostgreSQL database, run:

This will create a PostgreSQL database and start the Umami application on http://localhost:3000. The default login credentials are username admin and password umami. You will be asked to change this password the first time you log in.

Alternatively, if you want to use prebuilt images, you can pull the Umami Docker image:

When using a prebuilt image, you need to provide your own database and set the DATABASE_URL and APP_SECRET environment variables. See Environment variables for configuration options.