You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+106-122
Original file line number
Diff line number
Diff line change
@@ -12,36 +12,35 @@
12
12
13
13
Backrest 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.
14
14
15
-
By building on restic, Backrest leverages restic's mature feature set. Restic provides fast, reliable, and secure backup operations.
15
+
By building on restic, Backrest leverages its mature, fast, reliable, and secure backup capabilities while adding an intuitive interface.
16
16
17
-
Backrest itself is built in Golang (matching restic's implementation) and is shipped as a self-contained and light weight binary with no dependencies other than restic. This project aims to be the easiest way to setup and get started with backups on any system. You can expect to be able to perform all operations from the web interface but should you ever need more control, you are free to browse your repo and perform operations using the [restic cli](https://restic.readthedocs.io/en/latest/manual_rest.html). Additionally, Backrest can safely detect and import your existing snapshots (or externally created snapshots on an ongoing basis).
17
+
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](https://restic.readthedocs.io/en/latest/manual_rest.html) for advanced operations when needed.
- Pre/post backup command hooks to execute shell scripts
41
+
-**Storage Options**:
43
42
- Compatible with rclone remotes
44
-
- Backup to any restic supported storage (e.g. S3, B2, Azure, GCS, local, SFTP, and all [rclone remotes](https://rclone.org/))
43
+
- Supports all restic storage backends (S3, B2, Azure, GCS, local, SFTP, and [all rclone remotes](https://rclone.org/))
45
44
46
45
---
47
46
@@ -53,25 +52,30 @@ Backrest itself is built in Golang (matching restic's implementation) and is shi
53
52
54
53
Backrest 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.
55
54
56
-
Download options
55
+
### Quick Start Options
57
56
58
-
- Download and run a release from the [releases page](https://github.com/garethgeorge/backrest/releases).
59
-
- Build from source ([see below](#building)).
60
-
- Run with docker: `garethgeorge/backrest:latest` ([see on dockerhub](https://hub.docker.com/r/garethgeorge/backrest)) for an image that includes rclone and common unix utilities or `garethgeorge/backrest:scratch` for a minimal image.
57
+
1.**Pre-built Release**: Download from the [releases page](https://github.com/garethgeorge/backrest/releases)
58
+
2.**Docker**: Use `garethgeorge/backrest:latest` ([Docker Hub](https://hub.docker.com/r/garethgeorge/backrest))
59
+
- Includes rclone and common Unix utilities
60
+
- For minimal image, use `garethgeorge/backrest:scratch`
61
+
3.**Build from Source**: See [Building](#building) section below
61
62
62
-
Backrest is accessible from a web browser. By default it binds to `127.0.0.1:9898` and can be accessed at `http://localhost:9898`. Change the port with the `BACKREST_PORT` environment variable e.g. `BACKREST_PORT=0.0.0.0:9898 backrest` to listen on all network interfaces. On first startup backrest will prompt you to create a default username and password, this can be changed later in the settings page.
63
+
Once installed, access Backrest at `http://localhost:9898` (default port). First-time setup will prompt for username and password creation.
64
+
65
+
> [!NOTE]
66
+
> 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)
67
+
>
68
+
> 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.
63
69
64
-
> [!Note]
65
-
> Backrest will use your system install of restic if it is available and matches Backrest's required version. Otherwise it will download and install a compatible version of restic in its data directory. Backrest will keep restic up to date with the latest version. You force use of a specific restic binary (or non-standard version) by setting the `BACKREST_RESTIC_COMMAND` environment variable to the path of your restic binary.
- For the systemd service: `sudo systemctl status backrest`
165
149
166
150
> [!NOTE]
167
-
> You can set the Linux user and group to your primary user (e.g. `whoami` when logged in).
151
+
> Adjust the `User`in the systemd service file if needed. The install script and manual systemd instructions use your current user by default.
152
+
>
153
+
> 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:
154
+
>```
155
+
> [Service]
156
+
> Environment="BACKREST_PORT=0.0.0.0:9898"
157
+
>```
158
+
> Using `0.0.0.0` allows connections from any interface.
Backrest is provided as a [homebrew tap](https://github.com/garethgeorge/homebrew-backrest-tap). To install with brew run:
177
+
Backrest is available via a [Homebrew tap](https://github.com/garethgeorge/homebrew-backrest-tap):
187
178
188
179
```sh
189
180
brew tap garethgeorge/homebrew-backrest-tap
190
181
brew install backrest
191
182
brew services start backrest
192
-
# optionally, install restic
193
-
brew install restic
194
183
```
195
184
196
-
This tap uses [Brew services](https://github.com/Homebrew/homebrew-services) to launch and manage Backrest's lifecycle. Backrest will launch on startup and run on port ':9898` by default.
185
+
This 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.
197
186
198
187
> [!NOTE]
199
-
> You may need to grant Full Disk Access to backrest. To do this, go to `System Preferences > Security & Privacy > Privacy > Full Disk Access` and add the path to backrest (typically /usr/local/bin/backrest).
188
+
> 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`.
200
189
201
-
#### Manually using the install script
190
+
### Manual Installation
202
191
203
-
Download a Darwin release from the [releases page](https://github.com/garethgeorge/backrest/releases) and install it to `/usr/local/bin`.
192
+
1. Download the latest Darwin release from the [releases page](https://github.com/garethgeorge/backrest/releases).
193
+
2. Extract and install:
204
194
205
-
Extract the release you downloaded and run the install script:
206
-
207
-
```
208
-
# extract the release to a subfolder of the current directory
195
+
```sh
209
196
mkdir backrest && tar -xzvf backrest_Darwin_arm64.tar.gz -C backrest
210
-
# run the install script
211
197
cd backrest && ./install.sh
212
198
```
213
199
214
200
The install script will:
215
-
216
201
- Move the Backrest binary to `/usr/local/bin`
217
-
- Create a launch agent file at `~/Library/LaunchAgents/com.backrest.plist`
202
+
- Create a launch agent at `~/Library/LaunchAgents/com.backrest.plist`
218
203
- Load the launch agent
219
204
220
-
Read the script before running it to make sure you are comfortable with these operations.
205
+
> [!TIP]
206
+
> Review the script before running to ensure you're comfortable with its operations.
221
207
222
208
## Running on Windows
223
209
224
210
#### Windows Installer
225
211
226
-
Download a the Windows installer for your architecture from the [releases page](https://github.com/garethgeorge/backrest/releases). The installer is named Backrest-setup-[arch].exe. Run the installer and follow the prompts.
227
-
228
-
The installer will place backrest and a GUI tray application to monitor backrest in `%localappdata%\Programs\Backrest\`. The GUI tray application will start on login by default.
212
+
Download 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.
229
213
230
-
> [!NOTE] You can optionally override the default port Backrest uses by adding a user environment variable before running the installer. Open System Properties. There are multiple ways of getting there depending on Windows version. On Windows 10+ go to Settings - About - Advanced system settings (on the right side). At the bottom of the dialog window click Environment Variables. In the top section called "User variables for...", click New. Enter BACKREST_PORT as the variable name. Enter 127.0.0.1:port as the variable value. E.g. to run backrest on port 8080, enter 127.0.0.1:8080.
231
-
If you make this change after Backrest is installed, just re-run the installer to update shortcuts with the new port.
214
+
> [!TIP]
215
+
> 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 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.
0 commit comments