Hello all,
After having benchmarked a couple of deduplicating open source backup programs here, I decided that restic was a good choice for my needs, backing up both servers and end user computers.
I’ve invested some time into building my restic ecosystem, and ended up building an all in one restic based solution which supports both Linux and Windows.
Features:
- Prometheus monitoring support for servers (pull) and laptops (push), including a Grafana Dashboard
- Full end user GUI with backup content viewer and restore function
- CLI for server scheduled tasks
- Configuration via YAML file and/or GUI
- Additional security (repo URI and passwords are AES-256 encrypted in configuration file)
- Big ready to use exclusion lists for Linux and Windows
- First class Windows support (filter out reparse files, no-VSS fallback, pre-built binaries without dependencies)
- Backup process and IO priority settings
- File restoration direct to disk without the need of intermediate zip files
License
After having run this software for some time for my internal needs, I begun thinking that all this was made possible by the restic authors, which dedicate time into that awesome project, and keep it open source. So here I am today releasing my software under the GPLv3 license. I will continue to make it evolve (see TODO.md) file, and I would be pleased to get community feedback.
Downloads
You can find the github repository at https://github.com/netinvent/npbackup
Internals
I use this software mainly to backup servers with virtual machines (I have another software that handles the pre and post-backup freeze/thaw operations for the virtual disks).
Nevertheless, I have some special usecases, one of which needs customer laptops to be backed up.
Of course, since they’re never powered on at the same time, using a schedule is not the right idea.
Also, since they travel, the laptops are never connected to the same network.
I resolved this by allowing NPBackup to connect to it’s repo every 15 minutes via a scheduled task, and launch backup if no recent snapshot already exists.
The monitoring of laptops can push the metrics directly to a prometheus push gateway, which also resolves the different network issues.
Other particularities are that NPBackup properly filters out cloud files (Onedrive, Nextcloud…) which are not stored on the computer, and hence cannot be backed up on Windows.
This is the default behavior as of current version, but will become configurable so more usecases are covered.
A last thing is that the backup priority is configurable, for CPU but also IO, in order to not slow down other programs while backups take place.
Screenshots
Yes, a plain GUI, which supports direct interaction. Have a look at the other screenshots on the github page.
Make it reliable, only then, make it beautiful
Misc
Yet another restic GUI ?
Yes, but this one solves a couple of very specific usecases and gives end users a view over their backups, without compromising security for system administrators
So why is that GUI a plain local gui and not a web program ?
It’s quick and will always work regardless of html5/jquery/framework/browser evolutions.
Is there more ?
Yes, I plan to add auto upgrades and a couple of other features, feel free to open an issue at github for a feature request
Will the program stay open source ?
Yes, I pledge that this tool will stay open source as long as restic itself
Why is there no prune/forget ?
As of today I use the HTTP REST server as backend with --append-only
for security reasons. Hence I did not implement them. Implementing them is a very quick work. It’s actually the GUI that would take a bit more time.
Anything more ?
Thanks to all the restic team, I can sleep well knowing my backups are secure (and restore tested ;))