A lightweight NAS management UI written in Go — built for Linux and FreeBSD,
designed to stay out of the way of a vanilla system.
No container runtime. No database. No Node.js. Just a
single compiled binary, some Ansible playbooks, and a handful of static files.
features
Health badges, usage bars, fragmentation, dedup ratio, and the full vdev tree per pool.
Read/write IOPS and bandwidth per pool — pushed via Server-Sent Events every 10 s. Falls back to REST polling.
Collapsible depth-indented tree. Compression, quota, mountpoint. Inline editing of any ZFS property.
List, create (with recursive option), and delete snapshots — all with styled confirm dialogs. Page darkens and a live spinner appears immediately when any write operation runs.
Create, edit shell/password/groups, and delete local users. System accounts (uid < 1000) hidden by default — toggle to reveal.
Create, edit (name, GID, members), and delete local groups. System groups hidden by default with the same toggle.
View, add, and remove POSIX and NFSv4 ACL entries per dataset. One-click acltype enable. Recursive apply.
Enable, configure, and disable NFS sharing per dataset via the ZFS sharenfs property. Cross-platform (Linux & FreeBSD).
Samba usershares per dataset. Manage Samba users. One-click setup playbook that configures usershares, disables [homes], and enables PAM passthrough.
Temperature, power-on hours, reallocated sectors, pending sectors, and uncorrectable errors per drive.
Hostname, OS, kernel, CPU, uptime, load averages, and process stats. ZFS and dumpstore version in the header.
Go runtime, HTTP request counters & latency histograms, and Ansible playbook run metrics out of the box.
why this exists
I run a Kobol Helios64 as my home NAS — a five-bay ARM board that deserves better than the software ecosystem currently offers it. The existing storage UIs I tried were either too heavy, too opinionated about the underlying distribution, or simply unmaintained. None of them gave me a clean, no-nonsense window into my ZFS pools without pulling in a container runtime, a database, or a Node.js server alongside them.
What I wanted was simple: observe and manage my storage from a browser, on a machine that stays as close to a vanilla Linux or FreeBSD installation as possible. No agents, no daemons-within-daemons, no frameworks that outlive their welcome. Just a single compiled binary, some Ansible playbooks, and a handful of static files.
If you run a Helios64, an old server, or any ZFS box where you care about what is actually installed on it, this might be the tool for you.
screenshots
install
clone and install
git clone https://github.com/langerma/dumpstore.git cd dumpstore sudo ./install.sh
The script checks prerequisites, compiles the binary, copies everything to
/usr/local/lib/dumpstore/, and registers the service —
systemd on Linux, rc.d on FreeBSD.
open the UI
http://localhost:8080
The service starts automatically after install.
uninstall
sudo ./install.sh --uninstall
run without installing
go build -o dumpstore . sudo ./dumpstore -addr :8080 -dir .
-dir must point to the directory containing playbooks/
and static/. Defaults to the directory of the executable.
requirements
| dependency | Linux | FreeBSD |
|---|---|---|
| Build | Go 1.22+ | Go 1.22+ |
| ZFS | zfsutils-linux | built-in |
| Ansible | ansible (Python 3) | py311-ansible |
| S.M.A.R.T.optional | smartmontools | smartmontools pkg |
| POSIX ACLsoptional | acl | py311-pylibacl |
| NFSv4 ACLsoptional | nfs4-acl-tools | nfs4-acl-tools port |
| NFS sharingoptional | nfs-kernel-server / nfs-utils | built-in base system |
| SMB sharingoptional | samba | samba pkg |