Community Cloud is a multi-node, multi-site Kubernetes platform built on K3s, designed to provision and manage distributed infrastructure with automated storage, networking, and application lifecycle management.
Out of the box it provides access to CPU compute, GPU compute, and storage. Using these resources it can optionally deploy back office applications for authenitication, customer relationship management (CRM), chat, and other services which can be useful when running an online service or business.
On the back-end it bundles databases, work queues, and other services which can be easily deployed using Community Cloud's default architecture. Choices have been made with distributed compute in mind, and it's assumed that a location may not be available at any given time. We leverage Kubernetes tools and networking to provide high availability as much as possible.
Community Cloud deploys a K3s cluster across heterogeneous hardware, organizing nodes into functional roles:
| Role | Purpose |
|---|---|
gateway |
Publicly routable nodes serving as cluster ingress/egress via Traefik (Gateway API) |
worker |
General-purpose workload nodes |
worker-gpu |
GPU-equipped nodes for AI/ML inference (AMD MI300, NVIDIA, Intel) |
storage-local |
Nodes with local block devices for TopoLVM CSI provisioning |
storage-distributed |
Nodes participating in distributed storage pools (Rook-Ceph) |
Community Cloud offers two complementary storage layers:
| Layer | Technology | Use Case |
|---|---|---|
| Local SSD | TopoLVM (LVM-based CSI driver) | Fast, node-local storage — default StorageClass cc-local-ssd-fast |
| Distributed | Garage | Replicated data available in S3 |
Storage in Community Cloud is based on Logical Volume Manager (LVM). This provides an incredible amount of adaptability in storage configuration including:
LVM support is built with TopoLVM. The Community Cloud installer automatically configures storage classes based on the following setup:
| Device Class | Volume Group | Medium |
|---|---|---|
ssd |
cc-ssd-vg |
M.2 NVMe (fastest) |
ssd-sata |
cc-ssd-sata-vg |
SATA SSD |
ssd-cache |
cc-ssd-cache |
SSD cache tier |
hdd |
cc-hdd-vg |
Spinning disk (capacity) |
Each device class maps to a corresponding Kubernetes Storage Class. This makes it trivial to map services to underlying storage to get predictable performance without needing to think to hard about all of the underlying mechanics.
cc-local-ssd-fast storage classcc-local-hdd storage classServices in Community Cloud are designed to use sensible underlying storage classes by default. i.e. databases will default to using Solid State Drives, large volume storage will use spinning disks, etc. If necessary, new volume groups can be created depending on application needs.
cc-gateway-class)| Service | Technology | Details |
|---|---|---|
| PostgreSQL + PostGIS | CloudNative-PG | Single-instance, 30Gi SSD, PostGIS 3.6 extension |
| Redis | Opstree Operator | Standalone, 5Gi SSD |
| MariaDB | (planned) | Configuration directory prepared |
community-cloud/
├── installer/ # CLI tool for cluster provisioning
│ ├── src/
│ │ ├── cli/ # React/Ink-based interactive UI
│ │ ├── commands/ # Node-level setup commands (LVM, K3s, Ceph, etc.)
│ │ ├── controller/ # Webapp CRD manifest generator
│ │ ├── remote/ # SSH/remote host abstraction
│ │ └── util/ # K3s installation logic, GPU detection, helpers
│ └── package.json
├── k8s/ # Kubernetes manifests & Helm values
│ ├── ai/ # vLLM GPU inference (AMD MI300)
│ ├── apps/ # Application deployments (Twenty CRM, Authentik, Mattermost, etc.)
│ ├── certs/ # cert-manager issuers & certificates
│ ├── crd/ # Custom Resource Definitions (Webapp, Sites)
│ ├── database/ # PostgreSQL, PostGIS, Redis clusters
│ ├── gateway/ # Gateway API resources & Traefik config
│ ├── k3s-config/ # K3s node configuration (registries)
│ ├── networking/ # Networking (Tailscale cross-site)
│ └── storage/ # TopoLVM, Rook-Ceph, Garage, StorageClasses
├── cc-headlamp/ # Headlamp Kubernetes UI plugin
├── docs/ # Documentation
└── README.md
The installer (installer/) is a Bun-based CLI that automates multi-node K3s cluster deployment:
gateway, worker, storage-local, etc.)cd installer
# Development
bun run build
# Production binaries
bun run build:linux # → build/community-cloud-linux-x64
bun run build:macos:arm # → build/community-cloud-macos-arm
bun run build:macos:x64 # → build/community-cloud-macos-x64
bun run build:windows # → build/community-cloud-win-x64
| CRD | Scope | Purpose |
|---|---|---|
Webapp |
Namespace | Declarative webapp lifecycle — deployment, service, PVC, database, Gateway API route, TLS cert |
Site |
Cluster | Multi-site configuration management |
The Webapp CRD controller (installer/src/controller/WebappController.ts) auto-generates deployment manifests from a simple spec, handling storage, databases, networking, and TLS provisioning.
| App | Namespace | Status |
|---|---|---|
| Twenty CRM | cc-office |
Deployed — server + worker deployments, Postgres, Redis, Garage S3 |
| Authentik | cc-office |
Helm values configured — Postgres-backed auth, Garage S3 storage |
| Mattermost | cc-office |
Operator values + secret/database/storage manifests prepared |
| Office (Back Office) | cc-office |
Namespace prepared |
| Umami (Analytics) | — | Template directory prepared |
| Headlamp | — | K8s plugin values (watchPlugins) prepared |