Skip to content

Initially I was hosting umami on a digitalocean server but then I realized I can host it on without any cost at all. So I moved my umami instance from a digitalocean droplet to

How to

  • Get an account on
  • Install flyctl -
  • Once it's installed run fly launch, go through the options and in the end it will generate a fly.toml file.
  • Replace the content of the toml file with the following:
app = "falconfeast-umami"
kill_signal = "SIGINT"
kill_timeout = 5
processes = []

  image = ""

  DATABASE_TYPE = "postgresql"

  allowed_public_ports = []
  auto_rollback = true

  http_checks = []
  internal_port = 3000
  processes = ["app"]
  protocol = "tcp"
  script_checks = []
    hard_limit = 25
    soft_limit = 20
    type = "connections"

    force_https = true
    handlers = ["http"]
    port = 80

    handlers = ["tls", "http"]
    port = 443

    grace_period = "1s"
    interval = "15s"
    restart_limit = 0
    timeout = "2s"
  • Deploy a postgres instance
fly postgres create
  • Once the postgres instance is deployed and you have a the URL to connect to it.
  • Connect to the pg instance and create a new user along with a DB
  • I had issues directly connecting to the pg instance, so I connect to the fly's proxy and then connected to the postgres instance.
# Connect to the proxy
fly proxy 5432 -a <YOUR_DB_NAME>

# Connect to the PG instance 
fly pg connect -p <DB_PASSWORD> -u <DB_USER> -a <DB_NAME>
  • Once connected create a new user and a DB for umami to store data
  • After that you can create a fly's secret, the one we have in our fly.toml file i.e DATABASE_URL
fly secret set DATABASE_URL=<YOUR_DB_URL>
  • In the end you can deploy the application by running: fly deploy

Once that is done you can create a custom domain from fly's dashboard.