A lightweight web UI to browse, download and inspect restic backups – built with Go and Docker.
Restic Browser provides:
- a file browser for your
/repomount - automatic detection of restic repositories
- a repository configuration page backed by SQLite (password + no-lock)
- snapshot listing, browsing and downloads (files + folder ZIP)
This project is not affiliated with restic.
This project is built and maintained in my free time.
If it helps you or saves you some time, you can support my work on
Thank you for your support!
- File Browser under
/files(browse/repo) - Detect restic repositories automatically (
config,data/,index/,keys/) - Configure repositories via UI (
/config) and store settings in SQLite - List snapshots (newest first)
- Browse snapshot contents
- Download individual files
- Download folders as ZIP (streamed)
- Docker-ready (multi-arch: amd64 & arm64)
- Works perfectly on Raspberry Pi
- Repositories root (your restic repos somewhere inside this):
- Mounted to:
/repo
- Mounted to:
- Persistent app data (SQLite DB):
- Mounted to:
/data
- Mounted to:
Example on host:
mkdir -p ./data
# your restic repos exist somewhere, e.g. /home/${USER}$/backup/reposdocker run -d \
-p 8080:8080 \
-v /home/${USER}$/backup/repos:/repo:ro \
-v ./data:/data \
--name restic-browser \
floibach/restic-browser:latestOpen:
- File browser: http://localhost:8080/
- Health check: http://localhost:8080/health
services:
restic-browser:
image: floibach/restic-browser:latest
ports:
- "8080:8080"
environment:
# Optional:
# CONFIG_DB_PATH: /data/config.db
# RESTIC_CACHE_DIR: /cache
volumes:
- /home/florian/backrest/repos:/repo:ro
- ./data:/data # Path inside container must be same as configured CONFIG_DB_PATH
# Optional restic cache:
# - restic-cache:/cache
# volumes:
# restic-cache:-
Go to
/filesand browse your mounted/repofolder. -
When a folder is detected as a restic repository, you can:
- open it directly if already configured
- or configure it via
/config(password + no-lock)
-
After configuration, Restic Browser can run restic commands for that repo:
restic snapshots --jsonrestic ls ... --jsonrestic dump ...
-
Browse snapshot files and download:
- single file downloads
- folder ZIP downloads
| Variable | Description | Default |
|---|---|---|
CONFIG_DB_PATH |
SQLite file path used for repo configs | /data/config.db |
RESTIC_CACHE_DIR |
Optional restic cache directory | (empty) |
| Container Path | Purpose |
|---|---|
/repo |
Your repositories root (contains one or many restic repos) |
/data |
Persistent data (SQLite DB) |
/cache |
Optional restic cache (if you set RESTIC_CACHE_DIR=/cache) |
Recommended: mount
/reporead-only (:ro) for safety.
-
Repository passwords are currently stored in SQLite (plain text).
- Consider restricting access to the DB volume.
- Future improvement could add encryption / OS secret integration.
-
Use a reverse proxy + authentication if exposing this service publicly.
-
Mount repositories read-only if possible.
Run locally (requires restic installed):
go run .Or use the provided Dev Container.
- Config list page
/configs(edit existing repos) - Better sorting (folders first, sizes formatted)
- Search within snapshot contents
- Optional basic auth / auth middleware
- Encrypt stored passwords
MIT