(ZFS Management GUI / WEBUI) π»
ZfDash provides user interfaces (both a Desktop GUI and a Web UI) built with Python to simplify common ZFS pool, dataset, and snapshot management tasks on Linux. It interacts with a secure background daemon, launched on demand via Polkit, to perform ZFS operations.
** DISCLAIMER **
- User Responsibility: You are solely responsible for understanding the ZFS commands being executed by this tool and for the integrity of your data. ALWAYS HAVE RELIABLE, TESTED BACKUPS of critical data before performing any operations. Using this tool can lead to PERMANENT DATA LOSS if not used carefully.
- β¨ Features
- πΈ Screenshots
- βοΈ Requirements
- π Installation & Running
- π³ Docker Usage
- π‘ Usage Tutorial
- π Motivation
β οΈ IMPORTANT WARNINGS- π License
- π Secure backend daemon (Polkit/
pkexec) & pipe communication. - π» Desktop GUI (PySide6) & π Web UI (Flask/Waitress) with secure login (Flask-Login, PBKDF2).
- π Pool Management: View status, Create (various vdevs), Destroy, Import, Export, Scrub, Clear errors, Edit structure (Add/Remove/Attach/Detach/Replace/etc.), Force option.
- π³ Dataset/Volume Management: Tree view, Create/Destroy (recursive), Rename, View/Edit properties, Inherit, Promote, Mount/Unmount.
- πΈ Snapshot Management: View, Create (recursive), Delete, Rollback (DANGEROUS!), Clone.
- π Encryption Support: Create encrypted datasets, View status, Manage keys (Load/Unload/Change).
- π Utilities: Optional command logging.
Web UI:
Desktop GUI:
- Linux Operating System (Tested primarily on Fedora 41, should work on other systemd-based distros)
- ZFS installed and configured (Tested with zfs-2.3.1.
zfsandzpoolcommands must be executable by root). - Python 3 (Developed/Tested with 3.11, 3.13).
- Python Dependencies (for Build/Manual Run): Listed in
requirements.txt(PySide6 for GUI, Flask, Waitress, Flask-Login for WebUI). If building from source,pipand potentiallypython3-venvare needed.
Default WebUI: http://127.0.0.1:5001, Login: admin/admin (CHANGE IMMEDIATELY!)
Method 1: Pre-Built Release (Desktop/Manual WebUI)
- Download & Extract Release (
.tar.gz). cd zfdash-vX.Y.Zchmod +x install.shsudo ./install.sh- Launch GUI: App Menu/
zfdash, Launch Web UI:zfdash --web [--host <ip>] [--port <num>] - Uninstall:
sudo /opt/zfdash/uninstall.sh(Note: Installer usually makes this executable)
Method 2: Build From Source (Desktop/Manual WebUI)
git clone https://github.com/ad4mts/zfdash && cd zfdashchmod +x build.sh./build.sh(Needs build tools)chmod +x install.shsudo ./install.sh- Launch/Uninstall: See Method 1.
Method 3: Docker (Only Web UI) Running zfdash in a privileged Docker container.
This is the recommended method for deploying the ZfDash Web UI.
The image is available on both Docker Hub and GitHub Container Registry (GHCR). Docker Hub is the recommended source.
-
From Docker Hub (Recommended):
sudo docker pull ad4mts/zfdash:latest
-
From GitHub Container Registry (Alternative):
sudo docker pull ghcr.io/ad4mts/zfdash:latest
This command starts the container and uses Docker named volumes (zfdash_config and zfdash_data) to safely persist your application's configuration and data.
sudo docker run -d --name zfdash \
--privileged \
--device=/dev/zfs:/dev/zfs \
-v zfdash_config:/root/.config/ZfDash \
-v zfdash_data:/opt/zfdash/data \
-p 5001:5001 \
--restart unless-stopped \
ad4mts/zfdash:latestA Docker Compose stack is also included. To use that instead of the above Docker command:
sudo docker compose up -dYou can then access the Web UI at http://localhost:5001.
Stopping and removing the container, if deployed with the Docker command:
sudo docker stop zfdash
sudo docker rm zfdashOr if deployed with Docker Compose (add -v to remove the volumes as well):
sudo docker compose downZfDash requires direct access to the host's ZFS subsystem, which presents a security challenge for containerization.
--privilegedFlag: The command above uses--privileged, which grants the container full, unrestricted access to the host. This is the simplest way to ensure functionality but is also the least secure.- A More Secure Alternative: For better security, you can replace
--privilegedwith the more granular--cap-add SYS_ADMINflag and mount /dev as volume using-v /dev:/dev(so the container has access to disks). If you still encounter permission errors (often due to AppArmor or SELinux policies on the host), you may also need to add--security-opt seccomp=unconfinedas a last resort.- If using Docker Compose, use the included compose.moresecure.yml to as an override and redeploy:
mv compose.moresecure.yml compose.override.yml docker compose up -d
- If using Docker Compose, use the included compose.moresecure.yml to as an override and redeploy:
Method 4: Web UI Systemd Service (Headless/Server) Note: (Polkit<0.106 is not supported for now, ie older Distros)
- Install ZfDash via Method 1 or 2 first.
cd install_servicechmod +x install_web_service.shsudo ./install_web_service.sh(Follow prompts for setup)- Control:
sudo systemctl [start|stop|status|enable|disable] zfdash-web - Access:
http://<server-ip>:5001(or configured port/host) - Uninstall Service:
cd install_service && chmod +x uninstall_web_service.sh && sudo ./uninstall_web_service.sh
- Launch: Follow installation steps. For Web UI, login (
admin/admin) and CHANGE PASSWORD IMMEDIATELY via user menu. - Navigation: Left pane shows ZFS object tree. Right pane shows details/actions for selected object via tabs (Properties, Snapshots, etc.). Top bar/menu has global actions (Refresh π, Create, Import) & Web UI user menu.
- Common Tasks: Select object in tree, use right pane tabs or top bar/menu buttons. Examples: Check Pool Status/Properties tabs for health/usage. Use Snapshots tab to create/delete/rollback/clone. Use top bar/menu to create datasets. Use Encryption tab to manage keys.
- Remember: Destructive actions are irreversible. Double-check selections & keep backups!
As a resident doctor, my main focus isn't software, but I enjoy exploring Python, Linux, and security as a hobby. ZfDash grew out of this hobby and my own need for a simpler way to manage my ZFS storage.
With some help from AI tools, I built this GUI/WebUI and decided to share it with the open-source community, hoping it might help others too. I'll do my best to maintain it, but my time is limited, so please feel free to fork the project if you'd like to expand on it!
- Developer Note: Created as a personal hobby project by a non-professional; use with understanding of potential limitations or bugs.
- Use As Is / Beta: Provided "AS IS" without warranty. This is beta software and may contain errors.
- No Liability: In no event shall authors/copyright holders be liable for any claim, damages, or other liability related to the software.
- Data Risk: ZFS operations can be destructive (destroy, rollback, etc.). Careless use can lead to PERMANENT DATA LOSS.
- User Responsibility: You are solely responsible for understanding the commands executed and for data integrity. ALWAYS HAVE RELIABLE, TESTED BACKUPS.
- Security: Manages privileged operations via Polkit. Use only on trusted systems/networks. CHANGE DEFAULT PASSWORD (
admin:admin) IMMEDIATELY.
This project is licensed under the General Public License v3.0 License.