
Grimmory Self Hosted Library
Spin up and configure Grimmory as a self-hosted EPUB/PDF/comic library with Docker, Kobo sync, and OPDS for personal or household reading stacks.
Overview
Grimmory Self-Hosted Library is an agent skill for the Operate phase that guides Docker-based setup, configuration, and extension of the Grimmory self-hosted book manager.
Install
npx skills add https://github.com/aradotso/trending-skills --skill grimmory-self-hosted-libraryWhat is this skill?
- Step-by-step Docker Compose and `.env` for Grimmory plus MariaDB with LOCAL or NETWORK disk modes
- Format coverage: EPUB, PDF, MOBI, AZW/AZW3, and comics (CBZ/CBR/CB7) with in-browser reading and annotations
- Kobo sync, OPDS catalog, KOReader progress sync, and metadata enrichment workflows
- Bookdrop ingestion and multi-user library management on your own hardware
- Official image paths: `grimmory/grimmory:latest` or `ghcr.io/grimmory-tools/grimmory:latest`
- Supports EPUB, PDF, MOBI, AZW/AZW3, and comic archives CBZ/CBR/CB7
- Documents DISK_TYPE LOCAL vs NETWORK and MariaDB-backed persistence
Adoption & trust: 1.2k installs on skills.sh; 31 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want a private, sync-friendly ebook and comic library but lack a consolidated runbook for Grimmory’s Docker stack, storage, and reader integrations.
Who is it for?
Solo builders self-hosting personal or family libraries who already use Docker and want Kobo/OPDS-style sync without SaaS lock-in.
Skip if: Teams building a custom reading app from scratch, or anyone who only needs generic Docker tutorials with no Grimmory-specific paths and features.
When should I use this skill?
Triggers include set up grimmory, self-hosted book library, grimmory configuration, grimmory docker setup, grimmory bookdrop, grimmory kobo sync, grimmory opds, and grimmory metadata lookup.
What do I get? / Deliverables
You leave with runnable Compose/env patterns and configuration guidance for formats, sync (Kobo/OPDS/KOReader), metadata, and multi-user use on your own infra.
- `.env` template filled for Grimmory and MariaDB
- `docker-compose.yml` service layout for Grimmory deployment
Recommended Skills
Journey fit
Canonical shelf is Operate because the skill is about running and maintaining a self-hosted service, not greenfield product code. Infra subphase fits Docker Compose, MariaDB, storage paths, and ongoing deployment concerns for Grimmory.
How it compares
Use instead of piecing together forum posts when you need Grimmory-specific env, compose, and sync knobs—not a generic “Docker 101” skill.
Common Questions / FAQ
Who is grimmory-self-hosted-library for?
It is for solo and indie operators who self-host media—especially ebook and comic collectors who chose Grimmory and want agent-guided Docker and feature configuration.
When should I use grimmory-self-hosted-library?
Use it during Operate (infra) when standing up or tuning Grimmory: initial Docker setup, Bookdrop, Kobo sync, OPDS, metadata lookup, or multi-user settings—also when migrating from BookLore-style workflows.
Is grimmory-self-hosted-library safe to install?
Treat it like any third-party skill: review the Security Audits panel on this Prism page, inspect what your agent can run (shell, filesystem), and rotate DB passwords you place in `.env` before exposing the service.
SKILL.md
READMESKILL.md - Grimmory Self Hosted Library
# 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` ```ini # Application APP_USER_ID=1000 APP_GROUP_ID=1000 TZ=Etc/UTC # Database DATABASE_URL=jdbc:mariadb://mariadb:3306/grimmory DB_USER=grimmory DB_PASSWORD=${DB_PASSWORD} # Storage: LOCAL (default) or NETWORK DISK_TYPE=LOCAL # MariaDB DB_USER_ID=1000 DB_GROUP_ID=1000 MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE=grimmory ``` ### Step 2: Create `docker-compose.yml` ```yaml services: grimmory: image: grimmory/grimmory:latest # Alternative registry: ghcr.io/grimmory-tools/grimmory:latest container_name: grimmory environment: - USER_ID=${APP_USER_ID} - GROUP_ID=${APP_GROUP_ID} - TZ=${TZ} - DATABASE_URL=${DATABASE_URL} - DATABASE_USERNAME=${DB_USER} - DATABASE_PASSWORD=${DB_PASSWORD} - DISK_TYPE=${DISK_TYPE} depends_on: mariadb: condition: service_healthy ports: - "6060:6060" volumes: - ./data:/app/data - ./books:/books - ./bookdrop:/bookdrop healthcheck: test: wget -q -O - http://localhost:6060/api/v1/healthcheck interval: 60s retries: 5 start_period: 60s timeout: 10s restart: unless-stopped mariadb: image: lscr.io/linuxserver/mariadb:11.4.5 container_name: mariadb environment: - PUID=${DB_USER_ID} - PGID=${DB_GROUP_ID} - TZ=${TZ} - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${DB_USER} - MYSQL_PASSWORD=${DB_PASSWORD} volumes: - ./mariadb/config:/config restart: unless-stopped healthcheck: test: ["CMD", "mariadb-admin", "ping", "-h", "localhost"] interval: 5s timeout: 5s retries: 10 ``` ### Step 3: Launch ```bash docker compose up -d # View logs docker compose logs -f grimmory # Check health curl http://localhost:6060/api/v1/healthcheck ``` Open http://localhost:6060 and create your admin account. --- ## Volume Layout ``` ./data/ # App data, thumbnails, user config ./books/ # Your book files (mounted at /books) ./bookdrop/ # Drop-zone for auto-import (mounted at /bookdrop) ./mariadb/ # MariaDB data ``` --- ## 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. ``` ./bookdrop/ my-novel.epub ← dropped here another-book.pdf ← dropped here ``` Flow