Since you already have Azure connectivity, here's how to deploy D2D:
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bashcd /opt/d2d
./find-azure-vnet.shThis will:
- Show all your VNets
- Detect VPN/ExpressRoute connections
- List available subnets
- Generate configuration for deployment
Copy the configuration from Step 2 into deploy-to-azure.sh:
nano /opt/d2d/deploy-to-azure.shUpdate these lines:
USE_EXISTING_VNET="yes"
EXISTING_VNET_RG="your-resource-group"
EXISTING_VNET_NAME="your-vnet-name"
EXISTING_SUBNET_NAME="your-subnet-name"
LOCATION="australiaeast" # or your locationcd /opt/d2d
./deploy-to-azure.shThe script will:
- Create Azure Container Registry
- Build and push Docker image
- Create storage for archives
- Deploy to Azure Container Apps (serverless)
- Connect to your existing VPN/VNet
You'll get an HTTPS URL like:
https://d2d-app-xxxxx.australiaeast.azurecontainerapps.io
From Azure Cloud Shell or a VM in the same VNet:
# Install DICOM toolkit
sudo apt install dcmtk
# Test connection to your PACS
echoscu -aet D2D_SCU -aec YOUR_PACS_AE YOUR_PACS_IP YOUR_PACS_PORTIf this works, your D2D app will be able to send DICOM files to your PACS!
# 1. Install Azure CLI
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# 2. Find VNet
cd /opt/d2d
./find-azure-vnet.sh
# 3. Edit config (paste values from step 2)
nano deploy-to-azure.sh
# 4. Deploy
./deploy-to-azure.sh
# 5. Access the URL providedAzure Container Apps (Recommended)
- Monthly: $0-10 (scales to zero when not in use)
- Per conversion: ~$0.001
- Storage: ~$0.50/month for 10GB
Total for light usage: ~$1-5/month
cd /opt/d2d
az acr build --registry YOUR_ACR_NAME --image d2d:latest .
az containerapp update --name YOUR_APP_NAME --resource-group d2d-rg --image YOUR_ACR_NAME.azurecr.io/d2d:latestCan't reach PACS from Azure:
- Check VPN/ExpressRoute is active
- Verify Network Security Group allows DICOM ports
- Test with echoscu from same VNet
View logs:
az containerapp logs show --name YOUR_APP_NAME --resource-group d2d-rg --followDelete everything:
az group delete --name d2d-rg --yes