This guide explains how to run Azure IPAM locally for development and testing.
- Node.js v18+
- Azure Functions Core Tools v4+
- Docker (optional, for containerized deployment)
- Azure CLI (
az) logged in - Service Principal with IPAM Reader role (created during setup)
Copy the example env file and fill in your credentials:
cp .env.example .envEdit .env with your values:
AZURE_TENANT_ID=your-azure-tenant-id
AZURE_CLIENT_ID=your-service-principal-client-id
AZURE_CLIENT_SECRET=<your-client-secret>
# Install API dependencies
cd ../../api
npm install
# Install Frontend dependencies
cd ../frontend
npm installcd ../../api
npm startThe API will run on http://localhost:7071
In a new terminal:
cd ../../frontend
npm run devThe frontend will run on http://localhost:3000
Open http://localhost:3000 in your browser. Sign in with your Azure AD account.
# Copy and configure environment
cp .env.example .env
# Edit .env with your credentials
# Build and start containers
docker-compose up --build- Frontend:
http://localhost:3000 - API:
http://localhost:7071
docker-compose down| Variable | Description | Required |
|---|---|---|
AZURE_TENANT_ID |
Azure AD tenant ID | Yes |
AZURE_CLIENT_ID |
Service principal app ID | Yes |
AZURE_CLIENT_SECRET |
Service principal secret | Yes |
VITE_AZURE_CLIENT_ID |
Frontend auth client ID (can be same as API) | Yes |
VITE_AZURE_TENANT_ID |
Frontend tenant ID | Yes |
VITE_API_BASE_URL |
API base URL (default: /api) |
No |
For local development, you can skip the service principal and use your Azure CLI login:
- Remove or comment out
AZURE_CLIENT_IDandAZURE_CLIENT_SECRETfrom.env - Run
az loginbefore starting the API - The API will use
DefaultAzureCredentialwhich falls back to Azure CLI
- Verify the service principal has the "IPAM Reader" role assigned
- Check role assignment scope (should be management group or subscription level)
- Wait a few minutes after role assignment for propagation
- Ensure Azure Functions Core Tools is installed:
func --version - Check that port 7071 is not in use
- Verify
local.settings.jsonhas correct values
- Ensure
VITE_AZURE_CLIENT_IDandVITE_AZURE_TENANT_IDare set - Add
http://localhost:3000as a redirect URI in your Azure AD app registration - Check browser console for MSAL errors
- API Changes: Edit files in
/api/src/, the Functions runtime auto-reloads - Frontend Changes: Vite hot-reloads automatically
- To use real Azure data: Set
USE_MOCK_DATA = falseinfrontend/src/services/api.ts