Skip to content

Homelab V3 Going Full Azure

Tags: azure, homelab, ai, tailscale


Just put it all in the cloud!

Setting the stage

Starting in 2024 I began moving more things into Azure, I talked about this in Azurifying r/techsupport and in my main Homelab page. In the second half of 2026 I plan to at least learn a bit more Azure by leveraging [[Azure Kubernetes Service]] to host some of the applications that are currently in my Nomad cluster.

Design

All of my previous experience in Azure was web UI based, with some CICD deployments, but all initial setup was always driven from the web-ui. Since a main driver for my homelab efforts is learning, I decided that everything will now be handled with [[Terraform]], we are doing things properly up in here. I will also be handling everything within a private vnet, Azure is relatively simple when using everything in the public access by default paradigm, but as soon as you want to make private resources everything becomes 10x more complicated.

To access my vnet in Azure, I am using a tiny B1ls VM running Tailscale as a subnetrouter. This VM lives in my vnet and connects to the Tailscale control plane, it advertises my Azure vnet to all clients so they can access the services within.

In time, I will publish the terraform repos that build my homelab, but I need to refine my style and variable usage before that is possible.

LLMs

I use Github Copilot for code generation and completion in VSCode for all of my projects, I use it on and off and some months I don’t use it at all so I figured Azure Foundry was a good first service to explore. Being able to host my own model on a token based model could end up being cheaper over time than $10 every month for Github copilot.

This took the better part of a day to get working, even though Microsoft offers example configurations the biggest hangup for me was understanding how to resolve the private endpoint URL. When your model gets hosted you are given an API URL, typically this would point to a public IP and “just work” but once you use a private endpoint inside your own subnet you have to be able to resolve that URL to a private IP. For this resolution Microsoft operates a magic DNS IP (168.63.129.16).

If you were smart enough to find the Tailscale documentation on this, unlike me, you may be able to save a few hours instead of trying to reinvent the wheel setting up a dnsmasq forwarder.

Right now, I am hosting gpt-5.4-nano, gpt-5.6-sol, and gpt-5.7-luna. We will see how the cost works out once I start using them.


Created: 2026-08-16 | Last Updated: 2026-08-16