Skip to content

bad-antics/n01d-book-reader

Repository files navigation

📚 N01D Book Reader

Self-Hosted eBook Library & OPDS Server

NullSec Python License

Part of the NullSec Toolkit — a zero-dependency Python eBook server with OPDS catalog support for any reader app (iPad, Android, Kindle, etc.).

███╗   ██╗ ██████╗  ██╗██████╗       ██████╗  ██████╗  ██████╗ ██╗  ██╗
████╗  ██║██╔═████╗███║██╔══██╗      ██╔══██╗██╔═══██╗██╔═══██╗██║ ██╔╝
██╔██╗ ██║██║██╔██║╚██║██║  ██║█████╗██████╔╝██║   ██║██║   ██║█████╔╝
██║╚██╗██║████╔╝██║ ██║██║  ██║╚════╝██╔══██╗██║   ██║██║   ██║██╔═██╗
██║ ╚████║╚██████╔╝ ██║██████╔╝      ██████╔╝╚██████╔╝╚██████╔╝██║  ██╗
╚═╝  ╚═══╝ ╚═════╝  ╚═╝╚═════╝       ╚═════╝  ╚═════╝  ╚═════╝ ╚═╝  ╚═╝

Features

  • 📖 OPDS Catalog Server — Compatible with any OPDS reader (KOReader, Librera, Moon+ Reader, Panels, etc.)
  • 🌐 Web Interface — Browse, search, and read books from any browser
  • 📁 Multi-Format Support — PDF, EPUB, MOBI, AZW3, CBZ, CBR, FB2, DJVU, TXT
  • 🔍 Full-Text Search — Search by title, author, or category
  • 🏷️ Auto-Categorization — Automatically categorizes books by genre/topic
  • 🖼️ Cover Extraction — Extracts and caches book cover images
  • 🔄 Network Sync — Sync from remote book servers (Doomsday, Calibre, etc.)
  • 🛡️ Zero Dependencies — Pure Python 3 standard library (PyMuPDF optional for PDF covers)
  • 🐧 Systemd Service — Runs as a background service on Linux

Quick Start

# Clone
git clone https://github.com/bad-antics/n01d-book-reader.git
cd n01d-book-reader

# Run
python3 n01d-book-reader.py

# Access
# Web UI: http://localhost:8074
# OPDS:   http://localhost:8074/opds

Configuration

Edit config.json:

{
  "host": "0.0.0.0",
  "port": 8074,
  "library_name": "N01D Book Reader",
  "library_dirs": [
    "/home/user/Books",
    "/home/user/Documents"
  ],
  "supported_formats": [".pdf", ".epub", ".mobi", ".azw3", ".cbz", ".cbr", ".fb2", ".djvu", ".txt"],
  "scan_interval_minutes": 30
}

OPDS Setup

Add this OPDS feed URL to your reader app:

http://<your-ip>:8074/opds

Tested Readers

App Platform Status
KOReader Linux/Android
Librera Reader Android
Moon+ Reader Android
Panels iOS/iPadOS
Chunky Reader iOS
Aldiko Android

Remote Sync

Sync books from a remote server (e.g., Windows machine running a book server):

# Edit DOOMSDAY_URL in sync_doomsday.py
python3 sync_doomsday.py

Systemd Service

# Install service
sudo cp n01d-book-reader.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now n01d-book-reader

# Check status
sudo systemctl status n01d-book-reader

API Endpoints

Endpoint Description
GET / Web UI
GET /opds OPDS root catalog
GET /opds/all All books feed
GET /opds/search?q= Search books
GET /opds/category/<name> Books by category
GET /api/books JSON book list
GET /api/stats Library statistics
GET /download/<id> Download book file
GET /cover/<id> Book cover image

Part of NullSec

License

MIT License — See LICENSE for details.

About

Self-hosted eBook library & OPDS server - Zero-dependency Python server for browsing, searching, and reading books. Compatible with KOReader, Librera, Moon+ Reader, Panels.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages