Monitor Your Services with Gatus + Docker (Alternative to Uptime Kuma)
Gatus is a lightweight, open-source uptime monitoring tool that checks your endpoints, evaluates conditions, and sends alerts (Slack, Discord, etc.). Perfect for DevOps and developers who want a simple yet powerful monitoring solution. Prerequisites Docker & Docker Compose installed A Slack webhook URL (for alerts) – Get it here Step 1: Setup Directory Structure Create a folder named gatus with subfolders for configs and data: mkdir -p gatus cd gatus/ mkdir config data Your structure should look like this: gatus/ ├── docker-compose.yml ├── config/ │ └── config.yaml # Monitoring rules & alerts └── data/ # Database storage Step 2: Configure docker-compose.yml Paste this into gatus/docker-compose.yml: services: gatus: image: twinproduction/gatus:latest ports: - "7777:8080" volumes: - ./config:/config - ./data:/data/ - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro environment: - TZ=Asia/Kolkata Step 3: Configure config.yaml Edit gatus/config/config.yaml (example below checks a website and alerts via Slack): alerting: slack: webhook-url: "https://hooks.slack.com/services/................." default-alert: failure-threshold: 3 send-on-resolved: true send-on-recovery: true security: basic: username: "gatus" password-bcrypt-base64: "JDJ5JDA5JDdDb1k5UC5LMGRBdGszTTA0SHE1ZGVRdkFnTzgxTUNkemVQbXI1SjQ3eTVrNVc1Mi80ZS5L" storage: type: sqlite path: /data/data.db endpoints: - name: Buyer Panel Failed group: AWS url: "https://domain-name.com" interval: 30s conditions: - "[STATUS] == 200" - "[RESPONSE_TIME] < 1000" alerts: - type: slack description: "Buyer Panel in AWS is failed." - name: Vendor Panel Failed group: Google url: "https://domain-name.com/" interval: 30s conditions: - "[STATUS] == 200" - "[CERTIFICATE_EXPIRATION] > 48h" - "[RESPONSE_TIME] < 1000" alerts: - type: slack description: "Vendor Panel in Google is failed"

Gatus is a lightweight, open-source uptime monitoring tool that checks your endpoints, evaluates conditions, and sends alerts (Slack, Discord, etc.). Perfect for DevOps and developers who want a simple yet powerful monitoring solution.
Prerequisites
- Docker & Docker Compose installed
- A Slack webhook URL (for alerts) – Get it here
Step 1: Setup Directory Structure
Create a folder named gatus
with subfolders for configs and data:
mkdir -p gatus
cd gatus/
mkdir config data
Your structure should look like this:
gatus/
├── docker-compose.yml
├── config/
│ └── config.yaml # Monitoring rules & alerts
└── data/ # Database storage
Step 2: Configure docker-compose.yml
Paste this into gatus/docker-compose.yml
:
services:
gatus:
image: twinproduction/gatus:latest
ports:
- "7777:8080"
volumes:
- ./config:/config
- ./data:/data/
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=Asia/Kolkata
Step 3: Configure config.yaml
Edit gatus/config/config.yaml
(example below checks a website and alerts via Slack):
alerting:
slack:
webhook-url: "https://hooks.slack.com/services/................."
default-alert:
failure-threshold: 3
send-on-resolved: true
send-on-recovery: true
security:
basic:
username: "gatus"
password-bcrypt-base64: "JDJ5JDA5JDdDb1k5UC5LMGRBdGszTTA0SHE1ZGVRdkFnTzgxTUNkemVQbXI1SjQ3eTVrNVc1Mi80ZS5L"
storage:
type: sqlite
path: /data/data.db
endpoints:
- name: Buyer Panel Failed
group: AWS
url: "https://domain-name.com"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 1000"
alerts:
- type: slack
description: "Buyer Panel in AWS is failed."
- name: Vendor Panel Failed
group: Google
url: "https://domain-name.com/"
interval: 30s
conditions:
- "[STATUS] == 200"
- "[CERTIFICATE_EXPIRATION] > 48h"
- "[RESPONSE_TIME] < 1000"
alerts:
- type: slack
description: "Vendor Panel in Google is failed"