I refactored Moonglade's Azure deployment from a single, all‑in‑one PowerShell script to a PowerShell + Bicep setup. PowerShell now handles orchestration and user input, while Bicep declaratively defines the App Service Plan, Web App, SQL Server, database, firewall rule, and storage account. This keeps the same one-click experience, but makes the infrastructure easier to maintain, review, and reuse.
This blog runs on my open-source project Moonglade, a blogging platform built with ASP.NET Core and hosted on Azure. Recently, I migrated it from a Windows Server environment to Docker on Linux, still running on Azure App Service. It’s been running smoothly in production for about two months now. In this post, I’ll walk through that migration journey: what I changed, a few tips and tricks along the way, and some lessons learned that might help you if you’re considering a similar move.
Running a full desktop browser in the cloud and accessing it remotely can be surprisingly useful. You might want a disposable browser for testing and automation, a sandboxed environment isolated from your local machine
or a remote browser you can get to from any device with a decent network connection. In this post, I'll walk through how I deployed a remote Chrome browser running in a Docker container on Azure Container Instances, and how I access it from a regular web browser.