From e97b1cd3f42e19c99be70c877cb9754ca183e910 Mon Sep 17 00:00:00 2001 From: garethgeorge Date: Thu, 16 Nov 2023 19:59:56 -0800 Subject: [PATCH] chore: update README.md --- README.md | 68 +++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index e1e855b4..69796c10 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,38 @@ # ResticUI -WIP project to build a UI for restic. +ResticUI is a WebUI wrapper for [restic](https://restic.net/). It is intended to be used as a self-hosted application for managing backups of your data. -Project goals +The goals of the project are: - * Single binary for easy and _very lightweight_ deployment with or without containerization. - * WebUI supporting - * Backup plan creation and configuration - * Backup status - * Snapshot browsing and restore + * Single binary deployment: the UI and backend are bundled into a single binary that can be deployed with no dependencies (other than restic!). + * Light weight: the binary weighs in at ~25 MB as of writing and the goal is to keep it in this territory. + * Easy to pull back the curtain: the UI is intended to be a wrapper around restic, but does not preclude using restic commands directly. It's easy to list snapshots directly using restic as a CLI to understand what's being stored. + * Performant + * Low background memory use + * Snapy UI performant leveraging [bbolt](https://github.com/etcd-io/bbolt) as a state store and cache. -# High Level Goals +Feature Support - * Restic repository configuration and initialization - * Multiple backup plans with independent file sets, schedules, etc can be configured and store data to a single repository definition. - * Backup status info at a glance - * Shows health of last backup operation attempted for a given repository. - * Shows health of last backup operation attempted for a given plan. - * Support for browsing snapshots belonging to a given repository. - * Support for browsing snapshots belonging to a given plan. + * [x] Configure multiple restic repositories + * [x] Configure multiple backup plans for each repository + * [x] Execute scheduled backup operations e.g. on a cron schedule +* [x] Execute manually triggered backup operations +* [x] Browse backup operation history +* [x] Browse snapshot history +* [x] Browse files in a snapshot +* [ ] Restore files from a snapshot (use restic UI to identify a snapshot to restore, use restic cli to restore it today) +* [ ] Prune snapshots after backup operations (recommend periodically running `restic prune` on the CLI until this feature is supported) -# Roadmap +## Screenshots - - [x] Restic repository configuration and initialization - - [x] Backup plan configuration - - [ ] Health checks in backend/GUI - - [ ] Backend state store - - [ ] Health status view for repos - - [ ] Health status view for plans - - [ ] Backup operation - - [X] Backend implementatio - - [ ] Backup command in UI - - [ ] Snapshot browser - - [X] Backend snapshot listing - - [ ] Snapshot browser GUI on repo view - - [ ] Snapshot browser GUI on backup plan view - - [ ] Operation history - - [ ] Backend operation tracking in state store e.g. log of backup operations, cleanup operations, etc. - - [ ] Scheduler log stored on plan? - - [ ] Operation result log stored on repo? - - [ ] Operation history GUI on repo view. - - [ ] Operation history GUI on plan view. +Configuring a backup plan: +![Configure Backup Plan](./screenshots/screenshot-add-plan.png) + +Running backup operation: +![Backup Running](./screenshots/screenshot-backup-running.png) + +Browsing snapshots: +![Browse Backup](./screenshots/screenshot-browse.png) # Dependencies @@ -56,3 +48,9 @@ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest go install github.com/bufbuild/buf/cmd/buf@v1.27.2 ``` +## Building + +```sh +(cd webui && npm run build) +(cd cmd/resticui && go build .) +```