Mijn eigen digitale boekenkast

Wie veel digitale boeken verzamelt, kent het probleem: EPUB- en PDF-bestanden staan verspreid over mappen en zijn daardoor lastig terug te vinden. Met Calibre-Web maak je van die verzameling een overzichtelijke digitale boekenkast die je gewoon via je webbrowser kunt openen.

In dit artikel lees je hoe je een bestaande boekenmap op een Synology DS723+ beschikbaar maakt in Calibre-Web. De uitleg is bewust eenvoudig gehouden. Je hoeft geen ervaren systeembeheerder te zijn, maar enige vertrouwdheid met Synology Container Manager en de opdrachtregel is wel handig.

Kort gezegd: je bewaart je bestaande boeken op dezelfde plek, laat Calibre er een nette bibliotheek van maken en gebruikt Calibre-Web als toegankelijke voorkant.

Wat gaan we maken?

We gebruiken drie onderdelen:

  • Je bestaande boekenmap met EPUB- en PDF-bestanden.
  • Een Calibre-bibliotheek waarin de boeken worden geregistreerd en geordend.
  • Calibre-Web, de website waarmee je door de bibliotheek bladert.

De bestaande boeken staan in dit voorbeeld in:

/volume1/EBook

Binnen die map maken we een aparte bibliotheekmap:

/volume1/EBook/CalibreLibrary

Calibre-Web wordt bereikbaar via poort 8083.

Zo ziet de opbouw eruit

flowchart LR
    U[Gebruiker met webbrowser] -->|Opent digitale boekenkast| W[Calibre-Web]
    W -->|Leest boekgegevens| D[(metadata.db)]
    D --> L[CalibreLibrary]
    B[Bestaande EPUB- en PDF-bestanden] -->|Worden geregistreerd| L
    L --> S[Synology-map /volume1/EBook]
Opent digitale boekenkastLeest boekgegevensWorden geregistreerdGebruiker met webbrowserCalibre-Webmetadata.dbCalibreLibraryBestaande EPUB- en PDF-bestandenSynology-map /volume1/EBook

De database metadata.db kun je zien als de inhoudsopgave van je boekenkast. Daarin staat welke boeken zijn opgenomen en welke gegevens daarbij horen, zoals titel en auteur. De daadwerkelijke boekbestanden blijven op je NAS staan.

Stap 1: bereid de mappen voor

Maak eerst een map voor de instellingen van Calibre-Web en een map voor de beheerde bibliotheek:

mkdir -p /volume1/docker/calibre-web/config
mkdir -p /volume1/EBook/CalibreLibrary

De map CalibreLibrary wordt later overgeslagen bij het zoeken naar nieuwe boeken. Daarmee voorkom je dat Calibre zijn eigen kopieën opnieuw probeert toe te voegen.

Stap 2: controleer gebruiker en poort

Een toepassing in een container heeft toestemming nodig om bestanden op je NAS te lezen en te schrijven. Controleer (in bash) daarom eerst het gebruikersnummer en groepsnummer:

id

In dit voorbeeld gebruiken we:

PUID=1026
PGID=100

Gebruik bij voorkeur de waarden die de opdracht id op jouw NAS toont.

Controleer daarna of poort 8083 nog niet door een andere toepassing wordt gebruikt:

sudo netstat -tulpn | grep :8083

Als je geen uitvoer krijgt, is er via deze controle geen actief programma op poort 8083 gevonden. Je kunt ook de poorten van bestaande containers bekijken:

sudo docker ps --format "table {{.Names}}\t{{.Ports}}"

Stap 3: maak het project in Container Manager

Open Container Manager op je Synology NAS en volg deze stappen:

  1. Ga naar Project.
  2. Kies Maken of Create.
  3. Gebruik calibre als projectnaam.
  4. Kies /volume1/docker/calibre-web als projectmap.
  5. Kies voor het invoeren van een docker-compose.yml-bestand.
  6. Plak de onderstaande inhoud.
  7. Laat Container Manager het project controleren en starten.
services:
  calibre-web:
    image: lscr.io/linuxserver/calibre-web:latest
    container_name: calibre-web
    environment:
      - PUID=1026
      - PGID=100
      - TZ=Europe/Amsterdam
    volumes:
      - /volume1/docker/calibre-web/config:/config
      - /volume1/EBook:/books
    ports:
      - "8083:8083"
    restart: unless-stopped

