
Deploy Floci — Azure Emulator
A fast, open-source Azure emulator for development and testing.
Just deployed
/app/data
Deploy and Host Floci Azure Emulator on Railway
Floci Azure is a fast, open-source Azure service emulator for development, testing, automation, and CI/CD workflows. It provides Azure-compatible APIs for multiple services without requiring applications to connect directly to production Azure infrastructure.
About Hosting Floci Azure
This template deploys Floci Azure on Railway using the official floci/floci-az:latest Docker image.
Floci Azure exposes its emulated Azure services through a unified HTTP endpoint on port 4577. Applications, SDKs, automation tools, and development environments can connect to the Railway public domain instead of real Azure service endpoints.
Persistent emulator state is stored in a Railway volume mounted at /app/data, allowing supported resources to survive container restarts and redeployments.
Because Railway does not expose the host Docker socket to containers, Azure Functions emulation is disabled by default in this template. Other supported Floci Azure services that run directly inside the main emulator remain available.
Common Use Cases
- Develop applications against Azure-compatible APIs without using production Azure resources
- Test Azure Blob Storage, Queue Storage, Table Storage, Cosmos DB, Key Vault, and other supported services
- Run integration and end-to-end tests against isolated Azure-like infrastructure
- Test backend applications that use Azure SDKs
- Build CI/CD workflows without depending on real Azure environments
- Test automation and middleware integrations against Azure-compatible APIs
- Provide shared remote Azure emulation for development teams
Dependencies for Floci Azure Hosting
- Official
floci/floci-az:latestDocker image - Railway public networking on port
4577 - Railway persistent volume mounted at
/app/data
Railway Configuration
Recommended environment configuration:
PORT="4577" # Railway HTTP target port
FLOCI_AZ_PORT="4577" # Floci Azure unified API port
FLOCI_AZ_BASE_URL="https://${{RAILWAY_PUBLIC_DOMAIN}}" # Public endpoint returned in service URLs
RAILWAY_RUN_UID="0" # Avoids permission issues when writing to the mounted Railway volume
FLOCI_AZ_STORAGE_MODE="persistent" # Persist emulator state across restarts
FLOCI_AZ_STORAGE_PERSISTENT_PATH="/app/data" # Railway persistent volume directory
FLOCI_AZ_SERVICES_FUNCTIONS_ENABLED="false" # Azure Functions require a Docker socket, which Railway does not expose
Persistent volume:
/app/data
No custom start command is required.
How to Use Floci Azure
After deployment, Railway provides a public domain similar to:
https://your-floci-azure.up.railway.app
Use this Railway URL as the Floci Azure endpoint.
For the examples below:
export FLOCI_AZ_ENDPOINT="https://your-floci-azure.up.railway.app"
Replace the example URL with your actual Railway public domain.
1. Check Emulator Health
Verify that Floci Azure is running:
curl "$FLOCI_AZ_ENDPOINT/health"
A successful response confirms that the emulator is available.
2. Connect Your Application
Applications using Azure SDKs should override the normal Azure endpoint and point the client to the Railway public domain.
The exact configuration depends on the Azure SDK and service being used.
Conceptually:
Real Azure endpoint
↓
https://service.azure.com
Floci Azure endpoint
↓
https://your-floci-azure.up.railway.app
This allows application code to interact with the emulator instead of production Azure infrastructure.
Example: Azure Blob Storage
When using an Azure Storage SDK, configure the client to use the Floci Azure endpoint.
JavaScript / TypeScript
import { BlobServiceClient } from "@azure/storage-blob";
const endpoint = "https://your-floci-azure.up.railway.app";
const blobServiceClient = new BlobServiceClient(
endpoint,
credential
);
Python
from azure.storage.blob import BlobServiceClient
blob_service_client = BlobServiceClient(
account_url="https://your-floci-azure.up.railway.app",
credential=credential
)
Exact authentication and service paths depend on the Floci Azure service being used.
Supported Azure Services
Floci Azure can emulate multiple Azure services through a single deployment, including services such as:
- Blob Storage
- Queue Storage
- Table Storage
- Cosmos DB
- Key Vault
- App Configuration
- Event Hubs
- Service Bus
- API Management
- Azure SQL
- Azure Cache for Redis
- Azure Container Registry
- Virtual Machines
- Virtual Networks
- AKS
- Azure Monitor
- Microsoft Graph
- Entra ID / OAuth
Service coverage and implementation completeness may vary between Floci Azure releases.
Persistent Storage
This template uses:
FLOCI_AZ_STORAGE_MODE="persistent"
FLOCI_AZ_STORAGE_PERSISTENT_PATH="/app/data"
with a Railway volume mounted at:
/app/data
This allows supported Floci Azure resources and emulator state to survive container restarts and redeployments.
Deleting the Railway volume will also delete the persisted emulator state stored inside it.
Azure Functions Limitation
Azure Functions emulation requires access to a Docker runtime so Floci can start additional containers.
Railway containers do not expose the host Docker socket:
/var/run/docker.sock
For this reason, Azure Functions are disabled in this template:
FLOCI_AZ_SERVICES_FUNCTIONS_ENABLED="false"
This limitation does not prevent other Floci Azure services that run directly inside the emulator from being used.
Important Notes
- Floci Azure is an emulator and does not provide actual Azure infrastructure.
- Do not treat the emulator as a production replacement for Microsoft Azure.
- Applications must point their Azure SDK or HTTP endpoint to the Railway public domain.
- Persistent state is stored under
/app/data. - Azure Functions are disabled because Railway does not expose a host Docker socket.
- Support and implementation completeness may vary between Azure services.
- Verify service-specific compatibility before relying on Floci Azure for complex integration tests.
Floci Azure vs Microsoft Azure
| Feature | Floci Azure on Railway | Microsoft Azure |
|---|---|---|
| Azure-compatible APIs | ✅ | ✅ |
| Requires Azure subscription | ❌ | ✅ |
| Development and testing | ✅ | ✅ |
| Persistent emulator state | ✅ | N/A |
| Real Azure infrastructure | ❌ | ✅ |
| Remote shared emulator | ✅ | N/A |
| CI/CD integration testing | ✅ | ✅ |
| Azure Functions on this Railway template | ❌ | ✅ |
| Suitable as production infrastructure | ❌ | ✅ |
Floci Azure vs Azurite
| Feature | Floci Azure | Azurite |
|---|---|---|
| Blob Storage | ✅ | ✅ |
| Queue Storage | ✅ | ✅ |
| Table Storage | ✅ | ✅ |
| Cosmos DB | ✅ | ❌ |
| Key Vault | ✅ | ❌ |
| Event Hubs | ✅ | ❌ |
| Service Bus | ✅ | ❌ |
| Azure SQL emulation | ✅ | ❌ |
| Multiple Azure service APIs | ✅ | ❌ |
| Lightweight storage-focused emulator | ❌ | ✅ |
Azurite is primarily focused on Azure Storage emulation, while Floci Azure aims to provide a broader Azure service emulator through a unified endpoint.
Why Deploy Floci Azure on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
Deploying Floci Azure on Railway provides a remotely accessible Azure-compatible development environment with automatic HTTPS, persistent storage, public networking, and simple deployment management without maintaining your own virtual machine.
Template Content
