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 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 —
--authflag 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"
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
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.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c333bc704db9220c695f6195cfd173c384a81aeabc77ba98bf3c2dd12b2841c7
|
|
| MD5 |
7162d728b2f058b4ceb8934c466c7b93
|
|
| BLAKE2b-256 |
b06f90676be1a68ea8b07cf4ffeb372460e4ef145eada6a89f31aadad854a8f5
|
Provenance
The following attestation bundles were made for privatecloud-0.7.0.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.7.0.tar.gz -
Subject digest:
c333bc704db9220c695f6195cfd173c384a81aeabc77ba98bf3c2dd12b2841c7 - Sigstore transparency entry: 1373615884
- Sigstore integration time:
-
Permalink:
Kubenew/privatecloud@0881df651a15a541a59b08614f2e692056308a79 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/Kubenew
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0881df651a15a541a59b08614f2e692056308a79 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
57ab8f4fa16d592b26a1b5e4afbbaeedd188b6493dc67dc9ac80bb15c9d6f88a
|
|
| MD5 |
0bdcf891c580ddc06e64b596877717e6
|
|
| BLAKE2b-256 |
c3411c9fe683f3e6b1333ad6434d981336a49e0dba6f3e953ed4dea9852f71ba
|
Provenance
The following attestation bundles were made for privatecloud-0.7.0-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.7.0-py3-none-any.whl -
Subject digest:
57ab8f4fa16d592b26a1b5e4afbbaeedd188b6493dc67dc9ac80bb15c9d6f88a - Sigstore transparency entry: 1373616054
- Sigstore integration time:
-
Permalink:
Kubenew/privatecloud@0881df651a15a541a59b08614f2e692056308a79 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/Kubenew
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0881df651a15a541a59b08614f2e692056308a79 -
Trigger Event:
release
-
Statement type: