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.
When you have a lot of App Service instances running in your Azure subscription, managing their SSL certificate status could be a problem. Azure portal itself does have certain monitoring and advising feature to visualize the certificate status and warn you before a certificate expires. However, in some cases, we prefer this to be done in command line environment. That's why I put together this handy PowerShell script that uses Azure CLI to keep tabs on all your App Service SSL certificates.
In my previous blog post, I introduced how to deploy Open WebUI with Azure OpenAI on Azure Container Apps in Azure Portal manually. However, manual deployment usually makes people work 996. In this post, I will show you how to automate everything using Bicep. If you’re new to Bicep, think of it as a friendlier way to define Azure resources as code compared to raw ARM templates. I’ll walk you through my Bicep file, explaining how each block helps set up a scalable, persistent, and easy-to-manage Open Web UI deployment.
A few years ago, I shared step-by-step guides on deploying NextChat (ChatGPT Next Web) and BigAGI to Azure using managed PaaS services such as App Service—eliminating the hassle of configuring and maintaining virtual machines. Now, a new UI called Open WebUI has been generating a lot of buzz for its user-friendly interface and open approach. In this post, I’ll walk you through how to easily deploy Open WebUI to Azure using Azure Container Apps. I’ll also show you how to connect it directly to your Azure OpenAI endpoint, all without the need for any additional proxy services like LiteLLM.
In Azure, Resource Groups are a key concept for managing resources. They provide a logical way to group related resources, making it easier to manage and control access. However, as your cloud environment git bigger, organizing Resource Groups becomes more difficult. This blog post explains common practices for using Azure Resource Groups. These tips will help you manage and organize your resources more effectively! Key features of Resource Group are: Group related resources together for easier management. Deleting a resource group also deletes all resources inside it. Assign roles and permissions at the resource group level (IAM).
Although Microsoft Edge, Chrome, and Firefox store encrypted passwords in the user profile location, these can be easily decrypted by another program without requiring user authentication or approval. Consequently, an untrusted program, not flagged by Microsoft Defender or other security software, can easily access your passwords. Let's check out the simplest method to prevent this.
Microsoft Azure does not officially provide Windows XP images for the creation of virtual machines. The earliest version of a client OS image available on Azure is Windows 7. Despite this, I have devised a method to operate legacy Windows operating systems, including Windows XP, on the current Azure compute platform. In this blog post, I will outline the steps involved in this process in detail.
When configuring a new Azure Virtual Machine (VM), you'll notice that it isn't allocated a public IPv6 address automatically. By default, only an IPv4 address is assigned. In this guide, we'll walk you through the process of manually adding a public IPv6 address to your Azure VM, ensuring your setup is future-proof and ready to handle the latest internet protocol requirements. …