Grimmory ve Shelfmark, self-hosted dijital kütüphane ekosisteminde birbirini tamamlayan iki güçlü GitHub projesidir. Grimmory, kullanıcıların e-kitap, PDF, çizgi roman ve sesli kitap koleksiyonlarını organize edebileceği, okuyabileceği ve cihazlar arasında senkronize edebileceği bir dijital kütüphane çözümüdür. Dahili okuyucu, akıllı raf sistemi ve otomatik metadata çekme özellikleri sayesinde modern bir Calibre alternatifi olarak konumlanır. Kobo marka eokuyucunuzu otomatik senkronizasyon yapabilirsiniz.
Shelfmark ise doğrudan bir kütüphane yöneticisi değil, farklı kaynaklardan kitap ve sesli kitap aramak, indirmek ve kullanıcı taleplerini yönetmek için tasarlanmış bir merkez (hub) görevi görür. Torrent, usenet ve web kaynaklarını desteklemesi, çok kullanıcılı yapı ve talep sistemi ile özellikle paylaşımlı ortamlarda güçlü bir çözüm sunar.
Bu iki proje birlikte kullanıldığında güçlü bir iş akışı ortaya çıkar: Shelfmark içerikleri bulup indirirken, Grimmory bu içerikleri düzenler, saklar ve kullanıcıya okuma deneyimi sunar. Bu yapı, self-hosted bir “Netflix for books” deneyimi oluşturmak isteyen kullanıcılar için oldukça etkili bir çözümdür.
Sanal makina da kurulum için önce aşağıdaki komutlar ile gerekli dizinleri açalım
mkdir -p /home/firat/grimmory/db
mkdir -p /home/firat/grimmory/data
mkdir -p /home/firat/grimmory/books
mkdir -p /home/firat/grimmory/bookdrop
mkdir -p /home/firat/grimmory/shelfmark/configDizinler açıldıktan sonra bazen Shelfmark gerekli izin ve tetkiler olmadığı için saçmalayabiliyor. o yüzden aşağıdaki satılar ile gerekli yetkileri verelim
chown -R 1000:1000 /home/firat/grimmory
chmod -R 775 /home/firat/grimmoryherşey tamam şimdi sadece aşağıdaki docker compose kodları kullanarak portainerde bir stack oluşturalım. Gerekli dizin şifre gibi değişiklikleri kendinize göre uyarlamayı da unutmayın
version: "3.8"
services:
mariadb:
image: lscr.io/linuxserver/mariadb:11.4.8
environment:
PUID: 1000
PGID: 1000
TZ: Europe/Istanbul
MYSQL_ROOT_PASSWORD: cok_guclu_bir_root_sifresi
MYSQL_DATABASE: grimmory_db
MYSQL_USER: grimmory_user
MYSQL_PASSWORD: cok_guclu_bir_kullanici_sifresi
volumes:
- /home/firat/grimmory/db:/config:rw
healthcheck:
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost"]
interval: 5s
timeout: 5s
retries: 20
start_period: 60s
restart: unless-stopped
grimmory:
image: ghcr.io/grimmory-tools/grimmory:latest
environment:
USER_ID: 1000
GROUP_ID: 1000
TZ: Europe/Istanbul
DATABASE_URL: jdbc:mariadb://mariadb:3306/grimmory_db
DATABASE_USERNAME: grimmory_user
DATABASE_PASSWORD: cok_guclu_bir_kullanici_sifresi
SWAGGER_ENABLED: "false"
FORCE_DISABLE_OIDC: "false"
depends_on:
mariadb:
condition: service_healthy
ports:
- "6060:6060"
volumes:
- /home/firat/grimmory/data:/app/data:rw
- /home/firat/grimmory/books:/books:rw
- /home/firat/grimmory/bookdrop:/bookdrop:rw
healthcheck:
test: ["CMD-SHELL", "wget -q -O - http://localhost:6060/api/v1/healthcheck || exit 1"]
interval: 60s
timeout: 10s
retries: 5
start_period: 60s
restart: unless-stopped
shelfmark:
image: ghcr.io/calibrain/shelfmark:latest
ports:
- "8137:8137"
volumes:
- /home/firat/grimmory/shelfmark/config:/config:rw
- /home/firat/grimmory/books:/books:rw
- /home/firat/grimmory/bookdrop:/bookdrop:rw
environment:
PUID: 1000
PGID: 1000
TZ: Europe/Istanbul
INGEST_DIR: /bookdrop
FLASK_PORT: 8137
tmpfs:
- /tmp
restart: unless-stopped
Ve Deploy yaparak kurulumu bitirebilirsiniz.
Grimmory için http://IPADRESINIZ:6060 adresine girerek kurulumu başlatatabilirsiniz.

Shelfmark için http://IPADRESINIZ:8137 adresi ile giriş yapabilirsiniz.
