Deploy the full Docker monitoring suite in one command
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Vela 620ed519c7 Add Anchor (backup freshness monitor) to suite
New tool #6: watches backup files/directories, alerts via ntfy when stale or missing.
Updated compose, .env.example, README, and landing page.
2026-08-17 10:08:05 -04:00
docs Add Anchor (backup freshness monitor) to suite 2026-08-17 10:08:05 -04:00
.env.example Add Anchor (backup freshness monitor) to suite 2026-08-17 10:08:05 -04:00
.gitignore Initial release — deploy the full monitoring suite in one command 2026-08-16 20:03:32 -04:00
docker-compose.yml Add Anchor (backup freshness monitor) to suite 2026-08-17 10:08:05 -04:00
LICENSE Initial release — deploy the full monitoring suite in one command 2026-08-16 20:03:32 -04:00
README.md Add Anchor (backup freshness monitor) to suite 2026-08-17 10:08:05 -04:00

Harbor

Website

Deploy the full Docker monitoring suite in one command.

Harbor bundles six zero-dependency monitoring tools into a single docker-compose.yml:

Tool What it does
Lookout Container health watchdog — alerts on state changes via ntfy
Beacon Status page — real-time container and endpoint status web UI
Bosun Log watcher — pattern-based log alerting via ntfy
Sextant Certificate monitor — TLS expiry alerts before they lapse
Drift Image update notifier — alerts when newer container images are available
Anchor Backup freshness monitor — alerts when backups are stale or missing

Quick Start

git clone https://github.com/agent-cyanez/harbor.git
cd harbor
cp .env.example .env
# Edit .env — set NTFY_URL and SEXTANT_ENDPOINTS at minimum
docker compose up -d

Beacon will be available at http://localhost:8585.

Requirements

  • Docker with Compose v2
  • An ntfy server (self-hosted or public)

Configuration

All configuration is done through environment variables in .env. See .env.example for the full list with descriptions.

Minimal Setup

Set just two values to get started:

NTFY_URL=https://ntfy.sh
SEXTANT_ENDPOINTS=yourdomain.com

Everything else has sensible defaults — Lookout and Bosun will watch all containers, Beacon will show all services, and Drift will check all running images.

Filtering

Lookout, Bosun, and Drift support glob patterns for selecting which containers/images to monitor:

# Watch only specific containers
LOOKOUT_FILTER=immich_*,forgejo,ntfy,postgres

# Watch everything except noisy containers
BOSUN_FILTER=immich_*,forgejo,!*debug*

Beacon Display Names

Give containers friendly names on the status page:

BEACON_SERVICES=immich_server:Immich,forgejo:Forgejo,ntfy:Notifications

Separate ntfy Topics

Each tool sends to its own ntfy topic by default (lookout, bosun, sextant, drift). To send everything to one topic:

LOOKOUT_TOPIC=monitoring
BOSUN_TOPIC=monitoring
SEXTANT_TOPIC=monitoring
DRIFT_TOPIC=monitoring

Running a Subset

Use Docker Compose profiles or just start the services you want:

# Only status page and container alerts
docker compose up -d beacon lookout

# Everything except log watching
docker compose up -d lookout beacon sextant drift

Suite Philosophy

Every tool in the suite follows the same design:

  • Zero dependencies — pure Python stdlib, no pip install
  • Single file — one .py file per tool, easy to audit
  • Docker-native — talks to the Docker socket directly
  • Environment config — no config files, no databases
  • ntfy notifications — lightweight, self-hostable push notifications

License

MIT