[{"content":"Hey, I\u0026rsquo;m Ricardo.\nCloud Platform Engineer at Enexis, with a passion for infrastructure, automation, and figuring out how things work under the hood. I like attending industry events — AWS Summit, KubeCon, and others — and I spend a fair amount of my own time building and experimenting with technology.\nThis blog is where I document the journey. That includes my homelab project — building a bare-metal Kubernetes cluster on three NUCs — but also broader topics around cloud, infrastructure, and whatever I\u0026rsquo;m currently diving into.\nCurrent homelab focus:\nKubernetes on bare metal with Talos Linux Secret management with OpenBao SSO with Keycloak Observability stack Self-hosting Immich and other services If any of that sounds interesting, you\u0026rsquo;re in the right place.\nFind me on GitHub or LinkedIn.\n","date":"30 May 2026","permalink":"https://ricardojacobs.nl/about/","section":"Ricardo Jacobs","summary":"","title":"About"},{"content":"","date":null,"permalink":"https://ricardojacobs.nl/tags/azure/","section":"Tags","summary":"","title":"Azure"},{"content":"Every homelab journey needs a place to live. Mine starts here.\nI recently picked up three Intel NUCs — each running an AMD Ryzen 7430U with 32GB of RAM and a 512GB SSD — with the goal of building a proper Kubernetes cluster at home. I want to learn, self-host things I actually use, and document the whole thing so others can follow along (or at least avoid my mistakes).\nBefore I start flashing Talos Linux and configuring PXE boots, I figured I needed somewhere to write things down. So: this blog.\nWhy Hugo + Azure Static Web Apps? #I wanted something:\nFast — no server, no database, just static files on a CDN Automated — push to git, site updates. No manual deploys Secure — no backend attack surface, HTTPS out of the box Hugo fits that perfectly. It\u0026rsquo;s a static site generator written in Go — single binary, no Node.js dependency hell, builds in milliseconds. Azure Static Web Apps has a free tier that integrates directly with GitHub: every push to main triggers a build and deploy automatically via GitHub Actions.\nThe Setup #The stack is simple:\nHugo — static site generator with the Congo theme GitHub — source of truth, version control Azure Static Web Apps — free hosting, global CDN, automatic HTTPS, CI/CD via GitHub Actions The deploy token lives in GitHub Secrets — never in the repository. The public/ build output is never committed either; Azure builds it fresh on every deploy.\nCustom Domain + DNS #With the site running on Azure I wanted it on a proper domain, not the default azurestaticapps.net URL. I registered ricardojacobs.nl through TransIP — the go-to registrar for .nl domains in the Netherlands.\nThe DNS problem #The first instinct was to manage DNS at TransIP directly. Azure Static Web Apps needs two things for a custom domain:\nAn ALIAS record at the apex (@) pointing to the Azure hostname A CNAME for www TransIP supports ALIAS records, but it rejected Azure\u0026rsquo;s hostname format with a validation error. After some digging, the cleaner solution was to move DNS management to Azure DNS — keeping everything in one place and using Azure\u0026rsquo;s native ALIAS support for Static Web Apps.\nSetting up Azure DNS # Create a DNS Zone resource in Azure for your domain Azure provides 4 nameservers — update these at your registrar under Nameservers For .nl domains this goes through the SIDN registry, so allow up to an hour for propagation Once the nameservers propagate, add the following records in the Azure DNS Zone:\nType Name Value A (Alias) @ → Azure Static Web App resource CNAME www your-app.azurestaticapps.net The A record with alias mode points directly to the Static Web App resource — Azure resolves the IP internally and handles changes automatically. No hardcoded IP addresses.\nAdding the custom domain in Azure #With DNS in Azure, go to Static Web App → Custom domains → + Add, choose Custom domain on Azure DNS, and Azure handles the ownership validation automatically. It then provisions a free SSL certificate via DigiCert — no manual certificate management needed, auto-renewed.\nThe whole domain + HTTPS setup took about an hour, most of which was waiting for the .nl nameserver delegation to propagate.\nWhat\u0026rsquo;s Next #This blog is step one of a longer journey. Here\u0026rsquo;s what I\u0026rsquo;m planning to document:\nTalos Linux — immutable, API-driven OS for Kubernetes, installed via PXE boot Kubernetes cluster — setting up a three-node cluster on bare metal NUCs OpenBao — secret management (open-source fork of HashiCorp Vault) Keycloak — SSO for all self-hosted services Immich — self-hosted Google Photos alternative Observability — metrics, logs, traces — the whole stack If any of that sounds interesting, stick around. This is going to get hands-on quickly.\n","date":"30 May 2026","permalink":"https://ricardojacobs.nl/posts/building-this-blog/","section":"Posts","summary":"","title":"Building This Blog: Hugo + Azure Static Web Apps"},{"content":"","date":null,"permalink":"https://ricardojacobs.nl/tags/devops/","section":"Tags","summary":"","title":"Devops"},{"content":"","date":null,"permalink":"https://ricardojacobs.nl/tags/homelab/","section":"Tags","summary":"","title":"Homelab"},{"content":"","date":null,"permalink":"https://ricardojacobs.nl/tags/hugo/","section":"Tags","summary":"","title":"Hugo"},{"content":"","date":null,"permalink":"https://ricardojacobs.nl/posts/","section":"Posts","summary":"","title":"Posts"},{"content":"Cloud Platform Engineer at Enexis, with a passion for infrastructure, automation, and figuring out how things work under the hood. This blog is where I document the journey — homelab builds, cloud topics, and whatever I\u0026rsquo;m currently learning.\n","date":null,"permalink":"https://ricardojacobs.nl/","section":"Ricardo Jacobs","summary":"","title":"Ricardo Jacobs"},{"content":"","date":null,"permalink":"https://ricardojacobs.nl/tags/static-web-apps/","section":"Tags","summary":"","title":"Static-Web-Apps"},{"content":"","date":null,"permalink":"https://ricardojacobs.nl/tags/","section":"Tags","summary":"","title":"Tags"},{"content":"","date":null,"permalink":"https://ricardojacobs.nl/categories/","section":"Categories","summary":"","title":"Categories"}]