A bit more detailed information about the project.
I decided to create LaraPi to ultimately learn about distributed web applications, but also to put my Raspberry Pi stack to use, as it’s been lying in my loft for years untouched.
I nearly sold it actually, but I’m glad I didn’t!
Firstly, for power, the stack uses an Anker USB hub to deliver power to the 5 Raspberry Pi’s.
The Raspberry Pi’s consist of one model 4 which runs all the data services and the load balancer, I then have four model 3Bs.
For networking, I have an 8 port TP-Link smart switch.
The operating system used is Ubuntu, this is my go to Linux distribution and have used it for years now.
Everything below is all run in Docker containers, this allows me to quickly spin up and deploy the application.
So, for the application, this uses Laravel, an open source PHP framework, to support this are the following:
Server provisioning and deploying is handled with Ansible, an open source automation tool.
Traffic from the internet is routed via CloudFlare to my home IP, once inside my network it goes via my main proxy server to LaraPi’s load balancer, from there it’s distributed between the four workers.
The application, Minio and Reverb are publicly accessible to enable the site to work, while all other services like the database, Meilisearch and Redis are internal only.