Umami is a self-hosted web analytics alternative to Google Analytics that focuses on privacy. This guide explains how to install Umami on Ubuntu 20.04.
Deploy a fully updated Ubuntu 20.04 server with at least 2 GB of RAM.
Create a fully qualified domain name for the server, such as umami.example.com.
Install Node.JS and NVM.
Install MySQL.
SSH to your server as root.
Log in to MySQL as root.
# mysql -u root
Create a umami
database and a umami_connect
user. Replace StrongPassword with a unique password.
mysql> CREATE DATABASE umami;
CREATE USER 'umami_connect'@'localhost' IDENTIFIED WITH mysql_native_password BY 'StrongPassword';
GRANT ALL PRIVILEGES ON umami.* TO 'umami_connect'@'localhost';
FLUSH PRIVILEGES;
Exit MySQL.
mysql> QUIT;
Clone the GitHub repository.
# git clone https://github.com/mikecao/umami.git
Change to the umami directory.
# cd umami
Install the necessary dependencies.
# npm install
Configure the database for Umami. When prompted, enter the password you chose for the umami_connect user.
# mysql -u umami_connect -p umami < sql/schema.mysql.sql
Create an environment file for Umami.
# nano .env
Paste the following to the file. Replace StrongPassword with the password you chose when you created the database. Replace the value of HASH_SALT with a unique value.
DATABASE_URL=mysql://umami_connect:StrongPassword@localhost:3306/umami
HASH_SALT=Replace_This_With_A_Unique_Value
HOSTNAME=127.0.0.1
PORT=3010
Save and exit the file.
Build Umami.
# npm run build
Install PM2 to automatically restart Umami in case of error or reboot.
# npm install pm2 -g
Launch Umami with pm2
# pm2 start npm --name "umami" -- run start-env
Generate a pm2 startup script and save the configuration.
# pm2 startup
# pm2 save
By default, Umami is only accessible from localhost. To expose Umami to the internet, use Caddy to proxy the connection and manage SSL certificates.
Install Caddy.
# apt install -y debian-keyring debian-archive-keyring apt-transport-https
# curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc
# curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
# apt update
# apt install caddy
Edit the CaddyFile.
# nano /etc/caddy/Caddyfile
Replace the contents of Caddyfile with the following. Replace umami.example.com
with your server's domain name.
umami.example.com
reverse_proxy 127.0.0.1:3010
Save and exit the file.
Start Caddy.
# caddy run
Verify Caddy is running and configured to restart after a reboot.
# systemctl status caddy
In your web browser, navigate to your server's domain name with HTTPS. For example:
https://umami.example.com
Log in as:
Username: admin
Password: umami
Please see the Umami documentation to learn how to use your new server.