{"adoption": {"forks": 230, "observed_at": "2026-08-28T04:04:22.604933+00:00", "stars": 1325}, "canonical_url": "https://ross.abutalabs.com/products/proxmox-stuff", "card": {"archived": false, "artifact_type": "cli-tool", "description": "This is a collection of stuff that I wrote for Proxmox.", "domain": ["self-hosted", "infrastructure-as-code"], "enriched": true, "function": ["backup", "configuration-management", "deployment", "developer-tools", "cli"], "health_score": 74, "homepage": null, "language": "Shell", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["DerDanilo/proxmox-stuff"], "name": "DerDanilo/proxmox-stuff", "platform": ["cli", "self-hosted"], "pushed_at": "2026-07-02T15:59:23+00:00", "repo": "DerDanilo/proxmox-stuff", "stars": 1325, "tags": ["proxmox", "pve", "pmg", "pbs", "ansible-roles", "shell-scripts", "config-backup", "config-restore", "virtualization-administration", "devops", "virtualization", "automation", "linux"], "topics": [], "urls": [], "use_cases": ["back up Proxmox VE node configuration on a schedule", "restore a standalone PVE host's configuration after a failure", "automate Proxmox Backup Server setup with Ansible", "configure PBS client backups on PVE nodes", "set up Proxmox Mail Gateway via Ansible roles", "manage PMG mail domains programmatically"], "what_it_is": "A collection of shell scripts and Ansible roles for administering Proxmox VE, Proxmox Mail Gateway, and Proxmox Backup Server. It includes scripts to back up and restore standalone PVE node configurations, plus roles for setting up PBS, PVE, and PMG.", "when_to_avoid": ["you run a Proxmox cluster — the restore scripts explicitly do not support clusters and can corrupt cluster state", "you need to back up VM or LXC disk images and container data (these scripts only cover node configuration)", "you need a fully supported, guaranteed-maintained project — the author describes it as a personal reference with no support guarantees", "you want to restore onto a different PVE version or freshly installed host of a different version"], "when_to_choose": ["you run a standalone (non-clustered) Proxmox VE host and want simple node config backup/restore", "you want ready-made Ansible roles for PVE, PMG, or PBS setup", "you prefer lightweight shell scripts over heavier management tools", "you need a cron-driven backup of Proxmox node configuration"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/proxmox-stuff", "repo": "DerDanilo/proxmox-stuff", "role": "main", "score": 73}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:46:25.167596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d263f7038733ec8ce7375c4d153803bb8a3cca1a5965a3434782511ce30acb86", "fetched_at": "2026-08-28T04:04:22.604933+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerDanilo/proxmox-stuff"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:46:25.167596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d263f7038733ec8ce7375c4d153803bb8a3cca1a5965a3434782511ce30acb86", "fetched_at": "2026-08-28T04:04:22.604933+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerDanilo/proxmox-stuff"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:46:25.167596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d263f7038733ec8ce7375c4d153803bb8a3cca1a5965a3434782511ce30acb86", "fetched_at": "2026-08-28T04:04:22.604933+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerDanilo/proxmox-stuff"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:46:25.167596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d263f7038733ec8ce7375c4d153803bb8a3cca1a5965a3434782511ce30acb86", "fetched_at": "2026-08-28T04:04:22.604933+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerDanilo/proxmox-stuff"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:46:25.167596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d263f7038733ec8ce7375c4d153803bb8a3cca1a5965a3434782511ce30acb86", "fetched_at": "2026-08-28T04:04:22.604933+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerDanilo/proxmox-stuff"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:46:25.167596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d263f7038733ec8ce7375c4d153803bb8a3cca1a5965a3434782511ce30acb86", "fetched_at": "2026-08-28T04:04:22.604933+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerDanilo/proxmox-stuff"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:22.604933+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:46:25.167596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d263f7038733ec8ce7375c4d153803bb8a3cca1a5965a3434782511ce30acb86", "fetched_at": "2026-08-28T04:04:22.604933+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerDanilo/proxmox-stuff"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:46:25.167596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d263f7038733ec8ce7375c4d153803bb8a3cca1a5965a3434782511ce30acb86", "fetched_at": "2026-08-28T04:04:22.604933+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerDanilo/proxmox-stuff"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:46:25.167596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d263f7038733ec8ce7375c4d153803bb8a3cca1a5965a3434782511ce30acb86", "fetched_at": "2026-08-28T04:04:22.604933+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerDanilo/proxmox-stuff"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:46:25.167596+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d263f7038733ec8ce7375c4d153803bb8a3cca1a5965a3434782511ce30acb86", "fetched_at": "2026-08-28T04:04:22.604933+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DerDanilo/proxmox-stuff"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 90, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3198, "days_push": 62, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 73, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}