Local Image CDN

Develop Offline with Docker

Cloud CDNs break your development flow. Work offline with identical local infrastructure. Same API endpoints, same transformations, zero internet dependency.

One Command Setup

Get a complete image CDN running locally in seconds. No configuration required.

terminal
# Start local development environment
docker run -d \
--name icefiery \
-p 5100:5100 \
ghcr.io/icefiery-com/icefiery:latest
✓ Container started successfully
✓ Ready in 5s
# Services available:
# Dashboard: http://localhost:5100
# API: http://localhost:5100/api/v1
# CDN: http://localhost:5100/res
# Use predefined development API keys
ICEFIERY_API_KEY=private_0000000000
ICEFIERY_UPLOAD_URL=http://localhost:5102/api/v1/upload-temporary-image/123456789

No dependencies, self-contained

Everything you need in one container - API, CDN, and dashboard with zero external dependencies.

Pre-configured API Keys

Development API keys are included. Start uploading and transforming images immediately without manual steps of configuration or account creation.

Ready in Seconds

Container starts in under 5 seconds. No complex setup or configuration files.

Development vs Production

Same API endpoints, different base URLs. Switch environments with a single configuration change.

Environment Configuration

config.js
// Development configuration
const config = {
development: {
apiUrl: 'http://localhost:5102/api/v1',
cdnUrl: 'http://localhost:5103/res',
publicKey: 'public_dev_key_12345'
},
production: {
apiUrl: 'https://api.icefiery.com/v1',
cdnUrl: 'https://res.icefiery.com/res',
publicKey: process.env.ICEFIERY_PUBLIC_KEY
}
};
const env = process.env.NODE_ENV || 'development';
export default config[env];

Same API Calls

api.js
// Same API calls work in both environments
import config from './config';
const uploadImage = async (file) => {
const res = await fetch(
`${config.apiUrl}/upload-temporary-image/upl_07c1b6044f944e6f8c160`,
{
headers: {
'X-Original-Filename': file.name,
},
body: file,
}
);
const { imageUrl } = await res.json();
return imageUrl;
};
// Image URLs work the same way
function ImageComponent({ imageId }) {
const imageUrl = `${config.cdnUrl}/${imageId}?width=400&format=webp`;
return <img src={imageUrl || "/placeholder.svg"} alt="Transformed image" />;
}
Local Development
API:localhost:5100/api/v1
CDN:localhost:5100/res
Dashboard:localhost:5100
Production
API:api.icefiery.com/v1
CDN:res.icefiery.com/res
Dashboard:dashboard.icefiery.com

Why Local Development Matters

Develop faster and more reliably with local infrastructure that matches production.

Zero Internet Dependency
Develop completely offline. No external API calls required during development.
Production Parity
Identical API endpoints and behavior between local and production environments.
Team Consistency
Every team member runs the exact same infrastructure locally.
Faster Iteration
Test image transformations instantly without network latency or API limits.