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.