Azure
This guide walks you through deploying Voquill Enterprise on Azure using Azure Container Instances and Azure Database for PostgreSQL.
Prerequisites
Section titled “Prerequisites”- An Azure subscription.
- The Azure CLI installed and configured.
- Your Voquill Enterprise license key.
1. Create a Resource Group
Section titled “1. Create a Resource Group”az group create --name voquill --location eastus2. Provision a PostgreSQL Database
Section titled “2. Provision a PostgreSQL Database”az postgres flexible-server create \ --resource-group voquill \ --name voquill-db \ --admin-user postgres \ --admin-password your-db-password \ --sku-name Standard_B1ms \ --version 16 \ --storage-size 32Note the fully qualified server name (e.g. voquill-db.postgres.database.azure.com). You’ll use it in the DATABASE_URL.
Allow Azure services to connect:
az postgres flexible-server firewall-rule create \ --resource-group voquill \ --name voquill-db \ --rule-name allow-azure \ --start-ip-address 0.0.0.0 \ --end-ip-address 0.0.0.03. Deploy the Gateway
Section titled “3. Deploy the Gateway”az container create \ --resource-group voquill \ --name voquill-gateway \ --image ghcr.io/josiahsrc/voquill/enterprise-gateway:latest \ --ports 4630 \ --ip-address Public \ --environment-variables \ DATABASE_URL="postgres://postgres:your-db-password@voquill-db.postgres.database.azure.com:5432/voquill?sslmode=require" \ JWT_SECRET="your-jwt-secret" \ ENCRYPTION_SECRET="your-encryption-secret" \ LICENSE_KEY="your-license-key"For production deployments, store secrets in Azure Key Vault and reference them using secure environment variables.
4. Deploy the Admin Portal
Section titled “4. Deploy the Admin Portal”Set VITE_GATEWAY_URL to the public URL of the gateway container you deployed in the previous step. The admin portal needs this to communicate with the gateway.
az container create \ --resource-group voquill \ --name voquill-admin \ --image ghcr.io/josiahsrc/voquill/enterprise-admin:latest \ --ports 5173 \ --ip-address Public \ --environment-variables \ VITE_GATEWAY_URL="http://your-gateway-ip:4630"Note the public IP addresses assigned to each container. Use the gateway IP when configuring desktop clients and the admin IP to access the admin portal.
Updating
Section titled “Updating”To deploy a new version, delete and recreate the container with the latest image:
az container delete --resource-group voquill --name voquill-gateway --yes
az container create \ --resource-group voquill \ --name voquill-gateway \ --image ghcr.io/josiahsrc/voquill/enterprise-gateway:latest \ --ports 4630 \ --ip-address Public \ --environment-variables \ DATABASE_URL="postgres://postgres:your-db-password@voquill-db.postgres.database.azure.com:5432/voquill?sslmode=require" \ JWT_SECRET="your-jwt-secret" \ ENCRYPTION_SECRET="your-encryption-secret" \ LICENSE_KEY="your-license-key"Repeat for the admin service. Your data in PostgreSQL is not affected by container redeployments.
For zero-downtime deployments, consider using Azure Container Apps instead of Container Instances, which supports rolling updates and revision management.