Skip to main content

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 teardownprivatecloud destroy removes 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.yaml OR YOUR TERRAFORM DIRECTORY TO GIT. Your configuration contains secrets (e.g. Proxmox API tokens). Add privatecloud.yaml and .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

privatecloud-0.2.1.tar.gz (12.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

privatecloud-0.2.1-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

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

Hashes for privatecloud-0.2.1.tar.gz
Algorithm Hash digest
SHA256 5486e54d196bd06ebf0c2d6c5fe8f3304ddb5bffad720f79a05c41efc1c44d59
MD5 89a44004d2c667b4594f7430150beb71
BLAKE2b-256 7955f4f2f4e3e739fcb21d47f65678d2f12e6725211df21e7f18e2af2f4aeefd

See more details on using hashes here.

Provenance

The following attestation bundles were made for privatecloud-0.2.1.tar.gz:

Publisher: publish.yml on Kubenew/privatecloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for privatecloud-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9425626401f03622797bfe3773f9194f7139fb23725770c45ab866e9388a8429
MD5 00733ee1d31f33390e3c544eacb7d1ed
BLAKE2b-256 1bb96c4d01f1e5c8387bbad9c15207aed8ec90b74d446112cabf00eb2bed4f2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for privatecloud-0.2.1-py3-none-any.whl:

Publisher: publish.yml on Kubenew/privatecloud

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page