Self-hosted web app for downloading web fiction as EPUB files.
royalroad.comnovelfire.netwanderinginn.com- Generic WordPress-style sites
- Any site with a sequential "next chapter" link pattern
Inspired by WebToEpub by dteviot.
- Node.js 20+
npm install
npm run devOpens at http://localhost:3000 — API and UI served from one port with hot reload.
To use a different port:
npm run dev -- --port 4317npm install
npm run build
npm startOpens at http://localhost:3000.
docker compose up --buildOpens at http://localhost:3000.
Built EPUBs and queue state are stored on disk. Default paths (override via env vars):
| Env var | Default (local) | Default (Docker) | Purpose |
|---|---|---|---|
EPUB_OUTPUT_DIR |
.data/epubs |
/data/epubs |
Built EPUB files |
BOOKDROP_DIR |
.data/bookdrop |
/data/bookdrop |
Move-to-bookdrop destination |
CONFIG_DIR |
.data/config |
/data/config |
SQLite job queue (jobs.db) |
Example Docker Compose with volume mounts:
services:
epub-forge:
image: ghcr.io/audemed44/epub-forge:latest
restart: unless-stopped
ports:
- "9780:3000"
environment:
EPUB_OUTPUT_DIR: /data/epubs
BOOKDROP_DIR: /data/bookdrop
CONFIG_DIR: /data/config
volumes:
- /your/path/bookdrop:/data/bookdrop
- /your/path/epubs:/data/epubs
- /your/path/config:/data/config

