Skip to content

Self-host Gotify

updated Jul 2026prices checked · Jul 2026Install verified on Ubuntu 26.04 · Aug 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →

A self-hosted server for push notifications with a web UI, per-app tokens, and an Android client. Point your apps and scripts at it and get instant alerts you fully control — no third-party push service in the middle.

Key facts

CategoryPush notifications
LicenseMIT
StackGo
Min RAM256 MB
Official imageyes
Measured idle RAM5 MB
Difficulty
Our recommendation

Pick Gotify when you want a private push server for your own scripts and services and everyone who needs to receive is on Android or a browser: messages go in over a REST API, out over WebSocket, and the MIT-licensed server, web UI, CLI and Android app are all first-party. One container with SQLite in `/app/data` is the whole install. If iPhone users have to receive, ntfy is the better fit — Gotify's official clients do not include an iOS app.

What you need

  • Any VPS with at least 256 MB of RAM
  • A domain you control — most self-hosted setups need HTTPS in front of them
  • Under an hour if you've used Docker before
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + US
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Install with Docker Compose

Save this as compose.yml and run docker compose up -d:

# Gotify — single container, SQLite by default
services:
  gotify:
    image: gotify/server
    ports: ["80:80"]
    environment: { GOTIFY_DEFAULTUSER_PASS: changeme }
    volumes: ["./data:/app/data"]
# docker compose up -d  →  http://SERVER_IP  (admin / changeme)
# create an app in the UI to get a push token

What you take on

Gotify is tiny and stable, but the 3.x line changed some contracts and iOS is not covered:

non-negotiableOur snippet pulls gotify/server untagged, which today means 3.x. The 3.0 migration guide says config.yml is no longer supported (convert it with gotify-server migrate-config), tokens are shown only once on creation or rotation, paging.next became a relative path, and sensitive operations need step-up authentication — anyone upgrading a 2.x install should read it before pulling.
non-negotiableThe official clients are the web UI, the CLI and the Android app. iOS delivery relies on community projects — gotify/contrib lists a third-party assistant that relays messages to iOS devices — not on anything the project maintains.
non-negotiableThe default login is admin with the password you set in GOTIFY_DEFAULTUSER_PASS; change it on first login. Put the server behind one of the documented reverse-proxy setups (Apache, Caddy 2, HAProxy, Nginx, Traefik) rather than exposing port 80.
non-negotiableSQLite is the default and lives in /app/data; other databases are a configuration change, not a different image. The 256 MB floor is our estimate — the project publishes no RAM figure.

Head-to-head

More self-hosted tools

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.