Azure Deployment Guide
Deploy SelfHostedDB on Microsoft Azure
This guide covers deploying SelfHostedDB on Azure using Container Instances, App Service, or AKS.
Option 1: Azure Container Instances (ACI)
Best for: Quick deployments, simple setups
Steps
-
Create Resource Group
az group create --name selfhosteddb-rg --location eastus -
Deploy Container
az container create \ --resource-group selfhosteddb-rg \ --name selfhosteddb \ --image your-registry/selfhosteddb:latest \ --dns-name-label selfhosteddb-unique-name \ --ports 3001 \ --environment-variables \ NODE_ENV=production \ PORT=3001 \ --secure-environment-variables \ DATABASE_URL='postgres://...' \ AUTH_USER='admin' \ AUTH_PASS='your-password' -
Access Application
- URL:
http://selfhosteddb-unique-name.eastus.azurecontainer.io:3001 - For HTTPS, use Azure Application Gateway or Front Door
- URL:
Database Options
- Azure Database for PostgreSQL: Use connection string from Azure Portal
- Self-hosted: Deploy PostgreSQL container in same resource group
Option 2: Azure App Service (Linux Containers)
Best for: Managed deployments, automatic scaling
Steps
-
Create App Service Plan
az appservice plan create \ --name selfhosteddb-plan \ --resource-group selfhosteddb-rg \ --sku B1 \ --is-linux -
Create Web App
az webapp create \ --resource-group selfhosteddb-rg \ --plan selfhosteddb-plan \ --name selfhosteddb-app \ --deployment-container-image-name your-registry/selfhosteddb:latest -
Configure Environment Variables
az webapp config appsettings set \ --resource-group selfhosteddb-rg \ --name selfhosteddb-app \ --settings \ NODE_ENV=production \ PORT=3001 \ DATABASE_URL='postgres://...' \ AUTH_USER='admin' \ AUTH_PASS='your-password' -
Enable HTTPS
- Azure App Service provides free SSL certificates
- Configure custom domain in App Service settings
Best Practices
- Use Azure Key Vault for secrets (reference in App Settings)
- Enable Application Insights for monitoring
- Configure auto-scaling rules
- Set up deployment slots for blue-green deployments
Option 3: Azure Kubernetes Service (AKS)
Best for: Enterprise deployments, complex orchestration
Steps
-
Create AKS Cluster
az aks create \ --resource-group selfhosteddb-rg \ --name selfhosteddb-aks \ --node-count 2 \ --enable-addons monitoring -
Deploy Using Kubernetes Manifests
- Use same YAML as AWS EKS (see Production Guide)
- Store secrets in Azure Key Vault and reference via CSI driver
Secrets Management
# Store secrets in Azure Key Vault
az keyvault secret set --vault-name selfhosteddb-vault --name database-url --value 'postgres://...'
az keyvault secret set --vault-name selfhosteddb-vault --name auth-user --value 'admin'
az keyvault secret set --vault-name selfhosteddb-vault --name auth-pass --value 'your-password'Monitoring
Application Insights
- Performance Monitoring: Track response times, throughput
- Error Tracking: Automatic error detection and alerting
- Custom Metrics: Add custom application metrics
Log Analytics
- Container Logs: View logs from all containers
- Query Logs: Use KQL (Kusto Query Language) for advanced queries
- Alerts: Set up alerts based on log queries
Security Best Practices
- Use Azure Key Vault for all secrets
- Enable Managed Identity for service-to-service authentication
- Use Private Endpoints for database connections
- Enable Azure DDoS Protection
- Configure Network Security Groups
Related Documentation
- Production Deployment Guide - General production deployment
- Security Best Practices - Security configuration
- Troubleshooting Guide - Common issues
- Installation Guide - Initial setup
Last Updated: 2025-01-27