Grimmory installieren: Self-Hosting-Anleitung für Einsteiger

Grimmory ist eine selbstgehostete Bibliothek für E-Books, Comics und Hörbücher – quasi dein eigenes „Netflix für Bücher“, das komplett auf deiner Hardware läuft: ohne Cloud, ohne Abo, mit voller Kontrolle über deine Daten. Diese Anleitung führt dich Schritt für Schritt durch die Installation mit Docker – bewusst so erklärt, dass auch Einsteiger problemlos mitkommen.

Was ist Grimmory – und was ist „Self-Hosting“?

„Self-Hosting“ bedeutet, dass du eine Software selbst auf deinem eigenen Gerät betreibst, statt einen fremden Online-Dienst zu nutzen. Deine Bücher und Metadaten bleiben damit bei dir. Grimmory ist der von der Community gepflegte Nachfolger von BookLore und bringt Funktionen wie Metadaten-Abgleich, einen eingebauten Reader, OPDS sowie die Synchronisierung mit Kobo- und KOReader-Geräten mit. Bedient wird alles bequem über eine Weboberfläche im Browser.

Was du über Docker wissen musst

Grimmory wird mit Docker betrieben. Docker verpackt eine Anwendung samt allem, was sie braucht, in einen sogenannten Container – so läuft sie überall gleich, ohne umständliche Installation. Mit Docker Compose beschreibst du mehrere Container in einer einzigen Textdatei (docker-compose.yml) und startest sie gemeinsam. Grimmory besteht aus zwei Containern: der App selbst und einer MariaDB-Datenbank, in der die Bibliothek gespeichert wird.

Voraussetzungen

  • Ein Gerät, das dauerhaft laufen kann – ein Mini-PC, ein NAS, ein Raspberry Pi oder ein Server.
  • Darauf installiertes Docker und Docker Compose.
  • Zugriff auf das Gerät (direkt oder per SSH).

Ob Docker bereit ist, prüfst du mit zwei kurzen Befehlen – beide sollten eine Versionsnummer ausgeben:

docker --version
docker compose version

Schritt 1: Projektordner und Datei anlegen

Lege zunächst einen Ordner für Grimmory an und öffne darin eine neue docker-compose.yml:

# Projektordner anlegen und hineinwechseln
mkdir -p /srv/docker/stacks/grimmory
cd /srv/docker/stacks/grimmory

# docker-compose.yml mit einem Editor erstellen
nano docker-compose.yml

Schritt 2: Die docker-compose.yml einfügen

Kopiere die folgende Konfiguration in den Editor. Sie definiert beide Container und legt fest, welche Ordner und Passwörter verwendet werden:

services:
  grimmory:
    image: ghcr.io/grimmory-tools/grimmory:latest
    container_name: grimmory
    ports:
      - "6060:6060"
    environment:
      USER_ID: 1000
      GROUP_ID: 1000
      TZ: Europe/Berlin
      DATABASE_URL: jdbc:mariadb://mariadb:3306/grimmory
      DATABASE_USERNAME: grimmory
      DATABASE_PASSWORD: DEIN_DB_PASSWORT
      DISK_TYPE: LOCAL
      SWAGGER_ENABLED: "false"
      FORCE_DISABLE_OIDC: "false"
    volumes:
      - ./data:/app/data       # interne App-Daten (Cover, Einstellungen)
      - ./books:/books         # deine Buch-Bibliothek
      - ./bookdrop:/bookdrop   # Einwurf-Ordner fuer automatischen Import
    depends_on:
      mariadb:
        condition: service_healthy
    restart: unless-stopped

  mariadb:
    image: lscr.io/linuxserver/mariadb:11.4.8
    container_name: grimmory-mariadb
    environment:
      PUID: 1000
      PGID: 1000
      TZ: Europe/Berlin
      MYSQL_ROOT_PASSWORD: DEIN_ROOT_PASSWORT
      MYSQL_DATABASE: grimmory
      MYSQL_USER: grimmory
      MYSQL_PASSWORD: DEIN_DB_PASSWORT
    volumes:
      - ./config:/config       # hier speichert MariaDB die Datenbank
    healthcheck:
      test: ["CMD", "mariadb-admin", "ping", "-h", "localhost"]
      interval: 5s
      timeout: 5s
      retries: 10
    restart: unless-stopped

Speichere die Datei anschließend ab (im Editor nano mit Strg+O, Enter, dann Strg+X).

Schritt 3: Sichere Passwörter einsetzen

