selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

GitHub
KoShelf logo

Self-host KoShelf

2026.10.1

Reading dashboard for KOReader notes and statistics

ReleaseOpen SourceEUPL-1.2
Updated9 hours ago
LanguageRust
Setup difficultyModerate
MobileResponsive
Stars
254
Port
3000 (web server)
Docker
ghcr.io/devtigro/koshelf
Install with Docker Compose
Library overview showing books and comics gridBook details page with metadata, highlights, and annotationsReading calendar monthly view with activityYearly recap with timeline of completions and monthly summaries

What is KoShelf?

KoShelf is a self-hosted reading companion that reads KOReader metadata — highlights, annotations, reading progress, and statistics — and presents it in a web dashboard. It supports browsing your library with books and comics, viewing and editing metadata and annotations (with writeback to KOReader sidecars), detailed reading statistics with customizable heatmaps and weekly breakdowns, a monthly reading calendar, and a yearly recap with completions and summaries. An in-app reader opens EPUB, FB2, MOBI, and CBZ files with keyboard navigation and inline highlight notes. KoShelf can run as a live server with file watching or generate a complete static site for hosting anywhere. It supports all three KOReader metadata storage modes (adjacent .sdr folders, docsettings, hashdocsettings) and merges statistics from multiple devices. Optional authentication uses a generated password or delegates to trusted reverse proxies like Home Assistant ingress. The project is open source under EUPL-1.2 and built for personal use with daily testing by the author.

Should you self-host KoShelf?

KoShelf scores 45/100 on selfhost.directory (how scoring works) and ranks #10 of 19 in Ebook Management. It has 254 GitHub stars.

It shipped 15 stable releases in the past year. The latest, 2026.10.1, came out on 15 October 2026. New versions land roughly every 5 days.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is EUPL-1.2-licensed and written mostly in Rust.

Its closest alternative on selfhost.directory is Calibre (83/100, 26 268 stars). It scores higher overall, so compare the two before you pick. See KoShelf vs Calibre side by side.

Features

  • Annotations, Highlights & Ratings
  • In-App Reader
  • Library Archives
  • Library overview
  • Metadata Entries
  • Metadata WritebackRequires --enable-writeback flag
  • Optional authenticationServe mode only
  • Original File Downloads
  • Per-Item Statistics
  • Reading Calendar
  • Reading statistics
  • Search & Filter
  • Server Mode
  • Static Site Generation
  • Yearly Recap

KoShelf README

How to install KoShelf

Install KoShelf with Docker Compose

Docker and Docker Compose

services: koshelf: image: ghcr.io/devtigro/koshelf:latest ports: - '3000:3000' volumes: - /path/to/your/books:/books:ro - /path/to/your/settings:/settings:ro restart: unless-stopped

Community-maintained image via koshelf-docker

How to configure KoShelf

  • KOSHELF_ARCHIVE_RETENTION_DAYS30Days to keep files of removed archived books (0 = immediate, forever = indefinite)

    Days to keep files of removed archived books (0 = immediate, forever = indefinite)

    values: positive integer|0|forever

  • KOSHELF_AUTH_PROXY_PEERSIP/CIDR entries of reverse proxies allowed to authenticate users via X-KoShelf-User header

    IP/CIDR entries of reverse proxies allowed to authenticate users via X-KoShelf-User header

  • KOSHELF_BIND_ADDRESS0.0.0.0Address to listen on

    Address to listen on

  • KOSHELF_DATA_PATHPersistent data path for serve mode (required)

    Persistent data path for serve mode (required)

  • KOSHELF_DOCUMENT_METADATA_FOLDERdocKOReader's book metadata location: doc, dir, or hash

    KOReader's book metadata location: doc, dir, or hash

    values: doc|dir|hash

  • KOSHELF_ENABLE_AUTHfalseEnable password authentication in serve mode

    Enable password authentication in serve mode

    values: true|false

  • KOSHELF_ENABLE_LIBRARY_MANAGEMENTfalseEnable library management (remove archived books from UI)

    Enable library management (remove archived books from UI)

    values: true|false

  • KOSHELF_ENABLE_WRITEBACKfalseEnable metadata writeback (edit annotations, ratings, status from UI)

    Enable metadata writeback (edit annotations, ratings, status from UI)

    values: true|false

  • KOSHELF_INCLUDE_FILESfalseCopy original item files into assets/files/ for static export

    Copy original item files into assets/files/ for static export

    values: true|false

  • KOSHELF_KOBO_DBPath to Kobo's KoboReader.sqlite database

    Path to Kobo's KoboReader.sqlite database

  • KOSHELF_LANGUAGEen_USUI locale

    UI locale

  • KOSHELF_LIBRARY_PATHPath(s) to folders containing ebooks and comics

    Path(s) to folders containing ebooks and comics

  • KOSHELF_OUTPUTOutput directory for static export

    Output directory for static export

  • KOSHELF_STATISTICS_DBPath to the statistics.sqlite3 file for additional reading stats

    Path to the statistics.sqlite3 file for additional reading stats

  • KOSHELF_TITLEKoShelfSite title

    Site title

  • KOSHELF_TRUSTED_PROXIESComma-separated trusted reverse proxy IP/CIDR entries for forwarded client IP/proto resolution

    Comma-separated trusted reverse proxy IP/CIDR entries for forwarded client IP/proto resolution

KoShelf releases & version history

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…