Layer 3 · self-hosting reality check
What it actually takes to self-host Gatus
The docs say Not stated by the vendor. It is a single Go binary. The author's own Helm chart suggests a 32 Mi memory limit in a commented-out example.. In practice you want A small slice of a server you already run. The author's Helm example caps it at 32 Mi. Only add PostgreSQL's footprint if you pick Postgres storage over SQLite.. Here is the honest version — real requirements, real monthly cost, what you will be maintaining, and the one thing that catches people out.
Usually reached from Pingdom alternatives, where Gatus is one of the picks.
Wondering whether you need to at all? Is Pingdom free? — what the free tier actually allows, and where the wall is.
| RAM — documented minimum | Not stated by the vendor. It is a single Go binary. The author's own Helm chart suggests a 32 Mi memory limit in a commented-out example. |
|---|---|
| RAM — what it really needs | A small slice of a server you already run. The author's Helm example caps it at 32 Mi. Only add PostgreSQL's footprint if you pick Postgres storage over SQLite. |
| CPU | A fraction of a core. The Helm example requests 50m and limits it to 100m. |
| Disk | Tiny: a SQLite file. The Helm chart's default persistent volume is 200 Mi, and Gatus keeps a capped number of results per endpoint (100 by default). |
| Monthly cost | $0 on a box you already run, or $6–7/mo for the smallest VPS. Ideally that box sits outside the infrastructure it watches. |
| Setup time | 15 minutes for the container, plus an hour to write the YAML for your endpoints and alerts. |
| How you install it | `docker run` with ghcr.io/twin/gatus:stable and a config folder mounted at /config (or `go install`, or the Helm chart). Endpoints, conditions and alerts all live in config.yaml. |
| Ongoing maintenance | Low. There are a few releases a year (v5.34 in January, v5.35 in February, v5.36 in May, v5.37 in September 2026). Config edits reload automatically, but by default Gatus exits on an invalid edit, so check the log after every change. |
| Where it stops scaling | Large dashboards on one instance. The README offers write-through caching (`storage.caching`) with SQLite or Postgres specifically for big dashboards, and Postgres storage lets the history outlive the host. |
The thing that catches people out
Out of the box, Gatus keeps everything in memory, and its README says that data will not survive a restart. On top of that, Gatus reloads its YAML automatically, and without file storage a config edit is effectively a restart. Every endpoint you add wipes the uptime history on your status page. The README's one-line Docker example mounts the single config file, and the same README warns that reloads may then not be detected. On day one, set `storage.type: sqlite` with a path on a mounted volume, and mount the config folder instead of the file.
When not to self-host Gatus
You want to add monitors by clicking in a web page rather than editing YAML; Uptime Kuma is built for that. Gatus also checks only from where it runs, so probing from several regions means running several instances and comparing their results yourself.
Every guide here carries this section. A site that only ever tells you to self-host is selling something — the useful answer is sometimes no.
Other Layer 3 self-hosting guides
Common questions
- How much RAM does Gatus actually need?
- A small slice of a server you already run. The author's Helm example caps it at 32 Mi. Only add PostgreSQL's footprint if you pick Postgres storage over SQLite. in practice. The documented minimum is Not stated by the vendor. It is a single Go binary. The author's own Helm chart suggests a 32 Mi memory limit in a commented-out example., which is the figure at which the process starts rather than the figure at which it works under real use. A fraction of a core. The Helm example requests 50m and limits it to 100m. alongside it.
- What does self-hosting Gatus cost per month?
- $0 on a box you already run, or $6–7/mo for the smallest VPS. Ideally that box sits outside the infrastructure it watches. This is commodity VPS pricing and excludes your time, which is the larger cost for most people — budget for low. There are a few releases a year (v5.34 in January, v5.35 in February, v5.36 in May, v5.37 in September 2026). Config edits reload automatically, but by default Gatus exits on an invalid edit, so check the log after every change.
- How long does it take to set up Gatus?
- 15 minutes for the container, plus an hour to write the YAML for your endpoints and alerts., via `docker run` with ghcr.io/twin/gatus:stable and a config folder mounted at /config (or `go install`, or the Helm chart). Endpoints, conditions and alerts all live in config.yaml..
- When should I NOT self-host Gatus?
- You want to add monitors by clicking in a web page rather than editing YAML; Uptime Kuma is built for that. Gatus also checks only from where it runs, so probing from several regions means running several instances and comparing their results yourself.
- What is the most common mistake when self-hosting Gatus?
- Out of the box, Gatus keeps everything in memory, and its README says that data will not survive a restart. On top of that, Gatus reloads its YAML automatically, and without file storage a config edit is effectively a restart. Every endpoint you add wipes the uptime history on your status page. The README's one-line Docker example mounts the single config file, and the same README warns that reloads may then not be detected. On day one, set `storage.type: sqlite` with a path on a mounted volume, and mount the config folder instead of the file.