Ersetze vor dem Start die beiden Platzhalter durch eigene, sichere Passwörter:

  • DEIN_DB_PASSWORT – das Passwort der Datenbank. Es muss an allen drei Stellen identisch sein (einmal beim App-Container, zweimal beim Datenbank-Container).
  • DEIN_ROOT_PASSWORT – das Administrator-Passwort der Datenbank. Wähle ein anderes, ebenfalls sicheres Passwort.

Verwende am besten lange, zufällige Passwörter ohne Sonderzeichen wie $, die in Konfigurationsdateien Probleme machen können. Passe außerdem Europe/Berlin an, falls du in einer anderen Zeitzone lebst.

Schritt 4: Grimmory starten

Jetzt startest du beide Container. Beim ersten Mal dauert es einen Moment, weil die Datenbank eingerichtet und Grimmory seine Struktur anlegt:

# Container im Hintergrund starten
docker compose up -d

# Start live mitverfolgen (mit Strg+C wieder verlassen)
docker compose logs -f grimmory

Im Log siehst du, wie zuerst die Datenbank „healthy“ meldet und danach Grimmory hochfährt. Sobald der Webserver auf Port 6060 läuft, ist alles bereit.

Schritt 5: Erste Anmeldung

Öffne im Browser http://<SERVER-IP>:6060 – ersetze <SERVER-IP> durch die IP-Adresse deines Geräts (läuft Grimmory auf demselben Rechner, funktioniert auch http://localhost:6060). Beim ersten Aufruf legst du dein Administrator-Konto an. Damit ist Grimmory einsatzbereit.

Schritt 6: Bücher hinzufügen

Für deine Inhalte gibt es zwei Ordner, die du in Schritt 2 eingebunden hast:

OrdnerZweck
booksDeine eigentliche Bibliothek – hier liegt deine Sammlung.
bookdropEinwurf-Ordner: Dateien hier hineinlegen, Grimmory importiert sie automatisch.
dataInterne App-Daten wie Cover und Einstellungen (nicht anfassen).
configDie Datenbankdateien von MariaDB (nicht anfassen).

Kopiere einfach ein paar E-Books (z. B. EPUB- oder PDF-Dateien) in den bookdrop-Ordner und beobachte, wie sie in der Weboberfläche auftauchen. Grimmory holt zu den meisten Büchern automatisch Titel, Cover und Metadaten.

Wartung: Updates und Backups

Ein Update auf die neueste Version ist mit zwei Befehlen erledigt:

# Auf die neueste Version aktualisieren
docker compose pull
docker compose up -d

# Dienst stoppen bzw. wieder starten
docker compose down
docker compose up -d

Für ein Backup sicherst du regelmäßig die Ordner data, config und books deines Projektverzeichnisses – darin steckt alles Wichtige.

Häufige Stolperfallen

  • Port 6060 ist belegt: Läuft auf dem Gerät bereits ein Dienst auf diesem Port, ändere links in der Zeile "6060:6060" die erste Zahl, z. B. auf "6061:6060", und rufe die Oberfläche dann über diesen Port auf.
  • Container startet nicht: Sieh dir mit docker compose logs grimmory die Fehlermeldungen an – meist ist ein falsch gesetztes Passwort die Ursache.
  • Datenbankfehler beim ersten Start: Gib der Datenbank kurz Zeit. Grimmory wartet dank Healthcheck normalerweise selbst, bis MariaDB bereit ist.

Häufige Fragen (FAQ)

Brauche ich einen leistungsstarken Server?

Nein. Ein Raspberry Pi 4/5, ein Mini-PC oder ein NAS mit Docker-Unterstützung reicht für den Hausgebrauch völlig aus. Grimmory ist genügsam.

Kostet Grimmory etwas?

Nein. Grimmory ist quelloffen und wird von dir selbst gehostet – es fallen keine Lizenz- oder Abogebühren an, nur der Stromverbrauch deines Geräts.

Kann ich von unterwegs zugreifen?

Standardmäßig ist Grimmory nur im Heimnetz erreichbar. Für den Zugriff von außen richtest du am besten einen Reverse Proxy mit HTTPS oder ein VPN ein – aus Sicherheitsgründen sollte die Oberfläche nicht ungeschützt ins Internet gestellt werden.

Ich nutze schon BookLore – muss ich neu anfangen?

Nein. Wenn du bereits BookLore betreibst, kannst du deine komplette Bibliothek übernehmen. Wie das geht, zeigt unsere Anleitung BookLore zu Grimmory migrieren.


Quellen: Grimmory auf GitHub, offizielle docker-compose.yml.

Nach oben scrollen