Analytics cookies only (Google Analytics, PostHog). No ad networks, no cross-site tracking. See our privacy policy.
AH
Self-host Apache HertzBeat
updated Oct 2026deployed by usprices checked · Jul 2026Install verified on Ubuntu 26.04 · Oct 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →
An agentless real-time monitoring system: it polls applications, databases, servers, middleware, networks and cloud-native services over HTTP, JMX, SSH, SNMP, JDBC and Prometheus, with configurable alert rules and notifications, status pages and optional collector clusters. Apache-2.0 Java; the single-container image bundles an H2 database and needs no external service.
Runs on a VPS from $12/mo (Kamatera 4GB, 4 GB RAM) · prices checked Sep 2026
Our recommendation
Pick HertzBeat when you want to monitor many kinds of things from one place without installing an agent on any of them: you add a target in the web UI, choose a template (website, MySQL, Redis, Linux over SSH, Kubernetes, a Prometheus endpoint and many more), set thresholds, and it alerts to the channels you configure. Monitoring types are YAML templates you can edit online, and separate collectors can be deployed in other networks and report back to the main server. It is an Apache Software Foundation project under Apache-2.0. Our snippet is the docs' one-container install in Compose form, with the image pinned to a release tag. We did not find an upstream RAM minimum, so our 2 GB floor is an estimate; it is a Java application and the measurement on this page is what a fresh start uses. The catalog's Zabbix is the long-established heavier alternative and Gatus is the lean YAML status checker; HertzBeat sits between them, with a web UI and no agents.
What you need
Any VPS with at least 2048 MB of RAM
A domain you control — most self-hosted setups need HTTPS in front of them
Paid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Apache HertzBeat — agentless monitoring with alerts and a status page — based on the "Install HertzBeat via Docker" docs, pinned to 1.9.0cat > docker-compose.yml <<'EOF'services: hertzbeat: image: apache/hertzbeat:1.9.0 restart: unless-stopped volumes: - hertzbeat_data:/opt/hertzbeat/data - hertzbeat_logs:/opt/hertzbeat/logs ports: - 1157:1157 - 1158:1158volumes: hertzbeat_data: hertzbeat_logs:EOFdocker compose up -dtimeout 240 bash -c 'until curl -fsS http://localhost:1157/ >/dev/null; do sleep 5; done'# → http://SERVER_IP:1157 — sign in as admin / hertzbeat and change the password
HertzBeat's Docker docs and README flag these before you rely on the single container:
non-negotiableThe docs say this install is for trying HertzBeat with no external services and is not recommended for production; they point to Docker Compose, the installation package or Kubernetes for that. The single container keeps its H2 database file in /opt/hertzbeat/data, which our hertzbeat_data volume holds, so back that up and expect to move to the Compose deployment (with a real database) before it becomes important.
non-negotiableThe default account is admin with the password hertzbeat, and it works the moment the page loads. Accounts are defined in a sureness.yml file, which the docs show how to mount; change the password before exposing port 1157, which is plain HTTP.
non-negotiablePort 1158 is the cluster port that remote collectors connect to. If you run no external collectors, do not publish it to the internet; our compose maps it because the docs' command does, so drop that line for a single-server setup.
non-negotiableThe docs' command uses the unpinned apache/hertzbeat image (with a quay.io/tancloud/hertzbeat mirror for slow networks), and we pin an exact release tag. Upgrading is a tag bump plus docker compose up -d; read the release notes first.