Umami
Privacy-focused web analytics, with its Postgres
Umami on Cubeship
Umami is a simple, privacy-focused web analytics tool — an open-source alternative to Google Analytics that stores no cookies and keeps your visitors' data on your own server.
This template installs it on a Cubeship instance with the managed Postgres it needs.
What it creates
- web — the Umami dashboard and tracking endpoint, from
ghcr.io/umami-software/umami:postgresql-v2, answering on the domain you choose. - umami-db — a managed Postgres 18 database, attached to the app, so
DATABASE_URLis set for you.
What you are asked
| Input | What to give |
|---|---|
| Where the dashboard answers | A domain you control, pointed at your instance. |
| The app's session secret | Nothing — the instance generates it and shows it once. |
After installing
- Open the domain and sign in with
admin/umami. - Change that password straight away under Settings → Profile.
- Add a website and paste the tracking snippet into your site.
Resources
The app is limited to 1 CPU and 1 GiB of memory, which is comfortable for a
few million page views a month. Raise limits in template.yaml for more.
What this creates
Apps — project “umami”
web
ghcr.io/umami-software/umami:postgresql-v2 on port 3000, at the domain from “Where the dashboard answers”, reachable inside as cubeship-umami-production-web:3000
- attaches the database umami-db
Databases
postgres 18, named umami-db, on port 5432
What an installer fills in
Where the dashboard answers — domain
The app's session secret — secret
template.yaml
# yaml-language-server: $schema=https://cubeship.dev/schema/template/v1.json
version: 1
minCubeship: "0.6.0"
project: umami # suggested slug; the installer may change it
inputs: # what the template cannot know
- key: domain
type: domain
label: Where the dashboard answers
- key: appSecret
type: secret
label: The app's session secret
generate: 32 # the instance generates it and shows it once
databases:
- key: db # template-local; what references name
name: umami-db # suggested instance name, renamable at install
engine: postgres
version: "18"
database: umami # the password is generated, never written here
apps:
- key: web
name: web
image: ghcr.io/umami-software/umami
tag: postgresql-v2
port: 3000
health: /api/heartbeat
domains:
- host: ${input.domain}
attach:
- database: db # contributes DATABASE_URL and friends
prefix: ""
limits: { cpu: 1, memory: 1Gi }
scale: 1
env:
APP_SECRET: ${input.appSecret}
DATABASE_TYPE: postgresql
GET https://raw.githubusercontent.com/cubeshipd/cubeship-umami-template/29acfe0088bfd116b3777fffe7e7c573608bd47b/template.yaml