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

1

Pull the Image

Pull the Docker image and create your configuration file with API keys and warming targets.

2

Start the Service

Run the container with Docker Compose. The service starts with Redis for the job queue and SQLite for data storage.

3

Use the API

Submit sitemaps via the REST API or open the React dashboard to monitor warming jobs in real-time.

YAML
# 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.

XML Sitemap
Sitemap Parser
Job Queue (BullMQ + Redis)
CDN
Facebook
LinkedIn
Twitter/X
Pinterest
IndexNow
Google
Bing
Cloudflare
Imperva
Akamai
SQLite Database
React Dashboard

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

POST/api/warm

Submit a sitemap for warming. Specify targets and priority.

Request Body
JSON
{
  "sitemapUrl": "https://example.com/sitemap.xml",
  "targets": ["cdn", "facebook", "linkedin", "indexnow"],
  "priority": "normal"
}
Response
JSON
{
  "jobId": "warm-abc123",
  "status": "queued",
  "urlCount": 42,
  "targets": ["cdn", "facebook", "linkedin", "indexnow"],
  "createdAt": "2026-02-28T12:00:00Z"
}
GET/api/jobs

List all warming jobs with status and progress.

GET/api/jobs/:id

Get detailed status of a specific warming job.

GET/api/status

Health 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.