Introduction
Like many enthusiasts who dive into the world of home networking and server management, I found myself initially managing my homelab setup using a humble spreadsheet. It was a straightforward method to keep track of servers, services, networks, and credentials. However, as my setup grew, the limitations of this approach became increasingly apparent. The spreadsheet was mildly annoying to update, not always convenient to access, and fell short of the dynamic needs of my expanding homelab. Determined to find a better solution, I embarked on a journey into the realms of web development, containerization, and continuous integration/continuous deployment (CI/CD), with a little (read: a lot) help from my AI companion, Jasper (ChatGPT).

The Drive for Development
The decision to move away from spreadsheets wasn’t made lightly. The convenience of having everything in one place was overshadowed by the inefficiency and the static nature of the spreadsheet. It was time to create a solution that was not only more efficient but also a project that would allow me to delve into web development and the practical applications of Docker and CI/CD processes.

Choosing the Right Tools: Django, MySQL, and Docker
After some research and deliberation, I settled on using Django and MySQL for the backend of my web app. Django, with its robust framework, offered the perfect balance of flexibility and features for building web applications. MySQL, being a widely used and reliable database system, would serve as the backbone for storing all the data securely and efficiently.
The choice to containerize the application with Docker was driven by the desire for portability and ease of distribution. Docker containers would allow my application to be easily deployed on any system, irrespective of the underlying environment, ensuring consistency across different setups.
Development and Deployment: A Local to Production Journey
All of the development was done locally on my desktop, utilizing Docker Desktop and Visual Studio Code (VSCode) as my primary tools. This setup allowed for an efficient development workflow, enabling me to build, test, and debug the application in a controlled environment. Once satisfied with the initial development and testing phases, I packaged the application into a Docker image and published it to the Docker Hub repository. This was a crucial step in making the application easily accessible for deployment.




The deployment on my production Docker server was carried out using a custom template in Portainer, a powerful container management tool. This streamlined the deployment process, allowing for easy setup and management of the application in a production environment. Additionally, the entire codebase was published on my GitHub repository, offering transparency and the opportunity for collaboration with the broader community.

Leveraging ChatGPT for Development
One of the most fascinating aspects of this project was the use of ChatGPT. As someone exploring the world of development, Docker, and CI/CD for the first time, I found ChatGPT to be an invaluable resource. Whether it was debugging code, understanding Docker commands, or getting a grasp on CI/CD best practices, ChatGPT provided guidance, suggestions, and explanations that significantly accelerated the learning process.

While it was very basic at the beginning, getting to the more polished version took a bit of CSS and work. With a little assist from Jasper (ChatGPT), I was able to go from the above to the production version below.

Conclusion: A Step Towards a More Organized and Efficient Homelab
The transition from managing my homelab through spreadsheets to developing a custom web app has been nothing short of revolutionary. Not only has it made management more efficient and accessible, but it has also provided a hands-on opportunity to learn and apply new technologies. This journey has instilled in me a newfound appreciation for developers and all those involved in the development and deployment of applications and projects. Their ability to conceptualize, create, and refine tools that make life easier and more organized is truly remarkable.
Moreover, this experience has underscored the importance of embracing challenges and leveraging available tools, like ChatGPT, to push the boundaries of what I could achieve on my own. It has taught me that stepping out of one’s comfort zone and trying something new, even with the assistance of AI, can lead to a deeper understanding of complex concepts and applications. I encourage others to not shy away from venturing into uncharted territories. The learning process, augmented by AI and other resources, can be incredibly rewarding and empowering.
The project, a testament to the power of self-education, technology, and the courage to explore, has transformed the way I manage my homelab, making it more organized, scalable, and, importantly, tailored to my specific needs. Let this be a call to action for anyone looking to enhance their skills or solve a problem—dive in, and you might be surprised at what you can accomplish with a bit of curiosity and the right tools.
You can explore the project further on GitHub and find the Docker container on Docker Hub. Feel free to contribute, fork, or utilize however you see fit!
