Skip to content

audemed44/epub-forge

Repository files navigation

epub-forge

Self-hosted web app for downloading web fiction as EPUB files.

Builder tab

Supported sites

  • royalroad.com
  • novelfire.net
  • wanderinginn.com
  • Generic WordPress-style sites
  • Any site with a sequential "next chapter" link pattern
More screenshots

Build Queue

Queue tab

Configuration

Config tab

Acknowledgements

Inspired by WebToEpub by dteviot.

Prerequisites

  • Node.js 20+

Run locally (dev)

npm install
npm run dev

Opens at http://localhost:3000 — API and UI served from one port with hot reload.

To use a different port:

npm run dev -- --port 4317

Run locally (production build)

npm install
npm run build
npm start

Opens at http://localhost:3000.

Run with Docker

docker compose up --build

Opens at http://localhost:3000.

Persistent storage

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

About

Self hosted web app to generate ePubs from websites like royalroad etc.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors