Listen to this Post

Introduction:
Keeping a Proxmox VE cluster secure and up‑to‑date is a critical yet repetitive operational task, often forcing administrators into risky manual node‑by‑node updates. ProxPatch is a lightweight, automation‑first orchestration tool designed to eliminate this headache by performing rolling security updates across cluster nodes, safely migrating VMs, and handling reboots with minimal service disruption.
Learning Objectives:
- Understand how ProxPatch automates rolling patch management for Proxmox VE clusters.
- Implement automated VM migration and controlled reboots during maintenance windows.
- Configure and execute ProxPatch to secure production environments without downtime.
You Should Know:
- Understanding ProxPatch: A Deep Dive into Automated Rolling Patch Management
ProxPatch is a rolling patch orchestration tool that automates one of the most repetitive and risk‑prone operational tasks in Proxmox VE clusters: keeping all nodes updated without interrupting running workloads. Unlike heavyweight lifecycle platforms, ProxPatch focuses solely on doing one job exceptionally well—unattended and fully automated rolling patching with minimal service disruption.
ProxPatch is written in Rust and is fully open‑source, ensuring high performance and memory safety while remaining lightweight. It uses native Proxmox tooling (pvesh, qm, SSH) rather than external frameworks, databases, or API tokens, which makes the tool easy to audit and predictably reliable. The tool works seamlessly with shared storage (e.g., Ceph, NFS) to enable live migration of VMs between nodes during the patching process.
How ProxPatch Works at a Technical Level:
- Cluster State Inspection: ProxPatch first checks the overall health of the cluster, including quorum status, node availability, and shared storage connectivity.
-
Node Draining: For each node in the cluster, ProxPatch identifies all running VMs and containers.
-
Live Migration: Using Proxmox’s native live migration capabilities, VMs are moved to other healthy nodes without any downtime (typically less than 1 second of disruption per VM).
-
Patch Application: Once the node is empty, ProxPatch applies security updates via SSH using Debian’s package management system.
-
Reboot Handling: If a kernel update or other system component requires a reboot, ProxPatch performs a controlled reboot and waits for the node to rejoin the cluster.
-
Cluster Quorum Validation: After each node returns to service, ProxPatch verifies that quorum is maintained before proceeding to the next node.
Common Use Cases:
- Production Clusters: Automate patching of Hyperconverged Infrastructure (HCI) environments running critical workloads.
- Homelab Environments: Eliminate manual maintenance windows for enthusiasts running multiple nodes.
- Ceph‑Backed Storage: Proper sequencing of Ceph maintenance flags and node updates ensures zero data loss.
- Remote Edge Deployments: Unattended patching of geographically distributed Proxmox nodes without local admin access.
Linux Commands for Cluster Administration:
Check cluster status and quorum pvecm status Verify node list and their states pvecm nodes List all running VMs on a specific node qm list | grep running Manually migrate a VM to another node (for testing) qm migrate <VMID> <TARGET_NODE> --online Check current cluster logs for quorum issues journalctl -u corosync -f Verify shared storage accessibility pvesm status List pending security updates on a node apt list --upgradable | grep -i security
Windows Commands (for remote administration via SSH from Windows):
Connect to Proxmox host via SSH (using PowerShell) ssh root@proxmox-node-ip Use plink (PuTTY command-line) to run remote commands plink root@proxmox-node-ip "pvecm status" Copy ProxPatch configuration file to nodes (using pscp) pscp C:\proxpatch\config.yaml root@proxmox-node-ip:/etc/proxpatch/
- Step‑by‑Step Guide: Installing and Configuring ProxPatch on Your Proxmox Cluster
Before installing ProxPatch, ensure your environment meets the requirements: a Proxmox VE cluster (version 8.x or 9.x) with at least three nodes, shared storage for live migration (Ceph or NFS), passwordless SSH key‑based authentication between nodes, and `jq` installed for JSON parsing. ProxPatch must run on exactly one node per cluster—do not enable or start the service on multiple nodes simultaneously.
Installation Steps:
1. Add the Official ProxPatch Repository:
Download and add the GPG key curl https://git.gyptazy.com/api/packages/gyptazy/debian/repository.key -o /etc/apt/keyrings/gyptazy.asc Add the repository echo "deb [signed-by=/etc/apt/keyrings/gyptazy.asc] https://packages.gyptazy.com/api/packages/gyptazy/debian trixie main" | sudo tee -a /etc/apt/sources.list.d/gyptazy.list Update package lists apt-get update
2. Install ProxPatch:
apt-get install -y proxpatch
3. Verify Installation:
proxpatch --version
4. Configure ProxPatch (Optional):
Create a configuration file at `/etc/proxpatch/config.yaml` if custom behavior is needed. Example configuration:
cluster: nodes: - proxmox-node-1 - proxmox-node-2 - proxmox-node-3 patching: order: sequential reboot_timeout: 300 migration_timeout: 600 notifications: email: [email protected]
5. Set Up SSH Key Authentication:
Generate SSH key pair (if not already present) ssh-keygen -t rsa -b 4096 Copy public key to all cluster nodes ssh-copy-id root@proxmox-node-1 ssh-copy-id root@proxmox-node-2 ssh-copy-id root@proxmox-node-3
6. Enable and Start the ProxPatch Service:
systemctl enable proxpatch systemctl start proxpatch
7. Monitor the Patching Process:
View live logs journalctl -u proxpatch -f Check service status systemctl status proxpatch
Troubleshooting Common Issues:
- Quorum Loss: If a node fails to rejoin after reboot, manually restart corosync:
systemctl restart corosync. - Migration Failures: Verify shared storage connectivity with `pvesm status` and ensure target nodes have sufficient resources.
- SSH Timeouts: Increase `ServerAliveInterval` in `/etc/ssh/ssh_config` to prevent connection drops during long operations.
3. ProxPatch Configuration: Optimizing for Security and Performance
While ProxPatch works out of the box with no configuration required, fine‑tuning specific parameters can significantly enhance both security and operational efficiency in your environment. Understanding each configuration option allows you to tailor the tool to your cluster’s unique characteristics.
Essential Configuration Parameters:
/etc/proxpatch/config.yaml scheduling: maintenance_window: "02:00-04:00" Execute only during defined hours max_concurrent_migrations: 2 Limit parallel VM migrations pre_patch_hook: "/usr/local/bin/backup-critical-vms.sh" post_patch_hook: "/usr/local/bin/verify-cluster-health.sh" security: enable_audit_logging: true Log all actions to /var/log/proxpatch/audit.log verify_checksums: true Validate package integrity before installation require_maintenance_approval: false Manual approval for production clusters reboot: strategy: "intelligent" Options: always, never, intelligent max_retries: 3 Number of reboot attempts before failing post_reboot_quorum_wait: 120 Seconds to wait for quorum after reboot notifications: webhook: "https://your-monitoring-system.com/webhook" slack_webhook: "https://hooks.slack.com/services/..." email_recipients: ["[email protected]", "[email protected]"] environment: dry_run: false Test without applying changes debug_logging: false Enable verbose logging
Security Hardening Recommendations:
- API Security: ProxPatch avoids external API tokens by using native Proxmox tooling, reducing the attack surface. For remote access, always use SSH keys with strong passphrases rather than passwords.
-
Audit Trail: Enable `enable_audit_logging` to maintain a complete record of all patching activities. This is crucial for compliance with standards like PCI‑DSS, HIPAA, or SOC 2.
-
Pre‑Patching Validations: Use the `pre_patch_hook` to run security scans or backup operations before any changes are applied:
!/bin/bash pre_patch_hook.sh - Verify cluster health before patching echo "Starting pre-patch validation at $(date)" >> /var/log/proxpatch/audit.log Check if all nodes are online for node in $(pvecm nodes | grep -E '^[0-9]' | awk '{print $3}'); do if ! ping -c 1 $node &>/dev/null; then echo "ERROR: Node $node is unreachable" >> /var/log/proxpatch/audit.log exit 1 fi done Verify Ceph health (if using Ceph storage) if command -v ceph &>/dev/null; then ceph health detail >> /var/log/proxpatch/audit.log fi</p></li> </ol> <p>echo "Pre-patch validation completed successfully" >> /var/log/proxpatch/audit.log- Container Hardening: For LXC containers, ProxPatch respects existing security configurations and does not alter container‑level isolation settings. Always ensure containers are running with unprivileged mode enabled where possible.
-
Network Segmentation: Run ProxPatch on a dedicated management VLAN to prevent exposure of cluster administration traffic to production networks.
-
Automation and Integration: Extending ProxPatch with Existing DevOps Toolchains
ProxPatch is designed to integrate seamlessly with broader automation frameworks, enabling you to incorporate rolling updates into your existing CI/CD pipelines and monitoring stacks. While ProxPatch itself remains dependency‑free, its predictable behavior makes it an ideal component for large‑scale infrastructure as code (IaC) deployments.
Integration with Ansible:
playbook.yml - Automate ProxPatch configuration across multiple clusters - name: Deploy ProxPatch to all Proxmox clusters hosts: proxmox_clusters become: yes tasks: - name: Add ProxPatch repository apt_repository: repo: "deb [signed-by=/etc/apt/keyrings/gyptazy.asc] https://packages.gyptazy.com/api/packages/gyptazy/debian trixie main" state: present <ul> <li>name: Install ProxPatch apt: name: proxpatch state: latest</p></li> <li><p>name: Deploy custom configuration template: src: templates/proxpatch_config.yaml.j2 dest: /etc/proxpatch/config.yaml notify: restart proxpatch</p></li> <li><p>name: Enable and start service systemd: name: proxpatch enabled: yes state: started
- Zabbix: Create custom items that execute `proxpatch status` and parse its JSON output.
- Nagios: Write a check script that verifies the last successful patch run is within your compliance window.
- ELK Stack: Configure Filebeat to ship `/var/log/proxpatch/.log` to Elasticsearch for centralized log analysis and anomaly detection.
- ProxPatch addresses a critical gap in the Proxmox ecosystem by automating rolling updates that the native API currently does not support.
- The tool’s dependency‑free architecture and use of native Proxmox utilities make it both highly portable and auditable for security‑conscious teams.
- By enforcing a rolling, safety‑first execution model, ProxPatch eliminates the most common cause of cluster outages during maintenance—human error.
- The integration with ProxLB hints at a broader trend toward intent‑driven automation in infrastructure management.
- While still labeled experimental, the tool’s thoughtful design and active community support suggest it will mature quickly for production use.
Monitoring with Prometheus and Grafana:
prometheus.yml - Custom exporter for ProxPatch metrics scrape_configs: - job_name: 'proxpatch' static_configs: - targets: ['localhost:9091'] ProxPatch exposes metrics on port 9091 metrics_path: '/metrics' params: format: ['prometheus']
Extracting Metrics for Analysis:
Query ProxPatch’s internal metrics endpoint
curl http://localhost:8080/api/v1/metrics | jq '.'
Sample output
{
"proxpatch_nodes_total": 3,
"proxpatch_nodes_patched": 2,
"proxpatch_vms_migrated": 12,
"proxpatch_last_run_duration_seconds": 842,
"proxpatch_current_status": "in_progress"
}
Integration with Monitoring Tools:
Combining ProxPatch with ProxLB for Load Balancing:
ProxPatch integrates smoothly with ProxLB, a DRS‑like workload balancer. When used together, ProxLB redistributes VMs before patching to ensure even resource utilization, making the entire cluster more resilient during maintenance.
5. Security Validation: Testing Your ProxPatch Deployment
Before trusting ProxPatch in a production environment, thorough validation in a staging or homelab setup is essential. The following step‑by‑step guide helps you verify that rolling updates work as expected, with no unintended downtime or data loss.
Step 1: Create a Test Cluster Environment
Set up a three-node Proxmox test cluster using nested virtualization or separate VMs Install Proxmox VE on three Ubuntu/Debian hosts apt install proxmox-ve postfix open-iscsi -y Verify the cluster is healthy pvecm status
Step 2: Deploy Test Workloads
Create several test VMs with dummy workloads
for i in {1..5}; do
qm create $i --memory 512 --cores 1 --name "test-vm-$i" --ostype l26
qm set $i --scsihw virtio-scsi-pci --virtio0 local:8
qm start $i
done
Create a web server VM that generates access logs
qm create 100 --memory 1024 --cores 2 --name "web-test" --net0 virtio,bridge=vmbr0
qm start 100
Step 3: Validate Live Migration
Monitor active migrations while ProxPatch runs watch -n 2 'qm list | grep running' Live migration demo (manual test) qm migrate 100 proxmox-node-2 --online
Step 4: Execute ProxPatch in Dry‑Run Mode
Dry run to preview actions without making changes proxpatch --dry-run Detailed dry run with logging proxpatch --dry-run --debug
Step 5: Run ProxPatch and Observe Behavior
Execute a manual run (not as a service) proxpatch run --verbose Watch logs in real time journalctl -u proxpatch -f --since "5 minutes ago"
Step 6: Verify Successful Patching
Check package versions on each node for node in proxmox-node-1 proxmox-node-2 proxmox-node-3; do echo "=== $node ===" ssh $node "apt list --upgradable 2>/dev/null | grep -c security || echo '0 security updates pending'" done Verify no VMs were lost during the process qm list | wc -l
Step 7: Simulate Failure Scenarios
Force a node offline during patching to test resilience iptables -A INPUT -j DROP Block all incoming traffic on one node ProxPatch should detect the unresponsive node and abort or skip it journalctl -u proxpatch | grep -i "error|unreachable" Restore connectivity and retry iptables -D INPUT -j DROP
What Undercode Say:
Prediction:
As virtualization clusters continue to scale, manual patching will become untenable for all but the smallest deployments. Tools like ProxPatch represent the next wave of infrastructure automation—lightweight, single‑purpose utilities that integrate seamlessly into existing ecosystems without adding complexity. Over the next 12–18 months, expect to see ProxPatch evolve into a standard component of Proxmox deployments, potentially influencing the Proxmox development team to incorporate similar rolling update capabilities natively. Security‑focused organizations will also begin mandating automated patch orchestration as part of compliance frameworks, citing reduced downtime and improved auditability as primary drivers.
▶️ Related Video (78% Match):
🎯Let’s Practice For Free:
IT/Security Reporter URL:
Reported By: H%C3%BCseyin P – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅


