This repository implements a threshold-based vertical autoscaling system for Proxmox VE virtual machines. It runs as a systemd service that periodically polls VM CPU and RAM usage via SSH commands (qm, pvesh) and adjusts CPU cores and RAM by 1 core or 512 MB when configurable high/low thresholds are crossed. The system includes host resource safety limits, per-VM threshold overrides, independent cooldowns for CPU and RAM, and optional billing tracking with CSV export and webhook notifications. It also provides a lightweight Prometheus metrics endpoint built on stdlib, supports Gotify and SMTP notifications, and offers a dry-run mode for safe evaluation. The architecture is a single-threaded polling loop with in-memory state, designed for simplicity and reliability rather than horizontal scaling or predictive analytics. The codebase is well-tested with over 290 unit tests and end-to-end tests against real Proxmox nodes, and includes comprehensive documentation via a VitePress site. Key reusable components include a generic SSH client with retry/backoff and host key policies, a thread-safe Prometheus metrics registry without external dependencies, and a configuration validation module that reports all errors at once.
This repository is a Go SDK and command-line tool for managing Proxmox VE. The core `proxmox` package provides typed configuration structs and client interfaces for nearly every Proxmox resource: QEMU VMs, LXC containers, storage backends, users, groups, pools, API tokens, snapshots, ACME accounts, metric servers, HA rules, SDN, and content templates/ISOs. The SDK maps strongly-typed Go structs to and from Proxmox's `/api2/json` endpoints, with pervasive validation, version-aware feature gates, and both legacy and modern client layers. A Cobra-based CLI in `cli/` exposes these operations to end users, while a deprecated `main.go` still exists for legacy command-line usage.
This repository is a large collection of Bash scripts that automate the deployment, configuration, and update of self-hosted services on Proxmox VE, primarily through LXC containers and VMs. It is a provisioning and automation framework rather than a runtime application: each ct/*.sh script declares resource variables (CPU, RAM, disk, OS template) and an optional update_script(), while install/*.sh scripts run inside an existing container to install a specific application. Usage is typically a one-line curl command executed as root on the Proxmox host, after which the script creates a container/VM, installs dependencies, generates credentials, writes systemd units or OpenRC init scripts, and configures databases and reverse proxies. The architecture is layered: hundreds of app-specific scripts wrap a smaller set of shared Bash function libraries in the misc/ directory (build.func, install.func, vm-core.func, core.func, error_handler.func). These shared functions handle common operations such as fetching GitHub releases, setting up language runtimes, creating databases, backing up configs before updates, and standardizing error handling. Update flows generally stop the service, back up configuration/data, fetch the latest release, restore the backup, run migrations, and restart the service. This consistency is the project's main strength and makes adding a new container recipe relatively straightforward. Weaknesses are typical of a large community-driven shell-script collection: no unit tests, heavy reliance on third-party installers fetched via curl|bash, some hardcoded versions, and external dependencies on GitHub release asset names and remote core-library URLs. Many scripts assume Debian/Ubuntu or Alpine bases and run as root with no signature verification. Despite these risks, the codebase is actively maintained, consistently formatted, and the shared function libraries are practical examples of reusable Bash abstractions for Proxmox automation.
This repository is a comprehensive, declarative NixOS homelab configuration managed with the Clan framework. It defines the entire infrastructure for a multi-machine homelab including servers, desktops, and network devices, all version-controlled and reproducible. The system provisions self-hosted services (Caddy, Grafana, VictoriaMetrics, Vector, Blocky, Miniflux, Linkding, etc.), identity management (Authentik, Zitadel), monitoring and alerting, backup (Borgbackup), and desktop environments (KDE, i3). The architecture is modular: reusable NixOS feature modules under `modules/nixos/features/` follow a consistent pattern using `mkFeatureOptions` for enabling services with standardized options (domain, firewall, monitoring integration). Secrets are managed via SOPS with age encryption, and disk partitioning is handled by Disko templates. The repository is not a software application but an infrastructure-as-code project that demonstrates high craftsmanship in Nix module design, with clear separation of concerns, helper functions, and integration patterns. It is actively maintained but shows some technical drift due to deprecated identity providers and hardcoded IPs.
PVE-Tools is a comprehensive, interactive Bash administration toolkit for Proxmox VE 9.x (Debian 13 Trixie). It provides a menu-driven CLI that wraps native PVE commands (qm, pct, pvesm, etc.) to automate common hypervisor management tasks: system optimization, APT mirror switching, kernel/GRUB management, GPU passthrough (NVIDIA, AMD, Intel SR-IOV/GVT-g), VM/container backup/restore/clone/migration, host networking (bridge, bond, VLAN, IPv6, firewall), storage (Ceph, LVM, mount), security auditing and CVE mitigation, and third-party tool integration (FastPVE, CoolerControl, IT87 drivers). The tool is distributed as a single assembled script built from modular source files (lib/ + src/modules/) via build.sh, and can be installed as a system command or run directly. It features a two-tier confirmation system for high-risk actions, marker-based config block management for idempotent edits, and automatic backups under /var/backups/pve-tools/. The UI is primarily Chinese with a branded ASCII banner and community channels built in.
ProxMorph is a comprehensive theming system for the Proxmox VE, PBS, and Proxmox Datacenter Manager web interfaces. It provides 23+ dark and light themes derived from popular color palettes (Catppuccin, Dracula, Nord, Gruvbox, Solarized, Tokyo Night, UniFi, GitHub Dark, Blue Slate). The project's primary artifact is a bash installer (`install.sh`) that detects the Proxmox product, deploys CSS files into Proxmox's widget-toolkit directory, patches `proxmoxlib.js` to register themes in the native Color Theme selector, and optionally installs APT hooks for re-patching after system updates. It also includes hardware sensor monitoring (CPU/NVMe/HDD temps, fan speeds, UPS) via a Perl patch to `Nodes.pm` and a client-side JavaScript widget. Architecture is a hybrid of shell scripting (installer, theme generation), static CSS (themes), and JavaScript patches (theme selector, chart colors, sensor display). Each theme is a standalone CSS file (~2000-3000 lines) that overrides ExtJS component classes with heavy use of `!important`. The installer supports cluster-wide deployment via SSH, checksum verification for supply-chain security, and rollback via backup files. The project also includes a component inventory document and a generator for OLED variants using awk-based palette substitution. While the theming itself is tightly coupled to Proxmox's ExtJS DOM structure, the installer and generation scripts exhibit non-trivial shell scripting patterns. The project is actively maintained (v2.8.4), with detailed changelogs and versioned releases. It is not a data research project; all content is UI theming and deployment tooling.