bob/roles/restic/templates/docker-compose.yaml.j2
Marty Oehme fab6f5ff7c
restic: Add notification
Notifies double for each prune/check run which may need to be fixed.
Also custom notification contents cannot currently be passed.

Lastly, we should put identifying information into the notification body
(such as the hostname/container name for which the notification is
relevant).
2025-07-18 21:37:05 +02:00

94 lines
3.1 KiB
Django/Jinja

services:
prune:
image: "mazzolino/restic:{{ restic_version }}"
hostname: docker
networks:
- restic_notify
depends_on:
- notify_exit
environment:
TZ: "{{ restic_tz }}"
SKIP_INIT: "{{ not restic_auto_init }}"
RUN_ON_STARTUP: "true"
PRUNE_CRON: "{{ restic_prune_cron }}"
RESTIC_FORGET_ARGS: "{{ restic_forget_args }}"
RESTIC_REPOSITORY: "{{ restic_repo }}"
RESTIC_PASSWORD: "{{ restic_pass }}"
AWS_ACCESS_KEY_ID: "{{ restic_s3_key }}"
AWS_SECRET_ACCESS_KEY: "{{ restic_s3_secret }}"
{% if restic_notify_success != None %}
POST_COMMANDS_SUCCESS: |-
curl -X POST --data "{\"title\": \"Restic Prune successful\", \"body\": \" \"}" http://notify_success:5000
{% endif %}
{% if restic_notify_failure != None %}
POST_COMMANDS_FAILURE: |-
curl -X POST --data "{\"title\": \"Restic Prune failed\", \"body\": \" \"}" http://notify_failure:5000
{% endif %}
{% if restic_notify_exit != None %}
POST_COMMANDS_EXIT: |-
curl -X POST --data "{\"title\": \"Restic Prune exited\", \"body\": \" \"}" http://notify_exit:5000
{% endif %}
{% if restic_repo is regex('^/.+') %}
volumes:
- "{{ restic_repo }}:{{ restic_repo }}"
{% endif %}
check:
image: "mazzolino/restic:{{ restic_version }}"
hostname: docker
networks:
- restic_notify
environment:
- "TZ={{ restic_tz }}"
- "SKIP_INIT=true" # only run init on one container to avoid race cond
- "RUN_ON_STARTUP=false"
- "CHECK_CRON={{ restic_check_cron }}"
- "RESTIC_CHECK_ARGS={{ restic_check_args }}"
- "RESTIC_REPOSITORY={{ restic_repo }}"
- "RESTIC_PASSWORD={{ restic_pass }}"
- "AWS_ACCESS_KEY_ID={{ restic_s3_key }}"
- "AWS_SECRET_ACCESS_KEY={{ restic_s3_secret }}"
{% if restic_notify_success != None %}
POST_COMMANDS_SUCCESS: |-
curl -X POST --data "{\"title\": \"Restic Check successful\", \"body\": \" \"}" http://notify_success:5000
{% endif %}
{% if restic_notify_failure != None %}
POST_COMMANDS_FAILURE: |-
curl -X POST --data "{\"title\": \"Restic Check failed\", \"body\": \" \"}" http://notify_failure:5000
{% endif %}
{% if restic_notify_exit != None %}
POST_COMMANDS_EXIT: |-
curl -X POST --data "{\"title\": \"Restic Check exited\", \"body\": \" \"}" http://notify_exit:5000
{% endif %}
{% if restic_repo is regex('^/.+') %}
volumes:
- "{{ restic_repo }}:{{ restic_repo }}"
{% endif %}
{% if restic_notify_success != None %}
notify_success:
image: mazzolino/apprise-microservice:latest
networks:
- restic_notify
environment:
NOTIFICATION_URLS: {{ restic_notify_success }}
{% endif %}
{% if restic_notify_failure != None %}
notify_failure:
image: mazzolino/apprise-microservice:latest
networks:
- restic_notify
environment:
NOTIFICATION_URLS: {{ restic_notify_failure }}
{% endif %}
{% if restic_notify_exit != None %}
notify_exit:
image: mazzolino/apprise-microservice:latest
networks:
- restic_notify
environment:
NOTIFICATION_URLS: {{ restic_notify_exit }}
{% endif %}
networks:
restic_notify: