Remix.run Logo
Show HN: Proxmox‑GitOps: Self-Hosted GitOps (demo incl., recursive Monorepo IaC)(github.com)
1 points by stevius10 10 hours ago

Proxmox‑GitOps implements a self‑contained CI/CD control plane for Proxmox VE that bootstraps from a single repository and manages itself recursively within the LXC containers under management

Repository: https://github.com/stevius10/Proxmox-GitOps

Demo (1min+): https://youtu.be/2oXDgbvFCWY?si=gSSACmVi0mO6v8xx

Architecture

- A local bootstrap (`./local/run.sh`) seeds a Gitea instance and runner, initializes the pipeline, and creates an initial PR. Merging this PR transitions the system into self-management; subsequent commits converge the desired state across Proxmox LXC containers.

- The system uses a self-contained monorepo with reusable container libraries. Ansible handles provisioning against Proxmox, while Cinc (Chef) performs desired-state convergence and cross-layer orchestration where declarative modeling is insufficient.

Concept

- Recursive self-management: the control plane executes within the managed containers to maximize reproducibility and minimize drift.

- Git as current desired state: operations map to standard Git workflows (commit, merge, rollback) in a stateless management model.

- Convention-based extensibility: add a service by copying a container definition from libs, adding a minimal cookbook and `config.env`; the pipeline handles provisioning, configuration, and validation.

- Loose coupling: containers remain independently replaceable and continue to function without manual follow-up.

Environment

- Proxmox VE 8.4–9.0, Debian 13 LXC per default.

- Local bootstrap via Docker; further actions are repository-driven.

Install

- Configure Proxmox credentials in `./local/config.json`. - Run `./local/run.sh` to seed the environment.

- Accept the initial PR in the seeded Gitea instance at `localhost:8080/main/config`.

- Push changes to trigger provisioning, convergence, and validation on Proxmox VE.

Trade-Offs

- The recursive bootstrap increases complexity to preserve rebuild‑from‑repo semantics and deterministic behavior.

- On Proxmox 9, stricter token privileges limit certain operations; automation uses root‑context API access where tokens are insufficient.