# 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://:/ 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