Backrest: a cross platform backup orchestrator and WebUI for restic

hello, another docker user here (no expert).

First, your docker host is really 192.168.188.106 ?
Then I see you changed the environment: paths to local paths. These cannot be found from inside the container, refer to the volumes section.
I kept them default, as displayed here:
https://hub.docker.com/r/garethgeorge/backrest

i.e.

environment:
  - BACKREST_DATA=/data
  - BACKREST_CONFIG=/config/config.json
  - XDG_CACHE_HOME=/cache
restart: unless-stopped
ports:
  - 9898:9898

Thank you that did the trick, how do you enable dark mode :stuck_out_tongue:

@Tyrian81 I guess “you” refers to the earlier posted screenshots?

Since I also prefer dark mode I run firefox with the Dark Reader plugin extension.

If browser supported, backrest will match your system color setting (e.g. dark or light mode)

Thanks! I’ve seen some similar feature requests on the GitHub issues, this is definitely something I’m targeting to support in the next release with better support for custom flag overrides at the repo and additionally plan level.

Hey, is there an option to run commands before/after backup? For example I need to dump my MySQL DB before backup, backup it + set of related files + delete it.

1 Like

Yes! Backrest supports hooks on various backup lifecycle events (including prior to starting the backup). You can add a shell command hook for this.

Nice, thanks! Trying it out and I have a small feature request: I need either a way to template backups or a way to duplicate-change repositories and plans.

This isn’t supported natively at the moment but can be done by editing the config and duplicating the plans you’d like. Feel free to file a feature request bug on the repo to track this.

Just to update this thread w/current and near term work plans. Backrest is already quite stable and I’m keeping a continual focus on test coverage and platform support (as it’s important that any backup orchestration is at least as reliable as restic :slight_smile: which sets a high bar) recent work has continued a push to drive down the long tail of reported issues and address UI bugs.

At the top of my plans going forward are

  • Support for running check operations from the repository. Initially this will be a manual task and in the future I may support scheduled execution.
  • Preflight hooks e.g. skipping backups on battery power OR when a script returns a non-zero exit code (e.g. skip trying to backup if a script detects that a target volume isn’t mounted).
  • Multi-host management

hi garethgeorge,

  • would like to know whether you will be able to make an unraid plugin or docker templates?
  • regarding the docker image, since now it comes with support for rclone, would like to know how to link it to the rclone config that is already on my systems? maybe aadd environmental setting?
  • i also wonder if we manually setup new rclone config inside the docker, will it be persistent across docker update?

Hey,

an unraid plugin isn’t planned right now but docker-compose templates are available in the README and docker is well supported.

rclone usage is a bit of an advanced feature (in that it can’t be done entirely through the Backrest UI) but is well supported. You’ll need to mount your rclone config into your container somewhere that Backrest will find it. By default this is /root/.config/rclone/rclone.conf. Feel free to start a discussion on the repo if you have detailed questions about getting that working.

Note that the docker container’s filesystem is ephemeral so anything not explicitly inside a volume will not survive restarts.

sorry i should have clarified i refer to unraid docker template that can just install from the apps store.
for docker wise, actually i have already using it on my proxmox and is good.

for the rclone inside the docker, no big deal, i can manually edit & update the .conf. was just thinking of linking the config file to host .config will be a quality of life feature.

Hi, I’m a beginner user.

I downloaded the latest version (v0.17.2) of Backrest for Windows (backrest_windows_x86_64.zip), and I have placed the contents of that folder in C:\Program Files\Backrest\backrest.exe. After that, I run backrest.exe as administrator and a console shows up but it gets stuck scheduling a task (see below). However, I can access the webui from http://localhost:9898.

