Install Gatus on AlmaLinux 10

By Anurag Singh

Updated on Nov 18, 2025

Install Gatus on AlmaLinux 10

In this tutorial, we'll learn how to Install Gatus on AlmaLinux 10 using Docker with step-by-step guide.

Service uptime isn’t optional anymore. Whether you’re running APIs, microservices, websites, or internal infrastructure, you need a fast and reliable monitoring tool that tells you what’s down before your users do.

Gatus delivers exactly that: a lightweight, flexible monitoring solution that tracks uptime, latency, certificates, ports, DNS, and more. It’s simple, efficient, and runs beautifully using Docker.

This tutorial gives you a complete, production-ready setup of Gatus on AlmaLinux 10 using Docker, with real configurations, alerts, reverse proxy, SSL, troubleshooting, and best practices.
Ideal for DevOps engineers, system administrators, data center operators, and cloud hosting providers.

Introduction to Gatus

Gatus is an open-source, single-binary monitoring tool designed for speed and simplicity. It pulls no magic tricks behind the curtain. You define endpoints in a YAML file, run the service, and get instant uptime checks and alerts.

Key features

  • HTTP, TCP, DNS, ICMP checks
  • Beautiful web dashboard
  • Slack, Discord, Email & Webhook alerts
  • SSL certificate expiry monitoring
  • Very lightweight
  • Zero dependency beyond Docker
  • Production-ready with reverse proxy and HTTPS

Prerequisites

Before we begin, ensure we have the following:

  • An AlmaLinux 10 dedicate server or KVM VPS.
  • Basic Linux Command Line Knowledge.
  • A domain name, pointing A record to server IP.

How to Install Gatus on AlmaLinux 10 using Docker

1. Install Docker 

Set up the repository

sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

To install the latest version, run:

sudo dnf install docker-ce

Enable Docker

sudo systemctl enable --now docker

Verify:

docker --version
docker compose --version

2. Configure Gatus for Health Monitoring

  • You will run Gatus using Docker.
  • Create your directory structure:
sudo mkdir -p /opt/gatus
sudo mkdir -p /opt/gatus/config
sudo nano /opt/gatus/config/config.yaml

Add following basic config.yaml Example:

port: 8080

endpoints:
  - name: Google
    url: "https://google.com"
    interval: 60s
    conditions:
      - "[STATUS] == 200"
      - "[LATENCY] < 1000"

Adding API and Service Endpoints:

port: 8080

metrics: true

endpoints:
  - name: Production Website
    group: public-sites
    url: "https://example.com"
    interval: 60s
    conditions:
      - "[STATUS] == 200"
      - "[CERTIFICATE_EXPIRATION] > 72h"
      - "[LATENCY] < 800"

  - name: Backend API
    group: internal-api
    url: "https://api.example.com/health"
    interval: 30s
    conditions:
      - "[STATUS] == 200"
      - "[BODY].status == 'ok'"

  - name: PostgreSQL TCP Check
    group: database
    url: "tcp://127.0.0.1:5432"
    interval: 30s
    conditions:
      - "[CONNECTED] == true"

  - name: DNS Check
    url: "dns://example.com?type=A"
    interval: 60s
    conditions:
      - "[DNS_ANSWER] != ''"

  - name: Ping Check
    url: "icmp://8.8.8.8"
    interval: 60s
    conditions:
      - "[SUCCESS] == true"

3. Run Gatus Using Docker Compose

Create the compose file:

sudo nano /opt/gatus/docker-compose.yml

Paste:

services:
  gatus:
    image: ghcr.io/twin/gatus:latest
    container_name: gatus
    volumes:
      - /opt/gatus/config:/config
    ports:
      - "8080:8080"
    restart: unless-stopped

Start the service:

cd /opt/gatus
sudo docker compose up -d

Check logs:

sudo docker compose logs -f

Configure Alerting (Slack, Discord, Email, Webhooks)

Slack Example

alerting:
  slack:
    webhook-url: "https://hooks.slack.com/services/AAA/BBB/CCC"

Discord Example

alerting:
  discord:
    webhook-url: "https://discord.com/api/webhooks/XYZ"

Email Example (SMTP)

alerting:
  email:
    from: "alerts@example.com"
    to: "ops@example.com"
    smtp:
      host: smtp.example.com
      port: 587
      username: user
      password: pass

Webhook Example

alerting:
  custom:
    url: "https://webhook.site/1234"

5. Secure Gatus with Nginx Reverse Proxy

If you want HTTPS and domain access such as:

https://monitor.example.com

Follow these steps.

Install Nginx

sudo dnf install nginx -y

Start and enable Nginx service:

sudo systemctl enable --now nginx

Create Reverse Proxy Config

sudo vi /etc/nginx/conf.d/gatus.conf

Insert:

server {
    listen 80;
    server_name monitor.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Enable site:

sudo nginx -t
sudo systemctl restart nginx

6. Enable HTTPS Using Let’s Encrypt

Firewall Rules

firewall-cmd --add-port={80,443}/tcp --permanent
firewall-cmd --reload

Configure SELinux

sudo setsebool -P httpd_can_network_connect 1

Install Certbot and obtain certificate:

sudo dnf install certbot python3-certbot-nginx -y
sudo certbot --nginx -d monitor.example.com
 

7. Accessing the Gatus Dashboard

With domain:

https://monitor.example.com

Dashboard shows:

  • Service uptime
  • Latency graphs
  • Certificate expiry time
  • Endpoint health
  • Alert statuses

Troubleshooting

Gatus container not starting?

Check config file:

docker compose logs gatus

Nginx shows 502 Bad Gateway

Wrong proxy_pass
Gatus container not running

Alerts not triggering

  • Wrong webhook URL
  • SMTP authentication failure
  • Conditions not met (double-check syntax)

High latency

  • Network routing
  • Slow upstream service
  • DNS resolution delays

Conclusion

Using Docker, Gatus becomes one of the easiest, cleanest ways to deploy service uptime monitoring on AlmaLinux 10. With simple YAML configurations, powerful alerting features, and a fast UI, it’s ideal for any environment—from small VPS setups to large-scale cloud infrastructure.

With Docker Compose, reverse proxying, SSL, alerting, and multi-protocol checks, your monitoring stack is now production-ready.

FAQs

1. Is Docker the best way to run Gatus?
Yes. It avoids compilation issues, bundles UI assets, and guarantees consistent behavior across versions.

2. Where does Gatus store its configuration in this setup?
Inside /opt/gatus/config/config.yaml, mounted into the container as /config.

3. Can Gatus monitor internal services?
Yes. TCP, ICMP, private APIs, databases, and internal DNS are all supported.

4. Does Gatus support SSL certificate monitoring?
Yes. You can check certificate expiry with [CERTIFICATE_EXPIRATION] > 72h.

5. Can I use Gatus for public status pages?
Absolutely. Many companies use Gatus as a simple uptime dashboard.