When a host gets transient I/O events on a disk while smartctl is
momentarily unavailable (the canonical case: late in a noisy
shutdown), the disk-scan code records a `disk_<name>` WARNING tagged
"SMART: unavailable" exactly once and trusts the next scan to clear
it. That trust is misplaced: the clear path only fires when the
device shows up in the current dmesg window with zero events. After
a reboot, dmesg is empty for that device — so the device never gets
iterated, resolve_error is never called, and the dashboard stays
orange for a disk whose SMART now reports PASSED.
Caught on a lab host where `disk_nvme2n1` had been stuck as WARNING
for hours after a reboot. SMART was 100% healthy at the moment of
inspection (Critical Warning 0x00, 0 media errors, 100% spare). The
error's first_seen and last_seen were identical and pre-dated the
current boot, confirming a one-shot record that nothing had cleared.
Fix: add a `_reconcile_stale_disk_warnings()` pass at the top of
`_check_disks_optimized()`. For every active `disk_*` error
(skipping `disk_fs_*`, which is already reconciled separately):
- device gone from /dev/ → resolve "Device no longer present"
- device present + SMART PASSED → resolve "Transient I/O cleared,
SMART now reports healthy"
- device present + SMART UNKNOWN/FAILED → leave active so the
main loop can re-classify on the next dmesg window
Acknowledged errors are left alone so the user's explicit dismiss
intent isn't overridden.
Verified end-to-end: re-injected the original `disk_nvme2n1`
warning into the persistence DB on the lab host, waited one scan
cycle, error was resolved automatically with `resolved_at` set and
`resolution_reason = 'Transient I/O cleared, SMART now reports
healthy'`.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
ProxMenux is a management tool for Proxmox VE that simplifies system administration through an interactive menu, allowing you to execute commands and scripts with ease.
📌 Installation
To install ProxMenux, simply run the following command in your Proxmox server terminal:
bash -c "$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/main/install_proxmenux.sh)"
⚠️ Be careful when copying scripts from the internet. Always remember to check the source!
📄 You can review the source code before execution.
🛡️ All executable links follow our Code of Conduct.
📌 How to Use
Once installed, launch ProxMenux by running:
menu
Then, follow the on-screen options to manage your Proxmox server efficiently.
🖥️ ProxMenux Monitor
ProxMenux Monitor is an integrated web dashboard that provides real-time visibility into your Proxmox infrastructure — accessible from any browser on your network, without needing a terminal.
What it offers:
- Real-time monitoring of CPU, RAM, disk usage and network traffic
- Overview of running VMs and LXC containers with status indicators
- Login authentication to protect access
- Two-Factor Authentication (2FA) with TOTP support
- Reverse proxy support (Nginx / Traefik)
- Designed to work across desktop and mobile devices
Access:
Once installed, the dashboard is available at:
http://<your-proxmox-ip>:8008
The Monitor is installed automatically as part of the standard ProxMenux installation and runs as a systemd service (proxmenux-monitor.service) that starts automatically on boot.
Useful commands:
# Check service status
systemctl status proxmenux-monitor
# View logs
journalctl -u proxmenux-monitor -n 50
# Restart the service
systemctl restart proxmenux-monitor
🧪 Beta Program
Want to try the latest features before the official release and help shape the final version?
The ProxMenux Beta Program gives early access to new functionality — including the newest builds of ProxMenux Monitor — directly from the develop branch. Beta builds may contain bugs or incomplete features. Your feedback is what helps fix them before the stable release.
Install the beta version:
bash -c "$(wget -qLO - https://raw.githubusercontent.com/MacRimi/ProxMenux/develop/install_proxmenux_beta.sh)"
What to expect:
- You'll get new features and Monitor builds before anyone else
- Some things may not work perfectly — that's expected and normal
- When a stable release is published, ProxMenux will notify you on the next
menulaunch and offer to switch automatically
How to report issues:
Open a GitHub Issue and include:
- What you did and what you expected to happen
- Any error messages shown on screen
- Logs from the Monitor if relevant:
journalctl -u proxmenux-monitor -n 50
💙 Thank you for being part of the beta program. Your help makes ProxMenux better for everyone.
🔧 Dependencies
The following dependencies are installed automatically during setup:
| Package | Purpose |
|---|---|
dialog |
Interactive terminal menus |
curl |
Downloads and connectivity checks |
jq |
JSON processing |
git |
Repository cloning and updates |
python3 + python3-venv |
Translation support (Translation version only) |
googletrans |
Google Translate library (Translation version only) |
🛡️ Security Note / VirusTotal False Positive
If you scan the raw installation URL on VirusTotal, you might see a 1/95 detection by heuristic engines like Chong Lua Dao. This is a known false positive. Because this script uses the standard
curl | bashinstallation pattern and downloads legitimate binaries (likejqfrom its official GitHub release), overly aggressive scanners flag the behavior. The script is 100% open source and safe to review. You can read more about this in Issue #162.
🤝 Contributing
ProxMenux is an open, collaborative project — contributions of every shape are very welcome, no matter your background. Every PR, bug report, idea, translation or kind word helps move the project forward.
📖 Before sending code, please read the Contributing Guide. It covers the project structure, the UI design policy (the two-phase
dialog/whiptailflow), message helpers, translation policy and submission conventions — what reviewers will look for in your PR.
Ways to help:
- 💻 Code — fix a bug, polish a script, add a feature. Read the Contributing Guide first, then open a pull request.
- 🐛 Bug reports — found something broken? Open an issue with steps to reproduce, and the Monitor logs if relevant (
journalctl -u proxmenux-monitor -n 50). - 💡 Ideas & feedback — share suggestions in GitHub Discussions. Every idea is welcome.
- 🌍 Translations — the documentation site already supports English and Spanish; help expand it to more languages following the translation guide (one page per PR).
- 🧪 Beta testing — run the beta build and let us know what you find.
- ⭐ Spread the word — a GitHub star or a mention in your homelab community helps others discover the project.
Before contributing, please take a moment to read our Code of Conduct.
Contributors
Thanks to everyone who has helped make ProxMenux what it is today.
Made with contrib.rocks.
⭐ Support the Project
If ProxMenux is useful to you, the simplest way to support it is a ⭐ on GitHub — it really helps others discover the project.
If you want to go a step further, a coffee on Ko-fi keeps development going:
