[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-71456":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},71456,"backrest","garethgeorge\u002Fbackrest","garethgeorge","Backrest is a web UI and orchestrator for restic backup.","https:\u002F\u002Fgarethgeorge.github.io\u002Fbackrest\u002F ",null,"Go",6669,174,17,300,0,191,241,411,573,37.73,"GNU General Public License v3.0",false,"main",true,[27,28,29,30],"backups","restic","restic-backups","webui","2026-06-12 02:02:52","\u003Cp align=\"center\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\".\u002Fwebui\u002Fassets\u002Flogo.svg\" width=\"400px\">\n    \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\".\u002Fwebui\u002Fassets\u002Flogo-black.svg\" width=\"400px\">\n    \u003Cimg src=\".\u002Fwebui\u002Fassets\u002Flogo.svg\" width=\"400px\">\n  \u003C\u002Fpicture>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fgarethgeorge\u002Fbackrest\u002Factions\u002Fworkflows\u002Ftest.yml\u002Fbadge.svg\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fgarethgeorge\u002Fbackrest\u002Ftotal\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fdocker\u002Fpulls\u002Fgarethgeorge\u002Fbackrest\" \u002F>\n\u003C\u002Fp>\n\n---\n\n**Overview**\n\nBackrest is a web-accessible backup solution built on top of [restic](https:\u002F\u002Frestic.net\u002F). 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:\u002F\u002Frestic.readthedocs.io\u002Fen\u002Flatest\u002Fmanual_rest.html) for advanced operations when needed.\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:\u002F\u002Fhub.docker.com\u002Fr\u002Fgarethgeorge\u002Fbackrest)\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\u002Fpost 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:\u002F\u002Frclone.org\u002F))\n\n## Preview\n\n\u003Cp align=\"center\">\n   \u003Cimg src=\"https:\u002F\u002Ff000.backblazeb2.com\u002Ffile\u002Fgshare\u002Fscreenshots\u002Fbackrest-1.11.1-dashboard.png\" width=\"80%\" \u002F>\n   \u003Cimg src=\"https:\u002F\u002Ff000.backblazeb2.com\u002Ffile\u002Fgshare\u002Fscreenshots\u002Fbackrest-1.11.1-browse-snapshot.png\" width=\"80%\" \u002F>\n   \u003Cimg src=\"https:\u002F\u002Ff000.backblazeb2.com\u002Ffile\u002Fgshare\u002Fscreenshots\u002Fbackrest-1.11.1-add-plan.png\" width=\"80%\" \u002F>\n\u003C\u002Fp>\n\n---\n\n# User Guide\n\n[See the Backrest docs](https:\u002F\u002Fgarethgeorge.github.io\u002Fbackrest\u002Fintroduction\u002Fgetting-started).\n\n---\n\n# Installation\n\nBackrest is packaged as a single executable. It runs directly on Linux, macOS, and Windows. [restic](https:\u002F\u002Fgithub.com\u002Frestic\u002Frestic) is downloaded automatically on first run.\n\nOnce installed, access Backrest at `http:\u002F\u002Flocalhost:9898` (default port). First-time setup will prompt for username and password creation.\n\n> [!NOTE]\n> 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). The install script accepts `--allow-remote-access` as a shortcut for this.\n>\n> 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## Linux & macOS (Recommended)\n\nThe install script downloads the latest release, drops the binary into `\u002Fusr\u002Flocal\u002Fbin`, and sets up the appropriate auto-start integration (systemd or OpenRC on Linux; launchd on macOS):\n\n```sh\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fgarethgeorge\u002Fbackrest\u002Fmain\u002Finstall.sh | bash\n```\n\nFlags go after `--`:\n\n```sh\n# Bind to all interfaces (default: 127.0.0.1:9898)\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fgarethgeorge\u002Fbackrest\u002Fmain\u002Finstall.sh | bash -s -- --allow-remote-access\n\n# Uninstall (removes service, autostart entry, and \u002Fusr\u002Flocal\u002Fbin\u002Fbackrest)\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fgarethgeorge\u002Fbackrest\u002Fmain\u002Finstall.sh | bash -s -- --uninstall\n```\n\nThe service runs as your user by default (so config and data live under your `$HOME`). To install as `root` instead, pass `--root`. After install, access Backrest at `http:\u002F\u002Flocalhost:9898`.\n\n> [!TIP]\n> Review [install.sh](.\u002Finstall.sh) before piping it into a shell. You can also clone the repo and run `.\u002Finstall.sh` locally; it accepts the same flags.\n\n### macOS — Homebrew (alternative)\n\n[Homebrew tap](https:\u002F\u002Fgithub.com\u002Fgarethgeorge\u002Fhomebrew-backrest-tap):\n\n```sh\nbrew tap garethgeorge\u002Fhomebrew-backrest-tap\nbrew install backrest\nbrew services start backrest\n```\n\n> [!NOTE]\n> You may need to grant Full Disk Access to Backrest. Go to `System Preferences > Security & Privacy > Privacy > Full Disk Access` and add `\u002Fusr\u002Flocal\u002Fbin\u002Fbackrest`.\n\n### Arch Linux (AUR)\n\n[Backrest on AUR](https:\u002F\u002Faur.archlinux.org\u002Fpackages\u002Fbackrest) is third-party (not maintained by the Backrest project) and tweaks the systemd unit; see the [AUR service file](https:\u002F\u002Faur.archlinux.org\u002Fcgit\u002Faur.git\u002Ftree\u002Fbackrest@.service?h=backrest) for details.\n\n```sh\nparu -Sy backrest  # or: yay -Sy backrest\nsudo systemctl enable --now backrest@$USER.service\n```\n\n## Docker\n\nImage: `ghcr.io\u002Fgarethgeorge\u002Fbackrest` (also on [Docker Hub](https:\u002F\u002Fhub.docker.com\u002Fr\u002Fgarethgeorge\u002Fbackrest)).\n- Includes rclone and common Unix utilities\n- For a minimal image, use `ghcr.io\u002Fgarethgeorge\u002Fbackrest:scratch`\n\n### Docker Compose\n\n```yaml\nversion: \"3.8\"\nservices:\n  backrest:\n    image: ghcr.io\u002Fgarethgeorge\u002Fbackrest:latest\n    container_name: backrest\n    hostname: backrest\n    volumes:\n      - .\u002Fbackrest\u002Fdata:\u002Fdata\n      - .\u002Fbackrest\u002Fconfig:\u002Fconfig\n      - .\u002Fbackrest\u002Fcache:\u002Fcache\n      - .\u002Fbackrest\u002Ftmp:\u002Ftmp\n      - .\u002Fbackrest\u002Frclone:\u002Froot\u002F.config\u002Frclone # Mount for rclone config (needed when using rclone remotes)\n      - \u002Fpath\u002Fto\u002Fbackup\u002Fdata:\u002Fuserdata  # Mount local paths to backup\n      - \u002Fpath\u002Fto\u002Flocal\u002Frepos:\u002Frepos     # Mount local repos (optional for remote storage)\n    environment:\n      - BACKREST_DATA=\u002Fdata\n      - BACKREST_CONFIG=\u002Fconfig\u002Fconfig.json\n      - XDG_CACHE_HOME=\u002Fcache\n      - TMPDIR=\u002Ftmp\n      - TZ=America\u002FLos_Angeles\n    ports:\n      - \"9898:9898\"\n    restart: unless-stopped\n```\n\n## Windows\n\nDownload the Windows installer for your architecture from the [releases page](https:\u002F\u002Fgithub.com\u002Fgarethgeorge\u002Fbackrest\u002Freleases). The installer, named `Backrest-setup-[arch].exe`, places Backrest and a GUI tray application in `%localappdata%\\Programs\\Backrest\\`. The tray application, set to start on login, monitors Backrest.\n\n> [!TIP]\n> To override the default port before installation, set a user environment variable named `BACKREST_PORT`. On Windows 10+, navigate to Settings > About > Advanced system settings > Environment Variables. Under \"User variables\", create a new variable `BACKREST_PORT` with the value `127.0.0.1:port` (e.g. `127.0.0.1:8080`). If changing post-installation, re-run the installer to update shortcuts with the new port.\n\n---\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\u002F.config\u002Fbackrest\u002Fconfig.json`\u003Cbr>(or, if `$XDG_CONFIG_HOME` is set, `$XDG_CONFIG_HOME\u002Fbackrest\u002Fconfig.json`) |\n| `BACKREST_DATA`           | Path to the data directory  | `$HOME\u002F.local\u002Fshare\u002Fbackrest`\u003Cbr>(or, if `$XDG_DATA_HOME` is set, `$XDG_DATA_HOME\u002Fbackrest`)                        |\n| `BACKREST_RESTIC_COMMAND` | Path to restic binary       | Defaults to a Backrest managed version of restic at `$XDG_DATA_HOME\u002Fbackrest\u002Frestic-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\\config.json`                                                           |\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\n# Development\n\n## Contributing\n\nContributions are welcome! See the [issues](https:\u002F\u002Fgithub.com\u002Fgarethgeorge\u002Fbackrest\u002Fissues) or feel free to open a new issue to discuss a project. Beyond the core codebase, contributions to [documentation](https:\u002F\u002Fgarethgeorge.github.io\u002Fbackrest\u002Fintroduction\u002Fgetting-started), [cookbooks](https:\u002F\u002Fgarethgeorge.github.io\u002Fbackrest\u002Fcookbooks\u002Fcommand-hook-examples), and testing are always welcome.\n\n## Build Dependencies\n\nAll build dependencies are defined in `shell.nix` and can be activated automatically using [Nix](https:\u002F\u002Fnixos.org\u002F) and [direnv](https:\u002F\u002Fdirenv.net\u002F).\n\n### Using Nix + direnv (Recommended)\n\n1. Install [Nix](https:\u002F\u002Fnixos.org\u002Fdownload\u002F) and [direnv](https:\u002F\u002Fdirenv.net\u002Fdocs\u002Finstallation.html)\n2. [Hook direnv into your shell](https:\u002F\u002Fdirenv.net\u002Fdocs\u002Fhook.html) (e.g. `eval \"$(direnv hook bash)\"` in your `.bashrc`)\n3. Clone the repo and `cd` into it\n4. Run `direnv allow` to trust the `.envrc` — all dependencies (Go, Node.js, pnpm, protoc, buf, etc.) will be available in your shell automatically\n\n### Manual Setup\n\nIf you prefer not to use Nix, install the following manually:\n\n- [Go](https:\u002F\u002Fgo.dev\u002F) 1.24 or greater\n- [Node.js](https:\u002F\u002Fnodejs.org\u002Fen) 20.x and [pnpm](https:\u002F\u002Fpnpm.io\u002F) 9\n- [goreleaser](https:\u002F\u002Fgithub.com\u002Fgoreleaser\u002Fgoreleaser) `go install github.com\u002Fgoreleaser\u002Fgoreleaser\u002Fv2@latest`\n\n**(Optional) To edit protobuf definitions:**\n\n```sh\napt install -y protobuf-compiler\ngo install google.golang.org\u002Fgrpc\u002Fcmd\u002Fprotoc-gen-go-grpc@latest\ngo install github.com\u002Fbufbuild\u002Fbuf\u002Fcmd\u002Fbuf@latest\ngo install google.golang.org\u002Fprotobuf\u002Fcmd\u002Fprotoc-gen-go@latest\ngo install connectrpc.com\u002Fconnect\u002Fcmd\u002Fprotoc-gen-connect-go@latest\nnpm install -g @bufbuild\u002Fprotoc-gen-es\n```\n\n## Compiling\n\n```sh\n(cd webui && pnpm i && pnpm run build)\n(cd cmd\u002Fbackrest && go build .)\n```\n\n## Using VSCode Dev Containers\n\nThe dev container uses Nix and direnv to provide all dependencies. When the container starts, `direnv allow` runs automatically so the Nix shell is activated in every terminal.\n\n0. Make sure Docker and VSCode with the [Dev Containers](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?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 `> Dev Containers: Rebuild and Reopen in Containers` command\n4. When the container is started, go to `Run and Debug`, choose `Debug Backrest (backend+frontend)` and run it\n\n> [!NOTE]\n> Provided launch configuration has hot reload for the typescript frontend.\n\n## Translations\n\nTranslations are stored in [.\u002Fwebui\u002Fmessages](.\u002Fwebui\u002Fmessages) and are generated using [inlang](https:\u002F\u002Finlang.com\u002F). Machine translations can be updated by running `npx @inlang\u002Fcli machine translate --project .\u002Fproject.inlang`. \n\nText is translated on a best-effort basis and is not guaranteed to be accurate. If you find any translations that are incorrect, please submit a pull request to fix them. Contributions here are greatly appreciated!\n","Backrest 是一个基于 restic 的网页备份解决方案。它通过提供一个用户友好的Web界面，简化了restic命令行工具的使用，支持创建仓库、浏览快照以及文件恢复等操作，并且可以自动调度备份任务和管理仓库健康状态。采用Go语言开发，Backrest作为一个独立轻量级的应用程序发布，仅依赖于restic。适合需要定期执行数据备份及维护的企业或个人使用，特别适用于网络附加存储（NAS）环境下的远程访问需求。此外，该项目支持跨平台运行，包括Linux、macOS、Windows等操作系统，并提供了多种存储选项和通知配置功能，以满足不同用户的备份需求。",2,"2026-06-11 03:37:48","high_star"]