--- general: db: # The database URL, as defined in SQLAlchemy docs : # https://docs.sqlalchemy.org/en/20/core/engines.html#database-urls # Example for SQLite: "sqlite:////tmp/argos.db" url: "postgresql://argos:argos@localhost/argos" # You configure the size of the database pool of connection, and # the max overflow (until when new connections are accepted ?) # For details, see # https://docs.sqlalchemy.org/en/20/core/pooling.html#sqlalchemy.pool.QueuePool.params.pool_size pool_size: 10 max_overflow: 20 # Can be "production", "dev", "test". # If not present, default value is "production" env: "production" # to get a good string for cookie_secret, run: # openssl rand -hex 32 cookie_secret: "foo_bar_baz" # Default delay for checks. # Can be superseeded in domain configuration. # For ex., to run checks every minute: frequency: "1m" # Which way do you want to be warned when a check goes to that severity? # "local" emits a message in the server log # You’ll need to configure mail and gotify below to be able to use them here. alerts: ok: - local warning: - local critical: - local unknown: - local # Argos root path # If not present, default value is "" # Set it to /foo if you want to use argos at /foo/ instead of / # on your web server # root_path: "/foo" # Mail configuration is quite straight-forward # mail: # mailfrom: no-reply@example.org # host: 127.0.0.1 # port: 25 # ssl: False # starttls: False # auth: # login: foo # password: bar # addresses: # - foo@admin.example.org # - bar@admin.example.org # Create an app on your Gotify server and put its token here # See https://gotify.net/ for details about Gotify # gotify: # - url: https://example.org # tokens: # - foo # - bar service: secrets: # Secrets can be generated using `argos server generate-token`. # You need at least one. Write them as a list, like: # - secret_token ssl: thresholds: - "1d": critical - "5d": warning # It's also possible to define the checks in another file # with the include syntax: # # websites: !include websites.yaml # websites: - domain: "https://mypads.example.org" paths: - path: "/mypads/" checks: # Check that the returned HTTP status is 200 - status-is: 200 # Check that the response contains this string - body-contains: '
' # Check that the SSL certificate is no older than ssl.thresholds - ssl-certificate-expiration: "on-check" # Check that the response contains this headers # The comparison is case insensitive - headers-contain: - "content-encoding" - "content-type" - path: "/admin/" checks: # Check that the return HTTP status is one of those # Similar to status-is, verify that you don’t mistyped it! - status-in: - 401 - 301 # Check that the response contains this headers and values # It’s VERY important to respect the 4 spaces indentation here! # The name of the headers is case insensitive - headers-have: content-encoding: "gzip" content-type: "text/html" - path: "/my-stats.json" checks: # Check that JSON response contains the expected structure - json-contains: - /foo/bar/0 - /foo/bar/1 - /timestamp # Check that JSON response contains the expected structure and values # It’s VERY important to respect the 4 spaces indentation here! - json-has: /maintenance: false /productname: "Nextcloud" # Check that JSON response is the exact expected JSON object # The order of the items in the object does not matter. - json-is: '{"foo": "bar", "baz": 42}' - domain: "https://munin.example.org" frequency: "20m" paths: - path: "/" checks: - status-is: 301 - path: "/munin/" checks: - status-is: 401