Can you design and build a fully functioning Private Cloud Platform using a cluster of Raspberry PI’s using current Cloud Technologies?
I set out to answer this question.
This repository contains the design, code, and documentation for the My Private Cloud Reference Design, which is a project that implements a FULLY functioning Private Cloud using a cluster of Raspberry Pi 4's running on Raspbian OS, Docker, and Kubernetes that is all managed by a Portal Application implemented using Spring Boot and Java 15. By the way, there is nothing in this reference design that is specific to a Raspberry Pi 4. The Raspberry Pi 4 could easily be substitued for an Ubuntu Server running in a virtual machine. The research paper I wrote on this project can be found here.
Feel free to use this Reference Design to get started building your own Private Cloud!
A video demonstration can be seen here.
You can see how to build your own Private Cloud here.
You can find the User Guide here.
- Fully functioning Private Cloud:
- Capable of running any number of Web Servers, common Web Stacks, Databases, and Tools. Examples include:
- Web Servers: Nginx and Apache (can be used to host too)
- Web Stacks: PHP (7.1 and 7.4), PHP 7.4 Laravel, Java Tomcat (8.5 and 9.0), ASP.NET Core 5.0
- Databases: MySQL, PostgreSQL, MongoDB
- Tools: Visual Studio Code, NodeJS Development Server
- Deploy Web Sites, Java Spring and Spring Boot applications, PHP and PHP Laravel applications, Express, React, Angular applications
- Capable of running any number of Web Servers, common Web Stacks, Databases, and Tools. Examples include:
- Cloud Management:
- Web based Portal Application
- Desktop based Lens Application (with Prometheus)
- RealVNC and SSH for accessing the Master Node
- Low cost:
- A single Master Node and three Worker Node Cluster with Storage will cost about $500
- Cloud Compute Resources are easily extendable:
- You can add a new Worker Node in less then an hour and that will only cost about $75
- Portal Application is easily extendable:
- New Stacks can be easily added to the Catalog
- You can add a new Stack with simple Portal database update and this can be done in just minutes
- You can leverage your own custom Docker Images that you pushed to your Docker Hub repository
- Communication with Kubernetes via a custom Java Cluster API that leverages the Fabric8 library
- Portal Application is easy to use:
- Go to the Register menu and register for your own account
- Go to the Login menu and log into the application
- Go to the Catalog menu:
- Pick your Stack or Database
- Click the Customize button
- Give your Application a Name
- Select between a Tiny, Medium, and Large Container Size (amount of CPU and RAM)
- Click the Provision button
- Go to the My Apps menu:
- Click the Deploy button to deploy a compressed version of your application
- Click the Go button to access your application
View the JavaDoc.
Login |
Admin |
Catalog - Web Servers |
Catalog - Web App Servers |
Catalog - Databases |
Catalog - Tools |
My Deployed Apps |
- Raspberry Pi 4 Model B with 4GB of RAM
- Raspberry Pi 4 32Gb SD Cards
- Raspberry Pi 4 Heat Sinks and Fans
- 7-Layer Dog Bone Enclosure
- Cat6 Ethernet Cables
- Port Gigibit Ethernet Network Switch
- Ehternet Cables
- 500GB WD USB-3 SSD Drive
- Power Strip
- Raspberry Pi:
- Raspbian OS (32-bit), Docker, Kubernetes
- Portal Application:
- Spring Boot, Thymeleaf, Bootstrap, Java 15, and MySQL 8.0 database
- Other:
- Lens (with Prometheus)
- SQL Client (MySQL Workbench, DBeaver, and MongoDB Compass)
Logical Architecture |
Physical Architecture |
Building the Cluster |
Building the Cluster |
Final Cluster |
Portal Database |
Lens - View Entire Cluster |
Lens - View All Nodes |
Lens - View All Pods |
Manage Portal Users |