⚠️ Community Project Disclaimer: This is an unofficial, community-maintained project and is not affiliated with, endorsed by, or supported by Veeam Software. The information provided may be incomplete or outdated. Always refer to official Veeam documentation for authoritative service availability information. Use at your own risk—no warranty or liability is provided.
A lightweight, interactive map to visualize Veeam Data Cloud (VDC) services across AWS and Azure regions. Designed to quickly answer "Where is X available?" without navigating complex spreadsheets.
🎉 New: Now includes a REST API for programmatic access to service availability data! See the API Documentation section below.
- Framework: Hugo (Static Site Generator)
- Styling: Tailwind CSS (via CDN for simplicity)
- Map Engine: Leaflet.js (OpenStreetMap/CartoDB Dark Matter tiles)
- Data Source: YAML files in
data/regions/(No database required)
You need Hugo installed on your machine.
- Windows (Chocolatey):
choco install hugo-extended - macOS (Brew):
brew install hugo - Linux:
sudo apt-get install hugo
Clone this repo and run the server:
hugo serverNavigate to http://localhost:1313/. The site will auto-reload when you edit files.
The map is data-driven. You do not need to touch the HTML to add a new location. Just add a new YAML file to data/regions/.
- Copy the template file:
.github/region-template.yaml - Place it in the appropriate folder:
data/regions/aws/ordata/regions/azure/ - Rename following the convention:
{provider}_{region_code}.yaml(e.g.,aws_us_east_1.yaml) - Fill in the details and delete any services not available in that region
id: "aws-us-east-1" # Unique ID
name: "US East (N. Virginia)" # Display Name
provider: "AWS" # "AWS" or "Azure" (Case sensitive for icon/color)
coords: [38.0339, -78.5079] # [Latitude, Longitude]
aliases: # Optional: searchable alternative names
- "Virginia"
- "US East"
services:
# Boolean Service - just mark as available (editions are universal)
vdc_m365: true
# Tiered Service - editions and tiers vary by region
vdc_vault:
- edition: "Advanced"
tier: "Core"
- edition: "Foundation"
tier: "Non-Core"Tiered Services (edition + tier per region):
vdc_vault- Veeam Data Cloud Vault (Core/Non-Core pricing tiers)
Boolean Services (just true if available):
vdc_m365- VDC for Microsoft 365 (Flex/Express/Premium editions available in all M365 regions)vdc_entra_id- VDC for Entra IDvdc_salesforce- VDC for Salesforcevdc_azure_backup- VDC for Azure
Note: New service keys will automatically appear in the popup, but you may need to add a matching SVG icon in layouts/index.html if you want a custom logo for it.
- Data Injection: Hugo reads all YAML files in
data/regionsand injects them into the HTML as a JavaScript objectconst regions = [...]. - Normalization: A script runs on page load to fix common data entry errors (like strings wrapped in quotes) so the map doesn't crash.
- Rendering: Leaflet.js loops through this data. If a region matches the active filters (Provider/Service/Tier), it draws a circle marker.
- Popups: Clicking a marker generates an HTML popup on the fly using the data attributes.
Found incorrect or missing data? We have issue templates to make reporting easy:
- Report Missing Service - Service missing from an existing region
- Report Missing Region - Entire region not on the map
- Report Incorrect Info - Wrong coordinates, tier, etc.
Want to submit a fix directly? PRs welcome! The PR template will guide you through providing source verification.
To keep the map data up-to-date, we've implemented automated scraping and validation of Veeam's official documentation.
A weekly GitHub Actions workflow automatically:
-
Scrapes official Veeam Data Cloud pages for service availability:
- Microsoft 365 Protection regions
- Azure Protection regions
- Entra ID Protection regions
- Salesforce regions
- Vault regions (with edition/tier information)
-
Compares scraped data with the repository's region YAML files
-
Creates GitHub issues automatically for:
- Missing regions found in Veeam docs but not in the repo
- Missing services in existing regions
- Services that may have been removed (for verification)
-
Includes VDC Vault scraping from the Veeam product page with edition (Foundation/Advanced) and tier (Core/Non-Core) information
You can test the scraper and issue generator locally:
# Scrape Veeam documentation and compare with current data
npm run scrape:regions
# Generate issue data from discrepancies (dry run)
npm run scrape:issues -- --dry-run
# View the results
cat region-discrepancies.json- Automated run: Every Monday at 9:00 AM UTC
- Manual trigger: Available via GitHub Actions UI for testing
Issues created by the automation are labeled with automated for easy identification and filtering.
- Icons: defined in the
getServiceIcon()function inlayouts/index.html. They are inline SVGs. - Colors: Provider badge colors are set in
getProviderBadgeColor(). - Map Style: The base map is "CartoDB Dark Matter". You can change the
L.tileLayerURL inindex.htmlif you want a light mode map.
The map data is also exposed as a REST API for programmatic access. Perfect for CI/CD pipelines, monitoring systems, mobile apps, or automation.
https://vdcmap.bcthomas.com
- Scalar API Reference: /api/docs
- OpenAPI Spec: /api/openapi.json
Health check with statistics.
Response:
{
"status": "healthy",
"version": "1.0.0",
"timestamp": "2025-01-03T10:30:00Z",
"environment": "production",
"stats": {
"totalRegions": 63,
"awsRegions": 27,
"azureRegions": 36
}
}Simple connectivity test (no data dependencies).
List all available VDC services with metadata.
Response:
{
"services": [
{
"id": "vdc_vault",
"name": "Veeam Data Cloud Vault",
"type": "tiered",
"description": "Immutable backup storage with configurable pricing tiers",
"editions": ["Foundation", "Advanced"],
"tiers": ["Core", "Non-Core"]
},
{
"id": "vdc_m365",
"name": "VDC for Microsoft 365",
"type": "boolean",
"description": "Backup and recovery for Microsoft 365 data"
}
// ... more services
],
"count": 5
}List all cloud regions with optional filters.
Query Parameters:
provider- Filter by cloud provider (AWS|Azure)country- Filter by country name (searches region name and aliases)service- Filter by VDC service availability (vdc_vault|vdc_m365|vdc_entra_id|vdc_salesforce|vdc_azure_backup)tier- Filter by pricing tier (Core|Non-Core) - only forvdc_vaultedition- Filter by edition (Foundation|Advanced) - only forvdc_vault
Examples:
# All regions
curl https://vdcmap.bcthomas.com/api/v1/regions
# All AWS regions
curl https://vdcmap.bcthomas.com/api/v1/regions?provider=AWS
# Regions with VDC Vault
curl https://vdcmap.bcthomas.com/api/v1/regions?service=vdc_vault
# Japanese regions with VDC Vault Core tier
curl https://vdcmap.bcthomas.com/api/v1/regions?country=Japan&service=vdc_vault&tier=Core
# Azure regions with M365 protection
curl https://vdcmap.bcthomas.com/api/v1/regions?provider=Azure&service=vdc_m365Response:
{
"data": [
{
"id": "aws-us-east-1",
"name": "US East 1 (N. Virginia)",
"provider": "AWS",
"coords": [38.9, -77.4],
"aliases": ["Virginia", "N. Virginia", "US East", "IAD"],
"services": {
"vdc_vault": [
{
"edition": "Foundation",
"tier": "Core"
},
{
"edition": "Advanced",
"tier": "Core"
}
]
}
}
// ... more regions
],
"count": 63,
"filters": {
"provider": null,
"country": null,
"service": null,
"tier": null,
"edition": null
}
}Get details for a specific region by ID.
Example:
curl https://vdcmap.bcthomas.com/api/v1/regions/aws-us-east-1200 OK- Successful request400 Bad Request- Invalid query parameter404 Not Found- Region not found500 Internal Server Error- Server error
All endpoints support CORS with Access-Control-Allow-Origin: * for public access.
Currently no rate limiting. Please be respectful of the free hosting.
# Install dependencies
npm install
# Start local development server with API
npm run dev
# Run API tests
npm test
# Build for production
npm run buildThe API is built with Cloudflare Pages Functions and automatically deployed on every push to main.