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:

  1. Installs a helper script at /usr/local/bin/pve-tui-snapshot.sh
  2. 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 ===
    
  3. On each run, creates DATASET@auto-YYYYMMDD-HHMMSS and prunes oldest auto-* 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, and crontab — no third-party ZFS tools required.

Troubleshooting

  • "No datasets found" → check zfs list works as root
  • Cron not running → check systemctl status cron and /var/log/syslog
  • Textual rendering issues → use a modern terminal (Alacritty, iTerm2, Windows Terminal)
Description
No description provided
Readme 70 KiB
Languages
Shell 100%