Skip to content

Self-host Zabbix

prices checked · Aug 2026

Enterprise-grade infrastructure monitoring covering agents, SNMP, IPMI, JMX and agentless checks, with templates, network auto-discovery, escalation-aware alerting and long-term trend storage. It is a server, a database, a PHP frontend and agents — not a single container you start and forget.

Datadog / yr$180
Self-hosted / yr~$55
You keep$125/yr
Pocket the difference — spin it up on a cheap VPS in minutes.Start free on Kamatera →

Key facts

CategoryMonitoring
LicenseAGPL-3.0
StackC, PHP, MySQL
Min RAM4096 MB
Dockeryes
Difficulty
Our recommendation

Zabbix is the pick when you genuinely need enterprise monitoring: SNMP, IPMI and JMX alongside agents, templates, network auto-discovery, escalation chains, proxies for remote sites and long-term trend storage. It earns all of that at scale, and only at scale. For a handful of servers it is cost without payoff — Beszel gives you the graphs in one command, Uptime Kuma covers endpoints, and neither asks you to stand up a database server, a PHP frontend and a web server before the first chart appears.

What you need

  • Any VPS with at least 4096 MB of RAM
  • A domain you control — most self-hosted setups need HTTPS in front of them
  • About the better part of a day

Install

Run these commands on your server:

# Zabbix — upstream ships packages from its own apt repo, not a one-liner container.
sudo apt install -y mysql-server
. /etc/os-release && wget https://repo.zabbix.com/zabbix/7.4/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest+ubuntu${VERSION_ID}_all.deb
sudo dpkg -i zabbix-release_latest+ubuntu${VERSION_ID}_all.deb && sudo apt update
sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
sudo mysql -e "create database zabbix character set utf8mb4 collate utf8mb4_bin; create user zabbix@localhost identified by 'CHANGEME'; grant all privileges on zabbix.* to zabbix@localhost;"
zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
# set DBPassword in /etc/zabbix/zabbix_server.conf, then uncomment the listen
# and server_name lines in /etc/zabbix/nginx.conf before starting anything
sudo systemctl enable --now zabbix-server zabbix-agent nginx
sudo systemctl restart "php*-fpm"   # unit name tracks whatever PHP your distro ships
# →  http://SERVER_IP:8080 for the frontend setup wizard

What you take on

Zabbix is the heaviest thing in this category by a wide margin, and the weight is structural rather than incidental:

non-negotiableIt is a package install, not a container you start and forget. Upstream ships from its own apt repository: server, frontend, SQL scripts and agent are separate packages, the schema is loaded by hand, and DBPassword, the nginx vhost and PHP-FPM all need editing before anything starts. Official images exist, but they split the same components across separate containers rather than removing any of them.
non-negotiableThe database is the real workload, and sizing it is your job. Upstream publishes sizing examples against a metric count, not a floor you can just meet — plan capacity, retention and housekeeping against your own estate, and back that database up, because it holds every template, host and hour of history you have.
non-negotiableEvery host needs an agent, and the concepts run deep. Items, triggers, templates, actions and escalations are genuinely powerful and a genuine learning curve — budget the time to model your estate properly, or you will end up operating a very expensive ping check.

An alternative to

Head-to-head

More in Monitoring

Common questions

Is Zabbix overkill for a handful of servers?

Usually, yes. It wants a database server, a PHP frontend, a web server and an agent on every host before it shows you a single graph, and its payoff — templates, network auto-discovery, escalation chains, proxies for remote sites — only appears at scale. For three boxes, Beszel or Netdata gets you there in one command.

Can I run Zabbix in Docker?

Yes — upstream publishes official images and Compose files, and the documentation has a whole section on container installs. It is not the easier path, though: the components stay split across separate server, frontend, database and agent images, so you trade package management for orchestration rather than avoiding the complexity.

Which database does Zabbix need?

MySQL, MariaDB, Percona Server or PostgreSQL — and you pick at install time, since the package name encodes it (zabbix-server-mysql versus zabbix-server-pgsql). One constraint catches people out: the Zabbix server and a Zabbix proxy cannot share a database, so give them separate names if they land on the same host.

How much RAM does a Zabbix server need?

More than a container-sized uptime checker, and most of it goes to the database. Upstream's smallest published sizing example is 2 CPU cores and 8 GiB of memory for roughly a thousand monitored metrics. A lab install watching a few hosts runs comfortably in far less, but size it against your metric count, not against Uptime Kuma.

Search SelfHost Atlas

Search apps, comparisons, guides, and categories.

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