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

BASH
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/config

Dizinler 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

BASH
chown -R 1000:1000 /home/firat/grimmory
chmod -R 775 /home/firat/grimmory

herş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

YAMLbook.yaml
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.