{"id":13535883,"url":"https://github.com/garethgeorge/backrest","last_synced_at":"2026-02-22T08:26:31.984Z","repository":{"id":206606463,"uuid":"716967634","full_name":"garethgeorge/backrest","owner":"garethgeorge","description":"Backrest is a web UI and orchestrator for restic backup.","archived":false,"fork":false,"pushed_at":"2025-05-07T00:18:45.000Z","size":4816,"stargazers_count":2815,"open_issues_count":150,"forks_count":79,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-05-08T23:52:08.704Z","etag":null,"topics":["backups","restic","restic-backups","webui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/garethgeorge.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"buy_me_a_coffee":"garethgeorge","github":"garethgeorge"}},"created_at":"2023-11-10T09:00:40.000Z","updated_at":"2025-05-08T21:47:13.000Z","dependencies_parsed_at":"2024-01-15T23:31:35.706Z","dependency_job_id":"2db15515-45e3-4e71-b590-986555997d41","html_url":"https://github.com/garethgeorge/backrest","commit_stats":{"total_commits":510,"total_committers":25,"mean_commits":20.4,"dds":0.07450980392156858,"last_synced_commit":"1ff69f121ae4f3455e132193dffe6c4a4fa80abd"},"previous_names":["garethgeorge/resticui","garethgeorge/resticweb","garethgeorge/restora","garethgeorge/backrest"],"tags_count":49,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garethgeorge%2Fbackrest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garethgeorge%2Fbackrest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garethgeorge%2Fbackrest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garethgeorge%2Fbackrest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/garethgeorge","download_url":"https://codeload.github.com/garethgeorge/backrest/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254052697,"owners_count":22006716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backups","restic","restic-backups","webui"],"created_at":"2024-08-01T09:00:31.164Z","updated_at":"2026-02-22T08:26:26.951Z","avatar_url":"https://github.com/garethgeorge.png","language":"Go","funding_links":["https://buymeacoffee.com/garethgeorge","https://github.com/sponsors/garethgeorge"],"categories":["Go Tools","Software Packages","Go","others","Apps","Table of Contents"],"sub_categories":["Other Software","Backup"],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"./webui/assets/logo-black.svg\" width=\"400px\"/\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/garethgeorge/backrest/actions/workflows/test.yml/badge.svg\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/downloads/garethgeorge/backrest/total\" /\u003e\n  \u003cimg src=\"https://img.shields.io/docker/pulls/garethgeorge/backrest\" /\u003e\n\u003c/p\u003e\n\n---\n\n**Overview**\n\nBackrest is a web-accessible backup solution built on top of [restic](https://restic.net/). Backrest provides a WebUI which wraps the restic CLI and makes it easy to create repos, browse snapshots, and restore files. Additionally, Backrest can run in the background and take an opinionated approach to scheduling snapshots and orchestrating repo health operations.\n\nBy building on restic, Backrest leverages its mature, fast, reliable, and secure backup capabilities while adding an intuitive interface.\n\nBuilt with Go, Backrest is distributed as a standalone, lightweight binary with restic as its sole dependency. It can securely create new repositories or manage existing ones. Once storage is configured, the WebUI handles most operations, while still allowing direct access to the powerful [restic CLI](https://restic.readthedocs.io/en/latest/manual_rest.html) for advanced operations when needed.\n\n## Preview\n\n\u003cp align=\"center\"\u003e\n   \u003cimg src=\"https://f000.backblazeb2.com/file/gshare/screenshots/2024/Screenshot+from+2024-01-04+18-19-50.png\" width=\"60%\" /\u003e\n   \u003cimg src=\"https://f000.backblazeb2.com/file/gshare/screenshots/2024/Screenshot+from+2024-01-04+18-30-14.png\" width=\"60%\" /\u003e\n\u003c/p\u003e\n\n## Key Features\n\n- **Web Interface**: Access locally or remotely (perfect for NAS deployments)\n- **Multi-Platform Support**: \n  - Linux\n  - macOS\n  - Windows\n  - FreeBSD\n  - [Docker](https://hub.docker.com/r/garethgeorge/backrest)\n- **Backup Management**:\n  - Import existing restic repositories\n  - Cron-scheduled backups and maintenance (e.g. prune, check, forget, etc)\n  - Browse and restore files from snapshots\n  - Configurable notifications (Discord, Slack, Shoutrrr, Gotify, Healthchecks)\n  - Pre/post backup command hooks to execute shell scripts\n- **Storage Options**:\n  - Compatible with rclone remotes\n  - Supports all restic storage backends (S3, B2, Azure, GCS, local, SFTP, and [all rclone remotes](https://rclone.org/))\n\n---\n\n# User Guide\n\n[See the Backrest docs](https://garethgeorge.github.io/backrest/introduction/getting-started).\n\n# Installation\n\nBackrest is packaged as a single executable. It can be run directly on Linux, macOS, and Windows. [restic](https://github.com/restic/restic) will be downloaded and installed on first run.\n\n### Quick Start Options\n\n1. **Pre-built Release**: Download from the [releases page](https://github.com/garethgeorge/backrest/releases)\n2. **Docker**: Use `garethgeorge/backrest:latest` ([Docker Hub](https://hub.docker.com/r/garethgeorge/backrest))\n   - Includes rclone and common Unix utilities\n   - For minimal image, use `garethgeorge/backrest:scratch`\n3. **Build from Source**: See [Building](#building) section below\n\nOnce installed, access Backrest at `http://localhost:9898` (default port). First-time setup will prompt for username and password creation.\n\n\u003e [!NOTE]\n\u003e To change the default port, set the `BACKREST_PORT` environment variable (e.g., `BACKREST_PORT=0.0.0.0:9898` to listen on all interfaces)\n\u003e \n\u003e Backrest will use your system's installed version of restic if it's available and compatible. If not, Backrest will download and install a suitable version in its data directory, keeping it updated. To use a specific restic binary, set the `BACKREST_RESTIC_COMMAND` environment variable to the desired path.\n\n\n### Running with Docker Compose\n\nDocker image: https://hub.docker.com/r/garethgeorge/backrest\n\nExample compose file:\n\n```yaml\nversion: \"3.8\"\nservices:\n  backrest:\n    image: garethgeorge/backrest:latest\n    container_name: backrest\n    hostname: backrest\n    volumes:\n      - ./backrest/data:/data\n      - ./backrest/config:/config\n      - ./backrest/cache:/cache\n      - ./backrest/tmp:/tmp\n      - /path/to/backup/data:/userdata  # Mount local paths to backup\n      - /path/to/local/repos:/repos     # Mount local repos (optional for remote storage)\n    environment:\n      - BACKREST_DATA=/data\n      - BACKREST_CONFIG=/config/config.json\n      - XDG_CACHE_HOME=/cache\n      - TMPDIR=/tmp\n      - TZ=America/Los_Angeles\n    ports:\n      - \"9898:9898\"\n    restart: unless-stopped\n```\n\n## Running on Linux\n\n### Running on Linux\n\n1. **Download the Release**\n   - Get the latest release from the [releases page](https://github.com/garethgeorge/backrest/releases)\n\n2. **Installation Options**\n\n   a) Using the Install Script (Recommended)\n   ```sh\n   mkdir backrest \u0026\u0026 tar -xzvf backrest_Linux_x86_64.tar.gz -C backrest\n   cd backrest \u0026\u0026 sudo ./install.sh\n   ```\n   This script will:\n   - Move the Backrest binary to `/usr/local/bin`\n   - Create and start a systemd service\n\n   b) Manual Installation with systemd\n   ```sh\n   sudo mv backrest /usr/local/bin/backrest\n   sudo tee /etc/systemd/system/backrest.service \u003e /dev/null \u003c\u003cEOT\n   [Unit]\n   Description=Backrest\n   After=network.target\n\n   [Service]\n   Type=simple\n   User=$(whoami)\n   ExecStart=/usr/local/bin/backrest\n   Environment=\"BACKREST_PORT=127.0.0.1:9898\"\n\n   [Install]\n   WantedBy=multi-user.target\n   EOT\n   sudo systemctl enable --now backrest\n   ```\n\n   c) Using cron (Basic)\n   ```sh\n   sudo mv backrest /usr/local/bin/backrest\n   (crontab -l 2\u003e/dev/null; echo \"@reboot /usr/local/bin/backrest\") | crontab -\n   ```\n\n3. **Verify Installation**\n   - Access Backrest at `http://localhost:9898`\n   - For the systemd service: `sudo systemctl status backrest`\n\n\u003e [!NOTE]\n\u003e Adjust the `User` in the systemd service file if needed. The install script and manual systemd instructions use your current user by default.\n\u003e\n\u003e By default backrest listens only on localhost, you can open optionally open it up to remote connections by setting the `BACKREST_PORT` environment variable. For systemd installations, run `sudo systemctl edit backrest` and add:\n\u003e ```\n\u003e [Service]\n\u003e Environment=\"BACKREST_PORT=0.0.0.0:9898\"\n\u003e ```\n\u003e Using `0.0.0.0` allows connections from any interface.\n\n### Arch Linux\n\n\u003e [!Note]\n\u003e [Backrest on AUR](https://aur.archlinux.org/packages/backrest) is not maintained by the Backrest official and has made minor adjustments to the recommended services. Please refer to [here](https://aur.archlinux.org/cgit/aur.git/tree/backrest@.service?h=backrest) for details. In [backrest@.service](https://aur.archlinux.org/cgit/aur.git/tree/backrest@.service?h=backrest), use `restic` from the Arch Linux official repository by setting `BACKREST_RESTIC_COMMAND`. And for information on enable/starting/stopping services, please refer to [Systemd#Using_units](https://wiki.archlinux.org/title/Systemd#Using_units).\n\n```shell\n## Install Backrest from AUR\nparu -Sy backrest  # or: yay -Sy backrest\n\n## Enable Backrest service for current user\nsudo systemctl enable --now backrest@$USER.service\n```\n\n## Running on macOS\n\n### Using Homebrew (Recommended)\n\nBackrest is available via a [Homebrew tap](https://github.com/garethgeorge/homebrew-backrest-tap):\n\n```sh\nbrew tap garethgeorge/homebrew-backrest-tap\nbrew install backrest\nbrew services start backrest\n```\n\nThis method uses [Brew Services](https://github.com/Homebrew/homebrew-services) to manage Backrest. It will launch on startup and run on port 127.0.0.1:9898 by default.\n\n\u003e [!NOTE]\n\u003e You may need to grant Full Disk Access to Backrest. Go to `System Preferences \u003e Security \u0026 Privacy \u003e Privacy \u003e Full Disk Access` and add `/usr/local/bin/backrest`.\n\n### Manual Installation\n\n1. Download the latest Darwin release from the [releases page](https://github.com/garethgeorge/backrest/releases).\n2. Extract and install:\n\n```sh\nmkdir backrest \u0026\u0026 tar -xzvf backrest_Darwin_arm64.tar.gz -C backrest\ncd backrest \u0026\u0026 ./install.sh\n```\n\nThe install script will:\n- Move the Backrest binary to `/usr/local/bin`\n- Create a launch agent at `~/Library/LaunchAgents/com.backrest.plist`\n- Load the launch agent\n\n\u003e [!TIP]\n\u003e Review the script before running to ensure you're comfortable with its operations.\n\n## Running on Windows\n\n#### Windows Installer\n\nDownload the Windows installer for your architecture from the [releases page](https://github.com/garethgeorge/backrest/releases). The installer, named Backrest-setup-[arch].exe, will place Backrest and a GUI tray application in `%localappdata%\\Programs\\Backrest\\`. The tray application, set to start on login, monitors Backrest.\n\n\u003e [!TIP]\n\u003e To override the default port before installation, set a user environment variable named BACKREST_PORT. On Windows 10+, navigate to Settings \u003e About \u003e Advanced system settings \u003e Environment Variables. Under \"User variables\", create a new variable with the value \"127.0.0.1:port\" (e.g., \"127.0.0.1:8080\" for port 8080). If changing post-installation, re-run the installer to update shortcuts with the new port.\n\n# Configuration\n\n## Environment Variables (Unix)\n\n| Variable                  | Description                 | Default                                                                                                             |\n| ------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------- |\n| `BACKREST_PORT`           | Port to bind to             | 127.0.0.1:9898 (or 0.0.0.0:9898 for the docker images)                                                              |\n| `BACKREST_CONFIG`         | Path to config file         | `$HOME/.config/backrest/config.json`\u003cbr\u003e(or, if `$XDG_CONFIG_HOME` is set, `$XDG_CONFIG_HOME/backrest/config.json`) |\n| `BACKREST_DATA`           | Path to the data directory  | `$HOME/.local/share/backrest`\u003cbr\u003e(or, if `$XDG_DATA_HOME` is set, `$XDG_DATA_HOME/backrest`)                        |\n| `BACKREST_RESTIC_COMMAND` | Path to restic binary       | Defaults to a Backrest managed version of restic at `$XDG_DATA_HOME/backrest/restic-x.x.x`                          |\n| `XDG_CACHE_HOME`          | Path to the cache directory |                                                                                                                     |\n\n## Environment Variables (Windows)\n\n| Variable                  | Description                 | Default                                                                                    |\n| ------------------------- | --------------------------- | ------------------------------------------------------------------------------------------ |\n| `BACKREST_PORT`           | Port to bind to             | 127.0.0.1:9898                                                                             |\n| `BACKREST_CONFIG`         | Path to config file         | `%appdata%\\backrest`                                                                       |\n| `BACKREST_DATA`           | Path to the data directory  | `%appdata%\\backrest\\data`                                                                  |\n| `BACKREST_RESTIC_COMMAND` | Path to restic binary       | Defaults to a Backrest managed version of restic in `C:\\Program Files\\restic\\restic-x.x.x` |\n| `XDG_CACHE_HOME`          | Path to the cache directory |                                                                                            |\n\n# Contributing\n\nContributions are welcome! See the [issues](https://github.com/garethgeorge/backrest/issues) or feel free to open a new issue to discuss a project. Beyond the core codebase, contributions to [documentation](https://garethgeorge.github.io/backrest/introduction/getting-started), [cookbooks](https://garethgeorge.github.io/backrest/cookbooks/command-hook-examples), and testing are always welcome.\n\n## Build Depedencies\n\n- [Node.js](https://nodejs.org/en) for UI development\n- [Go](https://go.dev/) 1.21 or greater for server development\n- [goreleaser](https://github.com/goreleaser/goreleaser) `go install github.com/goreleaser/goreleaser@latest`\n\n**(Optional) To Edit Protobuffers**\n\n```sh\napt install -y protobuf-compiler\ngo install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest\ngo install github.com/bufbuild/buf/cmd/buf@v1.47.2\ngo install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest\ngo install google.golang.org/protobuf/cmd/protoc-gen-go@latest\ngo install connectrpc.com/connect/cmd/protoc-gen-connect-go@latest\nnpm install -g @bufbuild/protoc-gen-es\n```\n\n## Compiling\n\n```sh\n(cd webui \u0026\u0026 npm i \u0026\u0026 npm run build)\n(cd cmd/backrest \u0026\u0026 go build .)\n```\n\n## Using VSCode Dev Containers\n\nYou can also use VSCode with [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension to quickly get up and running with a working development and debugging environment.\n\n0. Make sure Docker and VSCode with [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension is installed\n1. Clone this repository\n2. Open this folder in VSCode\n3. When prompted, click on `Open in Container` button, or run `\u003e Dev Containers: Rebuild and Reopen in Containers` command\n4. When container is started, go to `Run and Debug`, choose `Debug Backrest (backend+frontend)` and run it\n\n\u003e [!NOTE]\n\u003e Provided launch configuration has hot reload for typescript frontend.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgarethgeorge%2Fbackrest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgarethgeorge%2Fbackrest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgarethgeorge%2Fbackrest/lists"}