Sign inSign up

tristanteu/snapraid-ui

By tristanteu

•Updated 1 day ago

Web UI for SnapRAID — run sync/scrub, schedule jobs, monitor disks and SMART health

Image
0

95

tristanteu/snapraid-ui repository overview

⁠SnapRAID UI

A modern web interface for SnapRAID⁠.
Run sync and scrub, schedule jobs and keep an eye on disk health, all from your browser.

CI Docker Pulls Image Size Platforms SnapRAID

SnapRAID UI dashboard

⁠✨ Features

  • Array health at a glance: last sync and scrub, scrub coverage, next scheduled job
  • One-click commands: sync, scrub, status, diff, check, fix, with live output over WebSocket
  • Scheduler: cron-based sync and scrub jobs, no crontab editing
  • Disk overview: usage, file counts, fragmentation and parity headroom per disk
  • SMART monitoring and disk power control (spin down / up)
  • Logs: history of every run with full output
  • Config management: edit multiple snapraid.conf files, excludes and pool settings
  • English and German UI

⁠🐳 Quick start with Docker

The image ships with SnapRAID 14.9, so nothing needs to be installed on the host.

docker run -d --name snapraid-ui \
  --privileged \
  -p 3000:80 \
  -v ./snapraid:/app/snapraid \
  -v /mnt/disk1:/mnt/disk1 \
  -v /mnt/disk2:/mnt/disk2 \
  -v /mnt/parity:/mnt/parity \
  tristanteu/snapraid-ui:latest

Open http://localhost:3000⁠ and add your snapraid.conf in Manage Configurations.

Mount your disks at the same paths as on the host, so the paths in snapraid.conf stay valid. Parity and content locations must be writable. --privileged is only needed for SMART data and disk power.

⁠Docker Compose
curl -O https://raw.githubusercontent.com/firsttris/snapraid-ui/master/docker/docker-compose.yml
# add your disks under volumes:, then
docker compose up -d

For Podman with systemd, use the Quadlet files in docker/⁠.

⁠Configuration
VariableDefaultPurpose
SNAPRAID_BASE_PATH/app/snapraidHolds config.json, schedules.json, logs and your SnapRAID configs. Mount it as a volume.
SNAPRAID_BIN/usr/local/bin/snapraidSnapRAID binary. The bundled one is used unless you point this elsewhere.
SNAPRAID_EXTRA_ARGS(empty)Extra arguments for every SnapRAID call

Using your own SnapRAID binary: mount it and point SNAPRAID_BIN at it. It needs to be version 14.0 or newer, because the UI parses SnapRAID's structured log output.

  -v /usr/bin/snapraid:/usr/bin/snapraid:ro \
  -e SNAPRAID_BIN=/usr/bin/snapraid \
⁠Image tags
TagContent
latestLatest release
1.2.3, 1.2Specific release

⁠🛠️ Development

Requires Node.js 22+ and Deno 2.5+.

git clone https://github.com/firsttris/snapraid-ui
cd snapraid-ui
./install.sh
./start.sh           # uses ./snapraid and the snapraid binary on your PATH
./start.sh --demo    # sandbox with fake disks, no real array or SnapRAID install needed

Frontend runs on http://localhost:3000⁠, backend API on http://localhost:8080⁠. Ctrl+C stops both.

--demo runs dev/setup.sh, which builds a pinned SnapRAID into dev/bin/ (needs curl, gcc, make) and creates dev/sandbox/ with three data disks, a parity disk and a few pending changes. dev/setup.sh --reset starts over.

Stopping leftover processes
pgrep -af "src/main.ts"                                   # show running backends
pkill -f "deno task dev"; pkill -f "deno run.*src/main.ts"
pkill -f "vite dev"
⁠Building the image locally
docker build -f docker/Dockerfile -t snapraid-ui .

Pushing a v* tag publishes a multi-arch image to Docker Hub via GitHub Actions.

⁠Stack
  • Backend: Deno + Hono, WebSocket for live output, file-based storage
  • Frontend: React 19, TanStack Start/Router/Query, Tailwind CSS, Paraglide i18n
  • Container: Nginx reverse proxy, Supervisor, bundled SnapRAID

⁠🤝 Contributing

Issues and pull requests are welcome. Please run npx biome check, npm run typecheck and the tests (deno test in backend/, npm test in frontend/) before opening a PR.

⁠📄 License

MIT


Not affiliated with the SnapRAID project. SnapRAID is developed by Andrea Mazzoleni.

Tag summary

Content type

Image

Digest

sha256:cc8981cae…

Size

140.1 MB

Last updated

1 day ago

docker pull tristanteu/snapraid-ui