Sign inSign up

floibach/restic-browser

By floibach

•Updated 9 months ago

Image
Developer tools
Monitoring & observability
0

10K+

floibach/restic-browser repository overview

⁠Restic Browser

GitHub Repo

DockerHub Repo

A lightweight web UI to browse, download and inspect restic backups – built with Go and Docker.

Restic Browser provides:

  • a file browser for your /repo mount
  • 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 BuyMeACoffee

Thank you for your support!

⁠Features

  • 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

⁠Quick Start (Docker)

⁠1) Prepare folders
  • Repositories root (your restic repos somewhere inside this):
    • Mounted to: /repo
  • Persistent app data (SQLite DB):
    • Mounted to: /data

Example on host:

mkdir -p ./data
# your restic repos exist somewhere, e.g. /home/${USER}$/backup/repos
⁠2) Run container
docker run -d \
  -p 8080:8080 \
  -v /home/${USER}$/backup/repos:/repo:ro \
  -v ./data:/data \
  --name restic-browser \
  floibach/restic-browser:latest

Open:


⁠Docker Compose Example

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:

⁠How it works

  1. Go to /files and browse your mounted /repo folder.

  2. 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)
  3. After configuration, Restic Browser can run restic commands for that repo:

    • restic snapshots --json
    • restic ls ... --json
    • restic dump ...
  4. Browse snapshot files and download:

    • single file downloads
    • folder ZIP downloads

⁠Configuration

⁠Environment Variables
VariableDescriptionDefault
CONFIG_DB_PATHSQLite file path used for repo configs/data/config.db
RESTIC_CACHE_DIROptional restic cache directory(empty)
⁠Volumes
Container PathPurpose
/repoYour repositories root (contains one or many restic repos)
/dataPersistent data (SQLite DB)
/cacheOptional restic cache (if you set RESTIC_CACHE_DIR=/cache)

Recommended: mount /repo read-only (:ro) for safety.


⁠Security Notes

  • 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.


⁠Development

Run locally (requires restic installed):

go run .

Or use the provided Dev Container.


⁠Roadmap / Ideas

  • 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

⁠License

MIT

Tag summary

Content type

Image

Digest

sha256:0c9ab5198…

Size

27.9 MB

Last updated

9 months ago

docker pull floibach/restic-browser