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.