Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


    Cloudron Forum

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular

    Tutorial: remote backup of local Cloudron backup snapshots with restic / rclone

    Discuss
    restic rclone backups
    3
    5
    81
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • necrevistonnezr
      necrevistonnezr last edited by necrevistonnezr

      As suggested here, I turned my old post into a separate topic:

      This is what I use for remote backups of my local Cloudron backup snapshots (done by rsync) via restic / rclone to Onedrive.

      restic is a robust backup solution for incremental, encrypted, mountable(!) backups to local and remote storage. rclone, an equally robust sync software, is just a "transporter tool" that expands the available remote storages by a lot.

      Maybe it can be a starting point and some inspiration for your personal needs.

      Tools

      • rclone: https://rclone.org/docs/
      • restic: https://restic.readthedocs.io/en/stable/030_preparing_a_new_repo.html#other-services-via-rclone
      • ssmtp: https://wiki.archlinux.org/title/SSMTP

      Installation

      • Install tools above via apt
      • afterwards update to latest version (repo versions are old): sudo restic self-update && sudo rclone selfupdate

      Setup rclone

      • Enter an interactive setup process via rclone config
      • in my case I use Onedrive as it has 1TB of space coming with my Office 365 subscription
      • for the rest of this summary, we assume you gave it the repository name "REPOSITORY"
      • details at https://rclone.org/commands/rclone_config/

      Setup restic

      • set up a backup repository restic -r rclone:REPOSITORY init
      • for a subfolder on onedrive just use restic -r rclone:REPOSITORY:subfolder init
      • save password that you gave the repository in file /home/USER/resticpw
      • details at https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#other-services-via-rclone

      Setup SSMTP

      • for receiving backup results, otherwise not needed
      • See https://wiki.archlinux.org/title/SSMTP

      Cloudron Backup settings

      • Provider: mountpoint
      • Location: /media/CloudronBackup (<-- obviously adjust to your settings)
      • this creates a snapshot at /media/CloudronBackup/snapshot for the current backup
      • Storage Format: rsync
      • Adjust schedule and retention to your liking

      Backup, Prune and Check scripts

      restic-cron-backup.sh: The actual backup

      #!/bin/bash
      d=$(date +%Y-%m-%d)
      if pidof -o %PPID -x “$0”; then
      echo “$(date “+%d.%m.%Y %T”) Exit, already running.”
      exit 1
      fi
      restic -r rclone:REPOSITORY:subfolder backup /media/CloudronBackup/snapshot -p=/home/USER/resticpw
      restic -r rclone:REPOSITORY:subfolder forget --keep-monthly 12 --keep-weekly 5 --keep-daily 14 -p=/home/USER/resticpw
      restic -r rclone:REPOSITORY:subfolder check --read-data-subset=2% -p=/home/USER/resticpw
      exit
      

      First line does the backup (incremental, encrypted), second line is the backup retention, third line checks a random 2 % of all data for errors.
      Note that I only backup the /snapshot folder as all versioning is done by restic.

      restic-cron-prune.sh: Pruning unused files in the backup

      #!/bin/bash
      d=$(date +%Y-%m-%d)
      if pidof -o %PPID -x “$0”; then
      echo “$(date “+%d.%m.%Y %T”) Exit, already running.”
      exit 1
      fi
      restic -r rclone:REPOSITORY:subfolder prune -p=/home/USER/resticpw
      exit
      

      removes unused data from the repository, I run this once a week

      restic-cron-check.sh: thorough health check of the backups

      #!/bin/bash
      d=$(date +%Y-%m-%d)
      if pidof -o %PPID -x “$0”; then
      echo “$(date “+%d.%m.%Y %T”) Exit, already running.”
      exit 1
      fi
      restic -r rclone:REPOSITORY:subfolder check --read-data -p=/home/USER/resticpw
      exit
      

      checks all data for errors, I run this once a week

      Crontab

      30 2 * * * sh /home/USER/restic-cron-backup.sh | mailx -s "Restic Backup Results" server@mydomain.com
      1 5 1 * * sh /home/USER/restic-cron-prune.sh | mailx -s "Restic Prune Results" server@mydomain.com
      1 8 1 * * sh /home/USER/restic-cron-check.sh | mailx -s "Restic Full Check Results" server@mydomain.com
      

      Backup daily at 2:30, prune and check once a week. Receive results to specified mail

      Mount backups

      Just to be complete: You can mount restic backups locally like
      restic -r rclone:REPOSITORY:subfolder mount /media/resticmount/ -p=/home/USER/resticpw && cd /media/resticmount
      obviously adjust /media/resticmount/to your settings; allows you to browse and copy from full snapshots for each backup

      List backups

      For listing all available snapshots use
      restic -r rclone:REPOSITORY:subfolder snapshots -p=/home/USER/resticpw

      timconsidine necrevistonnezr 2 Replies Last reply Reply Quote 5
      • timconsidine
        timconsidine @necrevistonnezr last edited by

        @necrevistonnezr nice article.
        Great fan of rclone.
        I use it with wasabi and scaleway.

        Don't know restic so I'm off to learn.

        Becoming fan of https://ntfy.sh : great for adding into scripts run by cron to confirm running/script results/server status (e.g. df -h)

        robi 1 Reply Last reply Reply Quote 1
        • robi
          robi @timconsidine last edited by

          @timconsidine said in Tutorial: remote backup of local Cloudron backup snapshots with restic / rclone:

          Becoming fan of https://ntfy.sh :

          Nice find, that's totally self-hostable, you should add it to the list!

          We had several instances where we needed a way to have notifications for cloudron apps/events. This would do the trick!

          It can also be made a feature request for box notifications to support an API or curl call for admins.

          Life of Gratitude.
          Life of Advanced Technology

          timconsidine 1 Reply Last reply Reply Quote 1
          • timconsidine
            timconsidine @robi last edited by

            @robi I've been meaning to have a go at packaging it.
            But I stumbled on something (I forget what).
            Will try again.
            And will open a wishlist for someone more talented than me to have a crack.

            1 Reply Last reply Reply Quote 2
            • necrevistonnezr
              necrevistonnezr @necrevistonnezr last edited by

              added command to list all available snapshots to original post

              1 Reply Last reply Reply Quote 1
              • First post
                Last post
              Powered by NodeBB