garethgeorge/backrest là một trong những repo mã nguồn mở mà TopGit theo dõi, hiện có 7.8k sao, viết chủ yếu bằng TypeScript. Backrest is a web UI and orchestrator for restic backup.
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
Backrest is a web-accessible backup solution built on top of restic. 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.
By building on restic, Backrest leverages its mature, fast, reliable, and secure backup capabilities while adding an intuitive interface.
Built 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 for advanced operations when needed.
Key Features
Web Interface: Access locally or remotely (perfect for NAS deployments)
Multi-Platform Support:
Linux
macOS
Windows
FreeBSD
Docker
Backup Management:
Import existing restic repositories
Cron-scheduled backups and maintenance (e.g. prune, check, forget, etc)
Pre/post backup command hooks to execute shell scripts
Storage Options:
Compatible with rclone remotes
Supports all restic storage backends (S3, B2, Azure, GCS, local, SFTP, and all rclone remotes)
Preview
User Guide
See the Backrest docs.
Installation
Backrest is packaged as a single executable. It runs directly on Linux, macOS, and Windows. restic is downloaded automatically on first run.
Once installed, access Backrest at http://localhost:9898 (default port). First-time setup will prompt for username and password creation.
[!NOTE]
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.
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.
Linux & macOS (Recommended)
The install script downloads the latest release, drops the binary into /usr/local/bin, and sets up the appropriate auto-start integration (systemd or OpenRC on Linux; launchd on macOS):
The 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://localhost:9898.
[!TIP]
Review install.sh before piping it into a shell. You can also clone the repo and run ./install.sh locally; it accepts the same flags.
macOS — Homebrew (alternative)
Homebrew tap:
brew tap garethgeorge/homebrew-backrest-tap
brew install backrest
brew services start backrest
[!NOTE]
You may need to grant Full Disk Access to Backrest. Go to System Preferences > Security & Privacy > Privacy > Full Disk Access and add /usr/local/bin/backrest.
Arch Linux (AUR)
Backrest on AUR is third-party (not maintained by the Backrest project) and tweaks the systemd unit; see the AUR service file for details.
Image: ghcr.io/garethgeorge/backrest (also on Docker Hub).
Includes rclone and common Unix utilities
For a minimal image, use ghcr.io/garethgeorge/backrest:scratch
Docker Compose
version: "3.8"
services:
backrest:
image: ghcr.io/garethgeorge/backrest:latest
container_name: backrest
hostname: backrest
volumes:
- ./backrest/data:/data
- ./backrest/config:/config
- ./backrest/cache:/cache
- ./backrest/tmp:/tmp
- ./backrest/rclone:/root/.config/rclone # Mount for rclone config (needed when using rclone remotes)
- /path/to/backup/data:/userdata # Mount local paths to backup
- /path/to/local/repos:/repos # Mount local repos (optional for remote storage)
environment:
- BACKREST_DATA=/data
- BACKREST_CONFIG=/config/config.json
- XDG_CACHE_HOME=/cache
- TMPDIR=/tmp
- TZ=America/Los_Angeles
ports:
- "9898:9898"
restart: unless-stopped
Windows
Download the Windows installer for your architecture from the releases page. 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.
[!TIP]
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.
Configuration
Environment Variables (Unix)
Variable
Description
Default
BACKREST_PORT
Port to bind to
127.0.0.1:9898 (or 0.0.0.0:9898 for the docker images)
BACKREST_CONFIG
Path to config file
$HOME/.config/backrest/config.json (or, if $XDG_CONFIG_HOME is set, $XDG_CONFIG_HOME/backrest/config.json)
BACKREST_DATA
Path to the data directory
$HOME/.local/share/backrest (or, if $XDG_DATA_HOME is set, $XDG_DATA_HOME/backrest)
BACKREST_RESTIC_COMMAND
Path to restic binary
Defaults to a Backrest managed version of restic at $XDG_DATA_HOME/backrest/restic-x.x.x
XDG_CACHE_HOME
Path to the cache directory
Environment Variables (Windows)
Variable
Description
Default
BACKREST_PORT
Port to bind to
127.0.0.1:9898
BACKREST_CONFIG
Path to config file
%appdata%\backrest\config.json
BACKREST_DATA
Path to the data directory
%appdata%\backrest\data
BACKREST_RESTIC_COMMAND
Path to restic binary
Defaults to a Backrest managed version of restic in C:\Program Files\restic\restic-x.x.x
XDG_CACHE_HOME
Path to the cache directory
Development
Contributing
Contributions are welcome! See the issues or feel free to open a new issue to discuss a project. Beyond the core codebase, contributions to documentation, cookbooks, and testing are always welcome.
Build Dependencies
All build dependencies are defined in shell.nix and can be activated automatically using Nix and direnv.
Using Nix + direnv (Recommended)
Install Nix and direnv
Hook direnv into your shell (e.g. eval "$(direnv hook bash)" in your .bashrc)
Clone the repo and cd into it
Run direnv allow to trust the .envrc — all dependencies (Go, Node.js, pnpm, protoc, buf, etc.) will be available in your shell automatically
Manual Setup
If you prefer not to use Nix, install the following manually:
Go 1.24 or greater
Node.js 20.x and pnpm 9
goreleaser go install github.com/goreleaser/goreleaser/v2@latest
(Optional) To edit protobuf definitions:
apt install -y protobuf-compiler
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
go install github.com/bufbuild/buf/cmd/buf@latest
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install connectrpc.com/connect/cmd/protoc-gen-connect-go@latest
npm install -g @bufbuild/protoc-gen-es
Compiling
(cd webui && pnpm i && pnpm run build)
(cd cmd/backrest && go build .)
Using VSCode Dev Containers
The 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.
Make sure Docker and VSCode with the Dev Containers extension is installed
Clone this repository
Open this folder in VSCode
When prompted, click on Open in Container button, or run > Dev Containers: Rebuild and Reopen in Containers command
When the container is started, go to Run and Debug, choose Debug Backrest (backend+frontend) and run it
[!NOTE]
Provided launch configuration has hot reload for the typescript frontend.
Translations
Translations are stored in ./webui/messages and are generated using inlang. Machine translations can be updated by running npx @inlang/cli machine translate --project ./project.inlang.
Text 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!
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/garethgeorge/backrest là nguồn chính thức.
garethgeorge/backrest có phải mã nguồn mở không?
Có — garethgeorge/backrest phát hành theo license GPL-3.0, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/garethgeorge/backrest.
garethgeorge/backrest có trang demo không?
Dự án có trang chủ ở https://garethgeorge.github.io/backrest/ . Tab "Readme" ở trang này thường có ảnh chụp và hướng dẫn bắt đầu nhanh.
garethgeorge/backrest dùng license gì?
garethgeorge/backrest phát hành theo license GPL-3.0. Nên mở file LICENSE trên GitHub để xác nhận — license metadata đôi khi lệch với thực tế dự án.
garethgeorge/backrest là gì?
garethgeorge/backrest (garethgeorge/backrest) là dự án TypeScript trên GitHub. Theo mô tả gốc: Backrest is a web UI and orchestrator for restic backup.
Đọc đầy đủ README ở tab phía trên.
backrest có đáng để bạn bỏ thời gian?
ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về backrest.