De belangrijkste regel is deze:

- /volume1/EBook:/books

Hiermee wordt je bestaande NAS-map binnen Calibre-Web zichtbaar als /books. Het is dus dezelfde inhoud, maar met een korter pad binnen de container.

Stap 4: controleer of alles bereikbaar is

Controleer eerst of Calibre-Web draait:

sudo docker ps | grep calibre-web

Controleer daarna of de boekenmap zichtbaar is:

sudo docker exec calibre-web ls -la /books

Open vervolgens de webinterface in je browser:

http://<NAS-IP>:8083

Vervang <NAS-IP> door het IP-adres van je eigen Synology NAS.

Stap 5: maak de Calibre-bibliotheek

Open een opdrachtregel binnen de Calibre-Web-container:

sudo docker exec -it calibre-web bash

Controleer of het hulpprogramma voor het beheren van de bibliotheek aanwezig is:

which calibredb
calibredb --version

Wanneer which calibredb bijvoorbeeld /usr/bin/calibredb toont, is het programma beschikbaar.

Maak of open daarna de bibliotheek:

calibredb list --library-path /books/CalibreLibrary

Controleer of het databasebestand is aangemaakt:

ls -la /books/CalibreLibrary

Of voer een gerichte controle uit:

test -f /books/CalibreLibrary/metadata.db \
  && echo "metadata.db aanwezig" \
  || echo "metadata.db ontbreekt"

Vul vervolgens in Calibre-Web bij Database Configuration dit pad in:

/books/CalibreLibrary/metadata.db

Stap 6: voeg je bestaande boeken toe

Met de volgende opdracht zoekt Calibre in de volledige boekenmap naar EPUB- en PDF-bestanden:

find /books \
  -path "/books/CalibreLibrary" -prune -o \
  -type f \( -iname "*.epub" -o -iname "*.pdf" \) \
  -print0 | xargs -0 -r calibredb add \
  --library-path /books/CalibreLibrary

Deze opdracht doet vier dingen:

  • zoekt in /books en alle onderliggende mappen;
  • accepteert EPUB- en PDF-bestanden;
  • slaat de map CalibreLibrary over;
  • verwerkt ook bestandsnamen met spaties.

Gebruik bij een normale import niet de optie --duplicates. Zonder die optie probeert Calibre dubbele registraties tegen te houden. Houd er wel rekening mee dat boeken met afwijkende titel- of auteursgegevens soms niet als hetzelfde boek worden herkend.

Nieuwe boeken later toevoegen

Wanneer je later nieuwe EPUB- of PDF-bestanden in /volume1/EBook plaatst, kun je dezelfde importopdracht opnieuw uitvoeren:

find /books \
  -path "/books/CalibreLibrary" -prune -o \
  -type f \( -iname "*.epub" -o -iname "*.pdf" \) \
  -print0 | xargs -0 -r calibredb add \
  --library-path /books/CalibreLibrary

Calibre werkt daarna de bestaande metadata.db bij. Je hoeft dus niet iedere keer een nieuwe bibliotheek te maken.

Handige controles

Toon alle geregistreerde boeken

calibredb list --library-path /books/CalibreLibrary

Toon alleen het begin van de lijst

calibredb list --library-path /books/CalibreLibrary | head -20

Zoek naar een titel

calibredb search "title:Python" \
  --library-path /books/CalibreLibrary

Tel de gevonden bronbestanden

find /books \
  -path "/books/CalibreLibrary" -prune -o \
  -type f \( -iname "*.epub" -o -iname "*.pdf" \) \
  -print | wc -l

Bekijk de laatste meldingen van Calibre-Web

Voer deze opdracht uit vanaf de opdrachtregel van de NAS, dus niet vanuit de container:

sudo docker logs calibre-web --tail 100

Controleer de container en webpoort

sudo docker ps \
  --filter name=calibre-web \
  --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

curl -I http://localhost:8083

Een aandachtspunt bij extra installatie

Als calibredb ontbreekt, kun je het binnen de container installeren:

apt update && apt install -y calibre

Een handmatige installatie in een draaiende container kan echter verdwijnen wanneer de container opnieuw wordt aangemaakt of bijgewerkt. Controleer daarom eerst goed of calibredb al aanwezig is. In de beschreven opstelling was het programma al beschikbaar onder /usr/bin/calibredb.