From a7d2d1b6c6a7cc9586910d7f970bb0c5bf01c59c Mon Sep 17 00:00:00 2001 From: Timo Wilken Date: Wed, 1 Nov 2023 23:12:21 +0100 Subject: Clean up old Nextcloud backups automatically --- tw/services/nextcloud.scm | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'tw/services') diff --git a/tw/services/nextcloud.scm b/tw/services/nextcloud.scm index e7952b49..f11f351e 100644 --- a/tw/services/nextcloud.scm +++ b/tw/services/nextcloud.scm @@ -9,7 +9,8 @@ #:use-module (gnu services mcron) #:use-module (gnu services web) #:use-module (guix gexp) - #:use-module (tw services)) + #:use-module (tw services) + #:use-module (tw services restic)) (define-public %nextcloud-php.ini (computed-file "nextcloud-php.ini" @@ -42,6 +43,9 @@ opcache.save_comments=1 opcache.revalidate_freq=120 ")))))))) +(define nextcloud-backup-repository "/var/backups/nextcloud") +(define nextcloud-backup-password-file "/etc/restic/lud-nextcloud") + (define nextcloud-backup-program (program-file "nextcloud-backup-command" #~(begin @@ -57,8 +61,8 @@ opcache.revalidate_freq=120 (define snapshot (string-append nextcloud-data-partition "/tmp-nextcloud-backup")) (define btrfs #$(file-append btrfs-progs "/bin/btrfs")) (define restic #$(file-append restic "/bin/restic")) - (setenv "RESTIC_REPOSITORY" "/var/backups/nextcloud") - (setenv "RESTIC_PASSWORD_FILE" "/etc/restic/lud-nextcloud") + (setenv "RESTIC_REPOSITORY" #$nextcloud-backup-repository) + (setenv "RESTIC_PASSWORD_FILE" #$nextcloud-backup-password-file) (define (nc-maintenance enable?) (let ((child-pid (primitive-fork))) @@ -205,6 +209,17 @@ Header always set Strict-Transport-Security \"max-age=15552000\" (domains '("cloud.wilkenfamily.de")) (deploy-hook %httpd-cert-deploy-hook)))) + (simple-service 'nextcloud-backup-cleanup restic-cleanup-service-type + (list (restic-scheduled-cleanup + (schedule #~"0 7 * * *") + (repo (restic-local-repository + (path nextcloud-backup-repository))) + (password (restic-password-source + (type 'file) + (name nextcloud-backup-password-file))) + (keep-daily 30) + (keep-monthly -1)))) + ;; Nextcloud cron (simple-service 'nextcloud-cron mcron-service-type (list #~(job "*/5 * * * *" -- cgit v1.2.3