grimmory-self-hosted-library
grimmory-self-hosted-library — an installable skill for AI agents.
By reason-machines · 1,258 installs
npx skills add reason-machines/trending-skills --skill grimmory-self-hosted-library
Source repository · Upstream listing
Grimmory Self Hosted Library Manager
Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
Grimmory is a self hosted application (successor to BookLore) for managing your entire book collection. It supports EPUBs, PDFs, MOBIs, AZW/AZW3, and comics (CBZ/CBR/CB7), with a built in browser reader, annotations, Kobo/OPDS sync, KOReader progress sync, metadata enrichment, and multi user support.
Installation
Requirements
Docker and Docker Compose
Step 1: Create .env
Step 2: Create docker compose.yml
Step 3: Launch
Open http://localhost:6060 and create your admin account.
Volume Layout
Environment Variables Reference
Variable Description Default
USER ID UID for the app process 1000
GROUP ID GID for the app process 1000
TZ Timezone string Etc/UTC
DATABASE URL JDBC connection string required
DATABASE USERNAME DB username required
DATABASE PASSWORD DB password required
DISK TYPE LOCAL or NETWORK LOCAL
Supported Book Formats
Category Formats
eBooks EPUB, MOBI, AZW, AZW3
Documents PDF
Comics CBZ, CBR, CB7
BookDrop (Auto Import)
Drop files into ./bookdrop/ on your host. Grimmory watches the folder, extracts metadata from Google Books and Open Library, and queues books for review.
Flow:
1. Watch — Grimmory monitors /bookdrop continuously
2. Detect — New files are picked up and parsed
3. Enrich — Metadata fetched from Google Books / Open Library
4. Import — Review in UI, adjust if needed, confirm import
Volume mapping required in docker compose.yml :
Network Storage Mode
For NFS, SMB, or other network mounted filesystems, set DISK TYPE=NETWORK . This disables destructive UI operations (delete, move, rename) to protect shared mounts while keeping reading, metadata, and sync fully functional.
Java Backend — Key Patterns
Grimmory is a Java application (Spring Boot + MariaDB). When contributing or extending:
Project Structure (typical Spring Boot layout)
REST API — Base Path
All endpoints are under /api/v1/ :
Example: Querying the API with Java (OkHttp)
Example: Spring Boot Controller Pattern
Example: JPA Entity Pattern
Example: Service with Metadata Enrichment
OPDS Integration
Connect any OPDS compatible reader app (Kybook, Chunky, Moon+ Reader, etc.) using:
Authenticate with your Grimmory username and password when prompted.
Kobo / KOReader Sync
Kobo : Connect via the device sync feature in Grimmory settings. The app exposes a sync endpoint compatible with Kobo's API.
KOReader : Configure KOReader's sync plugin to point to your Grimmory instance URL.
Multi User & Authentication
Local Authentication
Create users from the admin panel at http://localhost:6060. Each user has isolated shelves, reading progress, and preferences.
OIDC Authentication
Configure via environment variables (refer to full documentation at https://grimmory.org/docs/getting started for OIDC specific variables such as OIDC ISSUER URI , OIDC CLIENT ID , OIDC CLIENT SECRET ).
Building from Source
Common Docker Commands
Troubleshooting
Container won't start — DB connection refused
Books not appearing after BookDrop
Permission denied on ./books or ./data
OPDS not accessible from reader app
High memory usage
MariaDB and Grimmory together require at minimum ~512 MB RAM. For large libraries (10k+ books), allocate 1–2 GB.
Metadata not enriching
Google Books and Open Library require outbound internet access from the container. Verify DNS and network:
Contributing
Before opening a pull request:
1. Open an issue and get maintainer approval
2. Include screenshots/video proof and pasted test output
3. Follow backend and frontend conventions in CONTRIBUTING.md
4. AI assisted code is allowed but you must run, test, and understand every line
Links
GitHub : https://github.com/grimmory tools/grimmory
Docker Hub : https://hub.docker.com/r/grimmory/grimmory
GHCR : ghcr.io/grimmory tools/grimmory
Discord : https://discord.gg/FwqHeFWk
Docs : https://grimmory.org/docs/getting started
License : AGPL 3.0