Docker-watchdog with per-container restart rules, Gotify/Pushover notifications, and an embedded dashboard + web settings page. See README.md for an overview and INSTALL.md for the Docker quickstart.
138 lines
4.1 KiB
YAML
Executable File
138 lines
4.1 KiB
YAML
Executable File
# Inspector example configuration.
|
|
# Copy to config.yml, edit, and mount into the container at /app/config.yml.
|
|
|
|
inspector:
|
|
interval_seconds: 60
|
|
log_level: INFO
|
|
dry_run: false
|
|
log_dir: /app/logs
|
|
log_filename: inspector.log
|
|
log_retention_days: 30
|
|
heartbeat: false
|
|
|
|
notifications:
|
|
# Gotify: https://gotify.net
|
|
gotify:
|
|
enabled: false
|
|
url: ""
|
|
token: ""
|
|
priority: 5
|
|
|
|
# Pushover: https://pushover.net
|
|
# Independent of Gotify — enable either, both, or neither. If both are
|
|
# enabled, every alert is sent to both. Inspector's priority is an
|
|
# integer on a Gotify-style scale (default 5) and is mapped to
|
|
# Pushover's -2..2 range at send time: <=2 -> -1, 3..4 -> 0,
|
|
# 5..6 -> 1, >=7 -> 2.
|
|
pushover:
|
|
enabled: false
|
|
token: "" # Pushover application API token
|
|
user_key: "" # Pushover user or group key
|
|
priority: 5
|
|
device: "" # optional target device; blank = all devices
|
|
sound: "" # optional sound name; blank = user default
|
|
|
|
# Persist a durable per-container event history to a local SQLite DB.
|
|
# Enables the /events page and the Health summary digest.
|
|
database:
|
|
enabled: false
|
|
path: /app/data/events.db
|
|
retention_days: 30
|
|
|
|
# Periodic digest of per-container events, delivered through the enabled
|
|
# notification channels. Requires database.enabled: true to have data.
|
|
health_summary:
|
|
enabled: false
|
|
interval_hours: 24
|
|
priority: 3
|
|
|
|
# Recurring daily maintenance window. Containers that opt in with
|
|
# `maintenance_window: true` are not acted on during this window.
|
|
maintenance:
|
|
enabled: false
|
|
start: "00:00"
|
|
end: "06:00"
|
|
dir: /app/data/maintenance
|
|
max_hours: 8
|
|
|
|
# Manual notification muting per container (toggled from the dashboard).
|
|
notification_mute:
|
|
enabled: false
|
|
dir: /app/data/muted
|
|
default_hours: 12
|
|
|
|
# Embedded web dashboard. Enable with a non-empty password.
|
|
# Visit http://<host>:<port>/ for status, /events for history,
|
|
# /settings to edit this file from the browser.
|
|
dashboard:
|
|
enabled: false
|
|
host: 0.0.0.0
|
|
port: 8080
|
|
username: admin
|
|
password: ""
|
|
|
|
# Optional external integrations.
|
|
integrations:
|
|
# Uptime Kuma: optionally use a public status page as an extra
|
|
# reachability check per container.
|
|
uptime_kuma:
|
|
enabled: false
|
|
url: "https://status.example.com"
|
|
status_page_slug: "default"
|
|
|
|
# Portainer API integration: used by the advanced recovery actions
|
|
# `portainer_stack_redeploy` and `restart_then_redeploy`, which can
|
|
# recover containers whose network namespace is tied to a VPN sidecar.
|
|
# Leave disabled unless you need it.
|
|
#
|
|
# Token options (pick one per environment):
|
|
# api_token_env: "ENV_VAR_NAME" — reads token from that env var at
|
|
# runtime (preferred; not stored in config)
|
|
# api_token: "ptr_..." — embed token directly in this file
|
|
portainer:
|
|
enabled: false
|
|
default_environment: local_docker
|
|
stack_redeploy_cooldown_seconds: 300
|
|
post_redeploy_wait_seconds: 90
|
|
environments:
|
|
local_docker:
|
|
base_url: "http://portainer.example.local:9000"
|
|
api_token_env: "PORTAINER_API_TOKEN"
|
|
endpoint_id: 1
|
|
verify_ssl: false
|
|
|
|
containers:
|
|
# Minimal entry: Inspector only acts on containers listed here.
|
|
# Each key is the Docker container name on your host.
|
|
example-web:
|
|
enabled: true
|
|
max_error_count: 5
|
|
cooldown_seconds: 300
|
|
grace_period_seconds: 120
|
|
max_restarts_per_hour: 3
|
|
restart_on:
|
|
- UNHEALTHY
|
|
- NOT RUNNING
|
|
- ERROR
|
|
|
|
# Example with an opt-in HTTP reachability check. Useful when Docker
|
|
# reports a container as healthy but it's not actually serving
|
|
# requests (common with VPN-routed containers whose tunnel drops).
|
|
example-api:
|
|
enabled: true
|
|
max_error_count: 5
|
|
cooldown_seconds: 300
|
|
grace_period_seconds: 120
|
|
max_restarts_per_hour: 3
|
|
color: "#60a5fa"
|
|
restart_on:
|
|
- UNHEALTHY
|
|
- NOT RUNNING
|
|
- ERROR
|
|
- UNREACHABLE
|
|
http_check:
|
|
enabled: true
|
|
url: "http://example-api:8080/health"
|
|
timeout_seconds: 5
|
|
expected_status: 200
|