Photo by <a href=";utm_medium=referral&amp;utm_campaign=api-credit">Guillaume Bolduc</a> / <a href=";utm_medium=referral&amp;utm_campaign=api-credit">Unsplash</a>

It’s been a while since I’ve posted! Thought I’d give an update on a recent change I made in my home lab I’m calling “The Great VM Migration” but do it as a thinly veiled demonstration of something far cooler, ChatGPT. I asked ChatGPT to write this post through a conversation. It got some things wrong, and I corrected it by saying “Not quite what I meant, …” and explaining where it got it wrong. And it fixed it… we’ll all be out of a job someday because of this but here we go. What follows is ChatGPT talking about updates I made to my home lab.

It’s been a while since I’ve posted about my home lab, but I wanted to share some exciting news. I recently made the switch from using virtual machines (VMs) to containerization with Docker, and it’s been a game-changer.

As a senior engineer, I understand the importance of a well-maintained home lab. It’s a valuable tool for experimenting with new technologies, testing out configurations, and honing our skills. However, managing multiple VMs can be a real headache. That’s why I made the switch to Docker, and it’s been a huge improvement.

Docker allows developers to create, deploy, and run applications in containers. These containers are lightweight, portable, and share the host system’s kernel, making it more efficient in terms of resources. In contrast, VMs are heavyweight and require more resources to run. With Docker, I can run more services on the same hardware, making it more resource-efficient.

One of the biggest advantages of using Docker over VMs is the ease of maintenance. With VMs, updating, patching and troubleshooting each individual machine can be a tedious and time-consuming task. With Docker, I can update and patch at the container level, making it much simpler to manage. Additionally, because containers are isolated from one another, it’s easy to see which containers are running and what services they are providing. This helps to reduce the clutter and make it easier to understand the overall architecture of my home lab.

Another advantage of using Docker is the speed at which I can launch new services. With VMs, the process of setting up a new machine, installing the operating system, configuring the network and so on can be quite time-consuming. With Docker, I can launch new services as containers in a matter of minutes. This is particularly useful when I am experimenting with new technologies or trying out different configurations.

But the benefits don’t stop there. To provide secure public access to my services on demand, I set up a cloud-based nginx reverse proxy. This reverse proxy is publicly accessible, but it connects to my home lab over a VPN, only exposing the services that I want to be public. This allows me to access my services remotely, while also keeping them secure behind a VPN connection. This is particularly useful when I need to share my services with colleagues or demonstrate them to clients.

In conclusion, upgrading my home lab to use Docker containers was a wise decision. Not only does it provide a more efficient and organized solution, but it also greatly reduces the maintenance burden and decreases time to launch for services. The ease of use, speed, and portability of Docker containers make them a perfect fit for home lab environments. With the added security of a cloud-based nginx reverse proxy connecting over VPN, I am able to access my services securely and on demand. I should have done it sooner, but I’m glad I finally made the switch.

I didn’t edit the above text. Any changes were conversational corrections given to ChatGPT itself and it was asked to regenerate the post. I started high level: “write me a blog post about migrating my home lab from VMs to Docker containers.” It spit out a pretty passable blog post but it didn’t have my conversational voice. So I told it, “Write that same post but more conversational and engaging.” And it did. Then I felt like it didn’t have a ton of substance (it still doesn’t but there’s more than there was); so, I asked it to provide more detail and from the perspective of a senior engineer. Now we’re getting somewhere.

From there I wanted to make a specific point that by Dockerizing my home lab I’m able to spin up new services much faster. So I asked it to make that change. Added, no problem. Up until now I’m impressed and pretty beside myself that this model was able to handle everything I’d thrown at it so far. So I decided to give it something a bit harder; I asked it to “Include another section about using a cloud nginx reverse proxy over VPN to provide secure public access on demand.” It added the section and did exactly what I told it, which was “the reverse proxy is publicly accessible over the VPN” and that’s not quite right. I explained the difference by telling ChatGPT, “The nginx reverse proxy is public but connects to the home lab over VPN and only exposes the services I want to be public.” And it fixed it.

This thing is some kind of arcane wizardry or black magic because it doesn’t feel real. This model is going to change the world. Maybe for the better, maybe for the worse but it is an incredible tool. It’s like having a dedicated assistant who has read every book, visited every website, and can answer any question. Maybe not always correctly, but you can ask it for sources to follow up on. Used in the right way this is a force multiplier like the world has never seen and it’s only going to get better.

(And I asked it plagarism rules before posting this which it explained to me and asked me politely to please cite the original source. So thanks for the blog post, ChatGPT.)