PVE Storage Manager TUI
Python Textual-based TUI for managing ZFS snapshots and LXC mountpoints on Proxmox VE.
Features
- Snapshots tab — List, create, delete, rollback ZFS snapshots across all pools
- Schedules tab — Set up auto-snapshot cron jobs per dataset with auto-pruning (keep last N)
- Datasets tab — View all ZFS datasets with usage info
- LXC Mounts tab — View, add, and remove mountpoints for LXC containers
Installation
Run on Proxmox host as root.
1. Install dependencies
apt update
apt install -y python3-pip
pip3 install textual --break-system-packages
2. Copy the script
# Copy pve_tui.py to the Proxmox host, then:
chmod +x /root/pve_tui.py
3. Run
python3 /root/pve_tui.py
Optional: make it a command
cp /root/pve_tui.py /usr/local/bin/pve-tui
chmod +x /usr/local/bin/pve-tui
Then just run pve-tui from anywhere.
Keybindings
| Key | Action |
|---|---|
q |
Quit |
r |
Refresh current view |
n |
New snapshot |
d |
Delete selected snapshot |
s |
Add schedule |
Tab / arrow keys |
Navigate tabs |
↑ / ↓ |
Move selection in table |
How Scheduling Works
When you create a schedule, the tool:
- Installs a helper script at
/usr/local/bin/pve-tui-snapshot.sh - Adds a cron entry in root's crontab between markers:
# === PVE-TUI AUTO SNAPSHOT BEGIN === 0 3 * * * /usr/local/bin/pve-tui-snapshot.sh RAID1_1TB 7 # === PVE-TUI AUTO SNAPSHOT END === - On each run, creates
DATASET@auto-YYYYMMDD-HHMMSSand prunes oldestauto-*snapshots beyond the "keep last N" limit.
Manual snapshots (any name not starting with auto-) are never auto-pruned.
Safety Notes
- Rollback destroys all newer snapshots. Always double-check before confirming.
- LXC mount changes may require the container to be stopped (Proxmox will warn).
- Crontab is only modified inside the marker block — your other cron entries are untouched.
- The script uses
zfs,pct, andcrontab— no third-party ZFS tools required.
Troubleshooting
- "No datasets found" → check
zfs listworks as root - Cron not running → check
systemctl status cronand/var/log/syslog - Textual rendering issues → use a modern terminal (Alacritty, iTerm2, Windows Terminal)
Description
Languages
Shell
100%