# Defaults to UTC timezone time_zone: 'UTC' # Can be one of: "debug, info, warn, error, off", default is info log_level: 'info' # Delete runs from db after x days, disable with 0, default is 7 delete_runs_after_days: 7 # SQLite database directory (defaults to the same folder as this config file) # Can be set to any absolute or relative folder path db: location: '.' # SQLite database filename name: 'db.sqlite' # You can choose the following software to be included: # apprise, borgbackup, docker, git, podman, rclone, rdiff-backup, # restic, rsync, logrotate, sqlite, kopia # Refer to internal/software/software.go for the exact way it is installed # and how to change the version that will be installed here. # Recreate the docker for changes to take effect software: - name: 'git' # Terminal configuration terminal: # When set to true, any command will be allowed, # and the allowed_commands list will be ignored. allow_all_commands: false # Be careful with this, it will allow a command to be executed. # Do not allow any commands that can compromise the system! allowed_commands: cat: args: - /config/config.yaml docker: args: - ps - version restic: args: - version export: # Do not check for arguments, allow all arguments allow_all_args: true # Server configuration server: # Defaults to 0.0.0.0 to be accessible outside docker address: '0.0.0.0' # Defaults to 8156 port: 8156 # Healthcheck configuration healthcheck: # Use authorization header authorization: '...' # Change HTTP method, defaults to POST type: 'POST' # Healthcheck phases, start, end, and failure # each has a url, query params, and body that is sent start: url: https://status.example.com params: success: true body: '{"foo": "bar"}' end: url: https://status.example.com params: success: true body: '{"foo": "bar"}' failure: url: https://status.example.com params: success: false error: 'Backup failed' body: '{"foo": "bar"}' # Defines default values that are applied to all jobs # Here you can define commands that will be executed before and after the job job_defaults: cron: '0 3 * * 0' # Optional: abort any single command after this duration (e.g. '30s', '5m') # timeout: '30s' # Optional: retry each failing command up to N times (0 = no retries) # retries: 2 envs: - key: SLEEP_TIME value: '5' pre_commands: - echo "Starting backup..." post_commands: - echo "Backup finished!" # Job configuration # Multiple jobs can be defined # They will be executed in sequence jobs: - name: 'Example Scheduled Happy Path' # Runs automatically and demonstrates a clean successful job cron: '0 5 * * 0' # Stop immediately on first failing command (default behavior) disable_fail_fast: false # Commands run in order commands: - echo "start" - date - echo "done" - name: 'Example Continue On Failure' # Runs automatically and continues even after a failing command cron: '15 5 * * 0' disable_fail_fast: true commands: - echo "before fail" - false - echo "continues" - name: 'Example Env Expansion' # Demonstrates per-job environment variables and ${VAR} expansion cron: '30 5 * * 0' envs: - key: TEST_VALUE value: 'default-value' commands: - echo "value=${TEST_VALUE}" - name: 'Example Timeout And Retries' # Demonstrates per-command timeout and retry behavior cron: '45 5 * * 0' # Abort any single command that runs longer than 30s timeout: '30s' # Retry each failing command up to 2 times (3 total attempts) retries: 2 commands: - echo "timeout and retries configured" - name: 'Example Manual Long Running' # Only runs when triggered manually disable_cron: true commands: - sleep 5 - echo "manual done"