diff --git a/modules/web01/borgbackup.nix b/modules/web01/borgbackup.nix new file mode 100644 index 0000000..d298076 --- /dev/null +++ b/modules/web01/borgbackup.nix @@ -0,0 +1,64 @@ +{ config, ... }: { + # 100GB storagebox is under the nix-community hetzner account + + # $ nix run nixpkgs#xkcdpass -- -d '-' -n 3 -C capitalize "$@" + sops.secrets.hetzner-borgbackup-ssh = { }; + # $ ssh-keygen -t ed25519 -N "" -f /tmp/ssh_host_ed25519_key + sops.secrets.hetzner-borgbackup-passphrase = { }; + + systemd.services.borgbackup-job-nixpkgs-update.serviceConfig.ReadWritePaths = [ + "/var/log/telegraf" + ]; + + services.borgbackup.jobs.clan-lol = { + paths = [ + "/home" + "/var" + "/root" + ]; + exclude = [ + "*.pyc" + "/home/*/.direnv" + "/home/*/.cache" + "/home/*/.cargo" + "/home/*/.npm" + "/home/*/.m2" + "/home/*/.gradle" + "/home/*/.opam" + "/home/*/.clangd" + "/var/lib/containerd" + # already included in database backup + "/var/lib/postgresql" + # not so important + "/var/lib/docker/" + "/var/log/journal" + "/var/cache" + "/var/tmp" + "/var/log" + ]; + repo = "u359378@u359378.your-storagebox.de:/./borgbackup"; + encryption = { + mode = "repokey"; + passCommand = "cat ${config.sops.secrets.hetzner-borgbackup-passphrase.path}"; + }; + compression = "auto,zstd"; + startAt = "daily"; + environment.BORG_RSH = "ssh -oPort=23 -i ${config.sops.secrets.hetzner-borgbackup-ssh.path}"; + preHook = '' + set -x + ''; + + postHook = '' + cat > /var/log/telegraf/borgbackup-clan-lol <