Self-Hosted CacheWarmer
A standalone Node.js microservice with REST API, BullMQ job queue, SQLite database, and React dashboard. Deploy via Docker or install from source.
Deploy with Docker
Pull the Image
Pull the Docker image and create your configuration file with API keys and warming targets.
Start the Service
Run the container with Docker Compose. The service starts with Redis for the job queue and SQLite for data storage.
Use the API
Submit sitemaps via the REST API or open the React dashboard to monitor warming jobs in real-time.
# docker-compose.yml
version: "3.8"
services:
cachewarmer:
image: drossmedia/cachewarmer:latest
ports:
- "3000:3000"
volumes:
- ./data:/app/data
- ./config.yaml:/app/config.yaml:ro
depends_on:
- redis
restart: unless-stopped
redis:
image: redis:7-alpine
volumes:
- redis-data:/data
restart: unless-stopped
volumes:
redis-data:Clean, Modular Architecture
Built with TypeScript, Fastify, and BullMQ for reliability and performance.
Built for Developers
REST API
Full REST API built on Fastify. Submit sitemaps, trigger warming jobs, check status, and retrieve logs programmatically.
BullMQ Job Queue
Reliable job processing with Redis-backed BullMQ. Built-in rate limiting, retries with exponential backoff, and priority scheduling.
React Dashboard
Web-based dashboard for monitoring warming jobs, viewing logs, and managing sitemaps. Real-time updates via Server-Sent Events.
Docker Ready
Pre-built Docker images with Chromium included. Docker Compose configuration for production deployments. Single command to start.
SQLite Storage
No external database server required. SQLite stores all job data, results, and logs. Lightweight and zero-maintenance.
Cron Scheduler
Built-in cron scheduler for automatic warming. Configure custom schedules per sitemap. Or trigger via external cron jobs.
REST API Endpoints
/api/warmSubmit a sitemap for warming. Specify targets and priority.
{
"sitemapUrl": "https://example.com/sitemap.xml",
"targets": ["cdn", "facebook", "linkedin", "indexnow"],
"priority": "normal"
}{
"jobId": "warm-abc123",
"status": "queued",
"urlCount": 42,
"targets": ["cdn", "facebook", "linkedin", "indexnow"],
"createdAt": "2026-02-28T12:00:00Z"
}/api/jobsList all warming jobs with status and progress.
/api/jobs/:idGet detailed status of a specific warming job.
/api/statusHealth check and system status endpoint.
Tech Stack
Core
- Node.js 20+ with TypeScript
- Fastify web framework
- Puppeteer with Chromium
- BullMQ + Redis job queue
- SQLite via better-sqlite3
Deployment
- Docker with pre-built images
- Docker Compose for production
- Environment-based configuration
- Structured logging with Pino
- Health check endpoint
Deploy CacheWarmer on Your Infrastructure
Full control, full flexibility. Deploy via Docker in minutes.