(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 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
- 💡 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: Web UI Systemd Service (Headless/Server)
- 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
Method 4: Manual Run (Development Only)
- Clone repo:
git clone https://github.com/ad4mts/zfdash && cd zfdash - Setup venv & install deps:
python3 -m venv venv && source venv/bin/activate && pip install -r requirements.txt - Ensure Polkit policy is installed (see
install.shor copy manually). - Run GUI:
cd src && python3 main.py - Run Web UI:
cd src && python3 main.py --web [--host <ip>] [--port <num>] [--debug]
- 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.