Hosting

Running on DigitalOcean

DigitalOcean is an affordable cloud hosting provider that will let you host your own Umami setup. In this setup guide we are going to install Ubuntu, a PostgreSQL or MySQL database, an Nginx webserver, Node.js and Umami. DigitalOcean also has a NodeJS droplet build that comes with Node.js, Ubuntu and Nginx which can get you started quicker.

For personal use, you can start with a single $5 a month cloud server and scale up as needed. You can use this link to get a $100 credit for the first 60 days.

Note, these steps can be repeated on any cloud hosting provider that offers Ubuntu.

Install Ubuntu

Install database (PostgreSQL or MySQL)

Install Nginx

Install Node.js

Install Umami

  • See Install under Getting started

Running Umami

You can simply run npm 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:

npm install pm2 -g
cd umami
pm2 start npm --name umami -- start
pm2 save

Proxying with Nginx

With Umami now running, you can proxy requests to a domain or subdomain from Nginx to Umami.

The following config will send all requests from umami.yourdomain.com to your local Umami instance.

server {
  server_name umami.yourdomain.com;

  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

The following config will allow you to host Umami at a subpath for your domain (eg: website.com/stats). This requires setting the enviroment variable BASE_PATH=/stats in your .env file.

server {
  ...
  location /stats/_next/static/ {
    alias /your_install_location/umami/.next/static/;
    access_log off;
    expires max;
  }
  location /stats {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
  ...
}

Adding an SSL certificate (optional)

Finish

That's it! You're now self-hosting Umami on your own server.