Skip to main content
Loss of provenance

A previous release had provenance metadata, but this release does not. View details.

PrivateCloud

PyPI Version Python Versions License: MIT Tests Downloads Docker Pulls

Terraform + K3s + Python = your own private cloud.

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.


Demo

PrivateCloud Demo

▶ Watch full demo video


Features Overview (v0.8.0)

Deployment

  • Provider abstraction — bare-metal SSH, Proxmox VE, or HPE Morpheus VM Essentials via Terraform
  • Terraform runner — generates, applies, and destroys infrastructure automatically
  • Config auto-write — Terraform outputs (node IPs) written back to privatecloud.yaml
  • Helm-based service installation — all services deployed via Helm charts

Cluster Management

  • Cluster upgrade — privatecloud upgrade v1.30.0+k3s1
  • Multi-cluster — manage multiple clusters with cluster list/add/switch/remove
  • HA setup — high availability with multiple masters
  • Add-on marketplace — one-command install of common tools

Backup & Restore

  • Local backups — full cluster state to backups/ directory
  • Encrypted backups — age encryption with --encrypt
  • Cloud storage — S3, GCS, Azure Blob integration
  • Scheduled backups — cron/systemd timers with backup schedule
  • etcd snapshots — backup create --etcd-snapshot
  • Longhorn PITR — snapshots and point-in-time restore

Security

  • GUI authentication — --auth flag with env var credentials
  • Secret masking — tokens/passwords masked in logs
  • Environment variables — ${VAR} syntax for secrets
  • Auto .gitignore — prevents accidental secret commits

GUI Dashboard

  • Web UI — privatecloud gui --port 8080
  • Cluster metrics — nodes, pods, health status
  • One-click actions — backup, restore, destroy

Operations

  • Diagnostics — privatecloud doctor --diagnostics
  • Configuration linting — privatecloud lint
  • Release notes — privatecloud release-notes

Requirements

Tool Required
Python 3.9+ ✅
ssh / scp ✅
curl ✅
terraform ✅
helm ✅
kubectl optional
flask for GUI
age for backup encryption

Install

pip install privatecloud

Quickstart

# Initialize
privatecloud init                      # generate privatecloud.yaml
privatecloud doctor --diagnostics      # check dependencies and cluster health
privatecloud lint                      # validate config

# Deploy
privatecloud plan                      # preview the install plan
privatecloud install-cluster           # deploy everything
privatecloud install-cluster --dry-run # preview without changes

# Manage
privatecloud gui --port 8080           # start web dashboard
privatecloud upgrade v1.30.0+k3s1     # upgrade cluster
privatecloud cluster list              # list managed clusters

# Backup & Restore
privatecloud backup create                         # create backup
privatecloud backup create --encrypt              # encrypted backup
privatecloud backup create --s3 my-bucket        # upload to S3
privatecloud backup create --etcd-snapshot       # include etcd
privatecloud backup schedule daily --keep 7       # schedule backups
privatecloud backup list                          # list backups
privatecloud backup restore <name>               # restore backup
privatecloud backup restore <name> --force       # force restore

# Snapshots & PITR
privatecloud snapshot my-volume                   # create snapshot
privatecloud snapshots-list                      # list all snapshots
privatecloud restore my-volume snap-123          # restore from snapshot

# Add-ons
privatecloud addon list                           # list available add-ons
privatecloud addon install monitoring-stack       # install add-on
privatecloud addon search logging                 # search add-ons

# Destroy
privatecloud destroy                             # with backup prompt
privatecloud destroy --yes                        # skip confirmation

Configuration

cluster_name: my-private-cloud
provider: bare-metal          # or "proxmox" or "morpheus"
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: "${PROXMOX_TOKEN}"  # Use env var for secrets
  node: pve
  template: ubuntu-2204-template
  master_count: 1
  worker_count: 2

# morpheus:
#   url: https://morpheus.example.com
#   username: admin
#   password: ${MORPHEUS_PASSWORD}
#   group_name: My Group
#   cloud_name: My Cloud
#   instance_type_name: Ubuntu
#   layout_name: VMware VM
#   plan_name: 1 CPU, 2GB Memory
#   master_count: 1
#   worker_count: 2
#   cloud_type: vmware

services:
  metallb: true
  ingress_nginx: true
  cert_manager: true
  monitoring: true
  longhorn: true

Provider Modules Roadmap

Provider Status Description
Bare-metal ✅ Stable Direct SSH installation
Proxmox ✅ v0.2.0 Proxmox VE via Terraform
HPE Morpheus ✅ v0.8.0 HPE Morpheus VM Essentials via Terraform
Hetzner 🔜 v0.7.0 Hetzner Cloud API
LibVirt 🔜 v0.7.0 Local KVM/libvirt VMs
vSphere 📋 Backlog VMware vSphere integration
OpenStack 📋 Backlog OpenStack integration

Roadmap

v0.7.0

  • Hetzner Cloud provider
  • LibVirt/KVM provider
  • Cluster backup verification
  • Rollback from failed upgrade

v1.0 (Production Ready)

  • High-availability k3s with external DB
  • Rolling cluster upgrades
  • Multi-cluster management UI
  • Add-on marketplace with 20+ tools
  • Cloud storage backup with lifecycle policies

Contributing

See CONTRIBUTING.md for development guidelines.

License

MIT

Metadata

Release files for privatecloud 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Loss of provenance

These files do not have provenance metadata, despite files in a prior release including this data.

We recommend further investigation before installing these files. View details.

Source distribution (sdist)

Source distribution for privatecloud 0.8.1
File Size Uploaded Provenance Actions
privatecloud-0.8.1.tar.gz 53.3 kB Without provenance Details for privatecloud-0.8.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for privatecloud 0.8.1
File Interpreter ABI Platform Actions
privatecloud-0.8.1-py3-none-any.whl Python 3 none any Details for privatecloud-0.8.1-py3-none-any.whl

Total release size: 109.1 kB

Release files / privatecloud-0.8.1.tar.gz

Loss of provenance

This file belongs to a release without provenance metadata, despite a prior release including this data.

We recommend further investigation before installing this file. View details.

Download URL privatecloud-0.8.1.tar.gz
Size 53.3 kB
Tags Source
SHA-256 checksum
How to use checksums
378fefa2d1e0b87ea66a1fe71cd79110a08fb1a71090d11172f1c06ef242b1b9
BLAKE2b-256 checksum
How to use checksums
e0726e305ff9a1c5047a259c336598bb14e4224586e03831631f646b44732373
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Release files / privatecloud-0.8.1-py3-none-any.whl

Loss of provenance

This file belongs to a release without provenance metadata, despite a prior release including this data.

We recommend further investigation before installing this file. View details.

Download URL privatecloud-0.8.1-py3-none-any.whl
Size 55.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fc05afc2ed325331d6c3e08984885c2f416442835b165da65e4f3246afac4937
BLAKE2b-256 checksum
How to use checksums
4cf5b80ef3428adeb8e338513af2172eb3c1a40e59b654d07ffc0b5657bb653f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.10

Security for privatecloud 0.8.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Loss of provenance

A previous release of these files had provenance metadata, but this release does not.

While this could reflect a routine change by the project maintainers, it may also indicate that the release files have been compromised.

Release comparison

  • Removed 0.7.0 2 files With provenance
  • Added 0.8.1 2 files Without provenance

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page