2024-05-12T14:39:45.031+0200    INFO    installing restic C:\Program Files/backrest/restic-0.16.4.exe to 0.16.4...
2024-05-12T14:39:45.948+0200    INFO    decompressing zip archive (size=9167818)...
2024-05-12T14:39:47.543+0200    INFO    installed restic 0.16.4
2024-05-12T14:39:47.553+0200    DEBUG   loading auth secret from file
2024-05-12T14:39:47.563+0200    INFO    scheduling default tasks, waiting for task queue reset.
2024-05-12T14:39:47.563+0200    INFO    reset task queue, scheduling new task set.
2024-05-12T14:39:47.563+0200    INFO    scheduling task {"task": "collect garbage", "runAt": "2024-05-12T14:39:52+02:00"}
2024-05-12T14:39:47.564+0200    INFO    starting orchestrator loop
2024-05-12T14:39:47.564+0200    INFO    starting web server :9898
2024-05-12T14:39:52.566+0200    INFO    running task    {"task": "collect garbage"}
2024-05-12T14:39:52.575+0200    INFO    collecting garbage      {"forgotten_snapshots": 0, "operations_removed": 0}
2024-05-12T14:39:52.575+0200    INFO    task finished   {"task": "collect garbage", "duration": "8.9513ms"}
2024-05-12T14:39:52.575+0200    INFO    scheduling task {"task": "collect garbage", "runAt": "2024-05-13T14:39:52+02:00"}

Hallo @garethgeorge I found the problem FATAL timeout while waiting to open database, is the database open elsewhere? when running restic and I can’t access the dashboard from backrest which uses port 8989… please provide a solution

Hey all, it’s been a while since I’ve updated this thread. Posting an update on the new features since 1.0.0 and a few features planned for the next minor version release!

Released Backrest v1.0.0

Features

  • New scheduling options for plans e.g. max frequency hours, max frequency days, etc.
  • Improved scheduling controls for prune policy e.g. on cron, max frequency days (matching current behavior), etc.
  • restic shell: run restic commands directly on you configured repos (allows access to any restic features not yet exposed by the webUI). Just use “Index Snapshots” when done to re-index any changes you make to your snapshot set.
  • enable downloading restored files from the WebUI as .tar.gz archive
  • Improved repo stats view shows repo size, snapshot count, blob count, compression ratio over time.

And a host of minor bug fixes and stability improvements! To see the full release log check the release on GitHub.

Features coming soon (likely in 1.1.0)

  • Windows installer and Windows tray item for monitoring backrest status (supported by a community contribution!)
  • Scheduled restic check operations.

The community engagement re: Backrest development which has been fantastic to see. And of course, it’s been great to build on restic itself supported by this community!

Re: bug reports, Backrest has a pretty active discussion area for deeper debugging but to also address a few open questions in this thread –

  • timeout while waiting to open the database... indicates that Backrest is already running somewhere. If you can’t find an open console window you may need to search task manager for an already running process.
  • scheduling task ... indicates that backrest scheduled the next execution of a task! It is waiting for that task to be ready to run again. After first installing backrest make sure you open up the UI and go ahead and configure your first repo and plan to get more tasks in the list e.g. scheduled backup operations.

@garethgeorge Hiya, I have a quick question. I am running backrest on several servers. The data is backed up to a shared drive. I recently took down one of the servers. Now I am trying to figure out how to restore data from my backup on the command line without running the backrest service and turning the server back on. Thank you

Edit:
I’ve answered my own question.
See: Restoring from backup — restic 0.17.0-dev documentation, Restore using mount
e.g.
mkdir /tmp/restic
root@backup:/mnt/backup/restic/SERVER/data# ./restic-0.17.0 -r /mnt/backup/restic/SERVER/ mount /tmp/restic
Now I was able to browse my snapshots.

1 Like

Excellent project. How do you get the dark theme UI?

very cool project. please continue the good work.
I have been using systemd timers to schedule backups for the / and my home

i installed the backrest with sudo install.sh and saw that the systemd service is executed with my user name.
In my old systemd service i had a timer that made backup of the entire / .
is my assumption correct that i need to run the backrest service as ‘backup’ user to be able to also run backup for my entire / ?

This is really good! I have been trying it for the last few days. While I am sure it will improve a lot it is really a great wrapper on top of restic. It provides a very clean, simple, and functional GUI but at the same time gets completely out of the way of restic.

I think it’s about time @fd0 considered anointing some stable open source restic GUI wrappers/clients (like this one) in main documentation and on github repo page :smiley: (So that some users, like me, do not run away afraid, in the first encounter, seeing a pure cli backup tool)

2 Likes

UI theme is selected based on your the system dark/light mode propagated by your browser. An explicit button to toggle is on the todo list :slight_smile:

the backup user may have sufficient permissions to run backups for / on a base install, but I think preserving this may require some doing (e.g. you’d need to make sure any newly created users / groups still grant the right access to the default created backup user!).