---
gatus_svc:
  domain: "{{ all_services | service_get_domain(role_name) }}"
  port: 8080

gatus_external_endpoints_backups: "{{ vault_hosts | vault_hosts_backup_to_gatus() }}"

gatus_endpoints_hosts: "{{ opentofu.hosts | hosts_to_gatus() }}"
gatus_endpoints_services: "{{ all_services | services_to_gatus() }}"

gatus_federation_tester: "https://federationtester.matrix.org/api/report?server_name=msrg.cc"

gatus_endpoints_other:
  - name: matrix-federation
    url: "{{ gatus_federation_tester }}"
    group: 9-external
    interval: 5m
    conditions:
      - '[STATUS] == 200'
      - '[BODY].FederationOK == true'
    ui:
      hide-url: true
    alerts:
      - type: ntfy
        send-on-resolved: true
      - type: email
        send-on-resolved: true
  - name: healthchecks-io
    url: "{{ opentofu.healthchecksio.status.ping_url }}"
    group: 9-external
    interval: 5m
    conditions:
      - '[STATUS] == 200'
    ui:
      hide-url: true

gatus_yml:
  storage:
    type: sqlite
    path: /data/data.db

  connectivity:
    checker:
      target: 1.1.1.1:53
      interval: 60s

  ui:
    buttons:
      - name: Matrix Federation Tester
        link: "{{ gatus_federation_tester }}"

  alerting:
    email: "{{ vault_gatus.alerting.email }}"
    ntfy: "{{ vault_gatus.alerting.ntfy }}"

  external-endpoints: "{{ gatus_external_endpoints_backups }}"
  endpoints: "{{ gatus_endpoints_hosts | union(gatus_endpoints_services) | union(gatus_endpoints_other) }}"

gatus_compose:
  watchtower: update
  image: twinproduction/gatus
  volumes:
    - ./config.yaml:/config/config.yaml
    - data:/data
  file:
    volumes:
      data: