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 Overview (v0.6.0)

Deployment

  • 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) written back to privatecloud.yaml
  • Helm-based service installation — all services deployed via Helm charts

Cluster Management

  • Cluster upgradeprivatecloud 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 snapshotsbackup 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 UIprivatecloud gui --port 8080
  • Cluster metrics — nodes, pods, health status
  • One-click actions — backup, restore, destroy

Operations

  • Diagnosticsprivatecloud doctor --diagnostics
  • Configuration lintingprivatecloud lint
  • Release notesprivatecloud 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"
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

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
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

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.7.0.tar.gz (45.7 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.7.0-py3-none-any.whl (52.2 kB view details)

Uploaded Python 3

File details

Details for the file privatecloud-0.7.0.tar.gz.

File metadata

  • Download URL: privatecloud-0.7.0.tar.gz
  • Upload date:
  • Size: 45.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for privatecloud-0.7.0.tar.gz
Algorithm Hash digest
SHA256 c333bc704db9220c695f6195cfd173c384a81aeabc77ba98bf3c2dd12b2841c7
MD5 7162d728b2f058b4ceb8934c466c7b93
BLAKE2b-256 b06f90676be1a68ea8b07cf4ffeb372460e4ef145eada6a89f31aadad854a8f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for privatecloud-0.7.0.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.7.0-py3-none-any.whl.

File metadata

  • Download URL: privatecloud-0.7.0-py3-none-any.whl
  • Upload date:
  • Size: 52.2 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.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 57ab8f4fa16d592b26a1b5e4afbbaeedd188b6493dc67dc9ac80bb15c9d6f88a
MD5 0bdcf891c580ddc06e64b596877717e6
BLAKE2b-256 c3411c9fe683f3e6b1333ad6434d981336a49e0dba6f3e953ed4dea9852f71ba

See more details on using hashes here.

Provenance

The following attestation bundles were made for privatecloud-0.7.0-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