[Devember 2021] Dockerized Bup backup server

This actually started back in November, but I thought I’d share.

What

I’ve been working on a Dockerized Bup back-end with a friendly and simple web GUI to manage scheduled Bup backups. Specifically, I’m creating this to run on my unRAID server, and to manage archival/backups with it.

Why???

“Aren’t there many backup solutions available for unRAID? And what’s the point of dockerizing a simple command-line tool?” Good questions.

As to why I’m using Bup at all, it’s rather arbitrary: I like it, it interops with git, and it does pretty much everything I think a backup system should do. The problem is that Bup doesn’t have a release candidate for Ubuntu (I’m running Pop!), and about an hour into trying to install it from source I threw up my hands and decided to containerize the bloody thing so I’d never have to deal with it again.

Tools

I ended up using a stack containing some familiar, and some unfamiliar tools in order to make it a learning experience:

  • Docker
    This is unRAID’s preferred solution, and something I wasn’t too familiar with. I’ve interacted with Docker plenty for work, but never from the ground up. This ended up being one fo those XKCD KSP experiences, which has been great!
  • Node + TS
    Nothing new for me here
  • Preact + TS
    I find it egregious how much bundle overhead React has, so I decided to try Preact for this project. It’s been almost entirely painless - would use again.
  • Websockets
    I decided to use Websockts for communication solely because I’ve never used them before.

Results

So far, I’ve built a containerized environment for Bup, where you can mount source + backup volumes to interact with. Configuration is done via a web interface, and scheduling is manged with cron syntax.

Features

Done

  • Creating / renaming / add+remove sources
  • Run on-demand
  • Scheduling
  • Disk-usage reporting
  • Exclusion patterns

Todo

  • Documentation on how to use the Docker image
  • Allow disabling / adjusting compression
  • Pause a backup’s schedule
  • Some kind of user-friendly restore
    Right now you have to go and use the Bup CLI if you want to extract something.

Repo

Github
Dockerhub

1 Like

Added exclusion support today

1 Like

I like the polish on this project, that alone helps a project be successful, even if your the only one using it (because its nice to use). Cant say the same for mine, except the code and the blog entires :slight_smile:

Its really nice to see this sort for project get exposed via #devember2021 as it integrates with something alot of people may already be using. Thanks for the headsup about Preact too, that might just be enough for me to finally look at it again :slight_smile:

Cheers

Paul

1 Like

Thanks! I try to make all my software a pleasure to use, it’s just that most of the time that’s more a matter of API design than UX. :grinning_face_with_smiling_eyes: Whenever I get the chance to work with end-user-facing functionality, I like to experiment a bit and try to make something nice.

In this case, I wanted to go with all-text (except the emojis), and so I tried to find other ways of giving the user cues - all of the interactable text elements are white instead of grey, and elements with tooltip context get a dashed underline.

I’ve continued to slowly work on this, and app now has a way to view, restore, delete, and garbage-collect revisions, and a lot of more subtle UI improvements. At this point I consider it pretty much done.

Even if I’m the only one who ever uses it (which seems likely), I’m quite satisfied with the results. :slightly_smiling_face:

2 Likes