PrivateCloud: one-command installer for a Kubernetes-based private cloud (k3s + monitoring + ingress + storage).
Project description
PrivateCloud ☁️
PrivateCloud is a Python CLI installer that provisions a Kubernetes-based private cloud stack.
It focuses on fast deployment, repeatable infrastructure, and production-ready defaults.
Features (v0.2.0)
- Provider abstraction — bare-metal SSH or Proxmox VE via Terraform
- Terraform runner — generates, applies, and destroys infrastructure automatically
- Config auto-write — Terraform outputs (node IPs) are written back to
privatecloud.yaml - Helm-based service installation — all services deployed natively via Helm charts
- Automated teardown —
privatecloud destroyremoves cloud-provisioned clusters - Installs K3s Kubernetes on master + worker nodes
- Deploys production services:
- Ingress NGINX
- cert-manager
- MetalLB
- Prometheus + Grafana (monitoring)
- Longhorn (storage)
Requirements
| Tool | Required |
|---|---|
| Python 3.9+ | ✅ |
| ssh / scp | ✅ |
| curl | ✅ |
| terraform | ✅ |
| helm | ✅ |
| kubectl | optional |
Run privatecloud doctor to verify your system.
Install
pip install privatecloud
Quickstart
privatecloud init # generate privatecloud.yaml
privatecloud doctor # check dependencies
privatecloud plan # preview the install plan
privatecloud install-cluster # deploy everything
privatecloud install-cluster --dry-run # preview without changes
privatecloud destroy # tear down (Terraform providers only)
Config File
[!WARNING] DO NOT COMMIT
privatecloud.yamlOR YOUR TERRAFORM DIRECTORY TO GIT. Your configuration contains secrets (e.g. Proxmox API tokens). Addprivatecloud.yamland.terraform*to your.gitignore.
Created automatically by privatecloud init:
cluster_name: my-private-cloud
provider: bare-metal # or "proxmox"
k3s_version: v1.29.0+k3s1
nodes:
- host: 192.168.1.10
user: root
role: master
- host: 192.168.1.11
user: root
role: worker
proxmox:
url: https://192.168.1.100:8006/api2/json
token_id: root@pam!mytoken
token_secret: your-secret-here
node: pve
template: ubuntu-2204-template
master_count: 1
worker_count: 2
storage: local-lvm
bridge: vmbr0
services:
metallb: true
ingress_nginx: true
cert_manager: true
monitoring: true
longhorn: true
When
provider: proxmox, nodes are provisioned dynamically via Terraform and their IPs are auto-written back into the config.
Provider Modules Roadmap
| Provider | Status | Description |
|---|---|---|
| Bare-metal | ✅ Stable | Direct SSH installation |
| Proxmox | ✅ v0.2.0 | Proxmox VE via Terraform |
| Hetzner | 🔜 v0.3.0 | Hetzner Cloud API |
| LibVirt | 🔜 v0.3.0 | Local KVM/libvirt VMs |
| vSphere | 📋 Backlog | VMware vSphere integration |
| OpenStack | 📋 Backlog | OpenStack integration |
Contributions welcome!
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file privatecloud-0.2.1.tar.gz.
File metadata
- Download URL: privatecloud-0.2.1.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5486e54d196bd06ebf0c2d6c5fe8f3304ddb5bffad720f79a05c41efc1c44d59
|
|
| MD5 |
89a44004d2c667b4594f7430150beb71
|
|
| BLAKE2b-256 |
7955f4f2f4e3e739fcb21d47f65678d2f12e6725211df21e7f18e2af2f4aeefd
|
Provenance
The following attestation bundles were made for privatecloud-0.2.1.tar.gz:
Publisher:
publish.yml on Kubenew/privatecloud
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
privatecloud-0.2.1.tar.gz -
Subject digest:
5486e54d196bd06ebf0c2d6c5fe8f3304ddb5bffad720f79a05c41efc1c44d59 - Sigstore transparency entry: 1369322708
- Sigstore integration time:
-
Permalink:
Kubenew/privatecloud@45d136da9f39bae44bd64d0236752719c4da8e23 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/Kubenew
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@45d136da9f39bae44bd64d0236752719c4da8e23 -
Trigger Event:
release
-
Statement type:
File details
Details for the file privatecloud-0.2.1-py3-none-any.whl.
File metadata
- Download URL: privatecloud-0.2.1-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9425626401f03622797bfe3773f9194f7139fb23725770c45ab866e9388a8429
|
|
| MD5 |
00733ee1d31f33390e3c544eacb7d1ed
|
|
| BLAKE2b-256 |
1bb96c4d01f1e5c8387bbad9c15207aed8ec90b74d446112cabf00eb2bed4f2e
|
Provenance
The following attestation bundles were made for privatecloud-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on Kubenew/privatecloud
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
privatecloud-0.2.1-py3-none-any.whl -
Subject digest:
9425626401f03622797bfe3773f9194f7139fb23725770c45ab866e9388a8429 - Sigstore transparency entry: 1369322784
- Sigstore integration time:
-
Permalink:
Kubenew/privatecloud@45d136da9f39bae44bd64d0236752719c4da8e23 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/Kubenew
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@45d136da9f39bae44bd64d0236752719c4da8e23 -
Trigger Event:
release
-
Statement type: