Skip to main content

Install umami on Linux

Requirements

  • Node.js version 18.17 or newer
  • MySQL version 8.0 or newer OR PostgreSQL version v12.14 or newer
warning

MariaDB is not supported because it doesn't implement the BIN_TO_UUID function.

Packages

apt install curl git postgresql-15

Node.js

curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && apt-get install -y nodejs

Yarn

Install Yarn:

npm install -g yarn

PostgreSQL

Connect to PostgreSQL:

sudo -u postgres psql

Create the database:

CREATE DATABASE umami;

Create the user:

CREATE USER umami WITH ENCRYPTED PASSWORD 'UMAMI_DB_PASSWORD';

Set the permissions:

GRANT ALL PRIVILEGES ON DATABASE umami TO umami;

Change the database:

\c umami

Set the schema:

GRANT ALL ON SCHEMA public TO umami;

Exit from psql:

\q

Create user and group

Create the group first:

groupadd --system umami

Create the umami user:

useradd --system --gid umami --create-home  --home-dir /var/umami --shell /usr/sbin/nologin umami

Download

Clone the GitHub repository:

git clone https://github.com/umami-software/umami /opt/umami

Change the owner of the source:

chown -R umami:umami /opt/umami

Switch to umami user:

sudo -u umami /bin/bash

Install the packages

cd /opt/umami
yarn install

Configure

Create a .env file:

nano .env

Configure the DB connection:

/opt/umami/.env
DATABASE_URL="postgresql://umami:UMAMI_DB_PASSWORD@localhost:5432/umami"
DATABASE_TYPE="postgresql"
APP_SECRET="UMAMI_APP_SECRET"

Set permission for the file:

chmod 0640 .env

Build

yarn build
info

The default username is admin and the password is umami

Configure systemd

Create the systemd service:

nano /etc/systemd/system/umami.service
/etc/systemd/system/umami.service
[Unit]
Description=Umami
After=postgresql@15-main.service
Requires=postgresql@15-main.service

[Service]
Type=exec
User=umami
Group=umami
WorkingDirectory=/opt/umami
ExecStart=yarn start

[Install]
WantedBy=multi-user.target

Reload systemd to load the new service:

systemctl daemon-reload

Enable the service to start at boot:

systemctl enable --now umami