{"id":37,"date":"2026-08-16T08:04:04","date_gmt":"2026-08-16T08:04:04","guid":{"rendered":"https:\/\/netguide.io\/homelab\/grimmory-installieren-anleitung-einsteiger\/"},"modified":"2026-08-16T08:04:04","modified_gmt":"2026-08-16T08:04:04","slug":"grimmory-installieren-anleitung-einsteiger","status":"publish","type":"post","link":"https:\/\/netguide.io\/homelab\/de\/grimmory-installieren-anleitung-einsteiger\/","title":{"rendered":"Grimmory installieren: Self-Hosting-Anleitung f\u00fcr Einsteiger"},"content":{"rendered":"<div id=\"netgu-2811275244\" class=\"netgu-before-content netgu-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-6258556257245998\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-6258556257245998\" \ndata-ad-slot=\"3494115342\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>\n<p class=\"wp-block-paragraph\"><strong>Grimmory ist eine selbstgehostete Bibliothek f\u00fcr E-Books, Comics und H\u00f6rb\u00fccher \u2013 quasi dein eigenes \u201eNetflix f\u00fcr B\u00fccher&#8221;, das komplett auf deiner Hardware l\u00e4uft: ohne Cloud, ohne Abo, mit voller Kontrolle \u00fcber deine Daten. Diese Anleitung f\u00fchrt dich Schritt f\u00fcr Schritt durch die Installation mit Docker \u2013 bewusst so erkl\u00e4rt, dass auch Einsteiger problemlos mitkommen.<\/strong><\/p>\n\n\n\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-1ffd1ad5      \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tInhaltsverzeichnis\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#was-ist-grimmory-und-was-ist-self-hosting\" class=\"uagb-toc-link__trigger\">Was ist Grimmory \u2013 und was ist \u201eSelf-Hosting&quot;?<\/a><li class=\"uagb-toc__list\"><a href=\"#was-du-\u00fcber-docker-wissen-musst\" class=\"uagb-toc-link__trigger\">Was du \u00fcber Docker wissen musst<\/a><li class=\"uagb-toc__list\"><a href=\"#voraussetzungen\" class=\"uagb-toc-link__trigger\">Voraussetzungen<\/a><li class=\"uagb-toc__list\"><a href=\"#schritt-1-projektordner-und-datei-anlegen\" class=\"uagb-toc-link__trigger\">Schritt 1: Projektordner und Datei anlegen<\/a><li class=\"uagb-toc__list\"><a href=\"#schritt-2-die-docker-composeyml-einf\u00fcgen\" class=\"uagb-toc-link__trigger\">Schritt 2: Die docker-compose.yml einf\u00fcgen<\/a><li class=\"uagb-toc__list\"><a href=\"#schritt-3-sichere-passw\u00f6rter-einsetzen\" class=\"uagb-toc-link__trigger\">Schritt 3: Sichere Passw\u00f6rter einsetzen<\/a><li class=\"uagb-toc__list\"><a href=\"#schritt-4-grimmory-starten\" class=\"uagb-toc-link__trigger\">Schritt 4: Grimmory starten<\/a><li class=\"uagb-toc__list\"><a href=\"#schritt-5-erste-anmeldung\" class=\"uagb-toc-link__trigger\">Schritt 5: Erste Anmeldung<\/a><li class=\"uagb-toc__list\"><a href=\"#schritt-6-b\u00fccher-hinzuf\u00fcgen\" class=\"uagb-toc-link__trigger\">Schritt 6: B\u00fccher hinzuf\u00fcgen<\/a><li class=\"uagb-toc__list\"><a href=\"#wartung-updates-und-backups\" class=\"uagb-toc-link__trigger\">Wartung: Updates und Backups<\/a><li class=\"uagb-toc__list\"><a href=\"#h\u00e4ufige-stolperfallen\" class=\"uagb-toc-link__trigger\">H\u00e4ufige Stolperfallen<\/a><li class=\"uagb-toc__list\"><a href=\"#h\u00e4ufige-fragen-faq\" class=\"uagb-toc-link__trigger\">H\u00e4ufige Fragen (FAQ)<\/a><ul class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#brauche-ich-einen-leistungsstarken-server\" class=\"uagb-toc-link__trigger\">Brauche ich einen leistungsstarken Server?<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#kostet-grimmory-etwas\" class=\"uagb-toc-link__trigger\">Kostet Grimmory etwas?<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#kann-ich-von-unterwegs-zugreifen\" class=\"uagb-toc-link__trigger\">Kann ich von unterwegs zugreifen?<\/a><li class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#ich-nutze-schon-booklore-muss-ich-neu-anfangen\" class=\"uagb-toc-link__trigger\">Ich nutze schon BookLore \u2013 muss ich neu anfangen?<\/a><\/ul><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<h3 class=\"wp-block-heading\">Was ist Grimmory \u2013 und was ist \u201eSelf-Hosting&#8221;?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u201eSelf-Hosting&#8221; bedeutet, dass du eine Software selbst auf deinem eigenen Ger\u00e4t betreibst, statt einen fremden Online-Dienst zu nutzen. Deine B\u00fccher 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\u00e4ten mit. Bedient wird alles bequem \u00fcber eine Weboberfl\u00e4che im Browser.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was du \u00fcber Docker wissen musst<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Grimmory wird mit <strong>Docker<\/strong> betrieben. Docker verpackt eine Anwendung samt allem, was sie braucht, in einen sogenannten <em>Container<\/em> \u2013 so l\u00e4uft sie \u00fcberall gleich, ohne umst\u00e4ndliche Installation. Mit <strong>Docker Compose<\/strong> beschreibst du mehrere Container in einer einzigen Textdatei (<code>docker-compose.yml<\/code>) und startest sie gemeinsam. Grimmory besteht aus zwei Containern: der App selbst und einer <em>MariaDB<\/em>-Datenbank, in der die Bibliothek gespeichert wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Voraussetzungen<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ein Ger\u00e4t, das dauerhaft laufen kann \u2013 ein Mini-PC, ein NAS, ein Raspberry Pi oder ein Server.<\/li>\n\n\n\n<li>Darauf installiertes <strong>Docker<\/strong> und <strong>Docker Compose<\/strong>.<\/li>\n\n\n\n<li>Zugriff auf das Ger\u00e4t (direkt oder per SSH).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ob Docker bereit ist, pr\u00fcfst du mit zwei kurzen Befehlen \u2013 beide sollten eine Versionsnummer ausgeben:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>docker --version\ndocker compose version<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #79B8FF\"> --version<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> compose<\/span><span style=\"color: #9ECBFF\"> version<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 1: Projektordner und Datei anlegen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lege zun\u00e4chst einen Ordner f\u00fcr Grimmory an und \u00f6ffne darin eine neue <code>docker-compose.yml<\/code>:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Projektordner anlegen und hineinwechseln\nmkdir -p \/srv\/docker\/stacks\/grimmory\ncd \/srv\/docker\/stacks\/grimmory\n\n# docker-compose.yml mit einem Editor erstellen\nnano docker-compose.yml<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Projektordner anlegen und hineinwechseln<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">mkdir<\/span><span style=\"color: #79B8FF\"> -p<\/span><span style=\"color: #9ECBFF\"> \/srv\/docker\/stacks\/grimmory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #79B8FF\">cd<\/span><span style=\"color: #9ECBFF\"> \/srv\/docker\/stacks\/grimmory<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># docker-compose.yml mit einem Editor erstellen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">nano<\/span><span style=\"color: #9ECBFF\"> docker-compose.yml<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 2: Die docker-compose.yml einf\u00fcgen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Kopiere die folgende Konfiguration in den Editor. Sie definiert beide Container und legt fest, welche Ordner und Passw\u00f6rter verwendet werden:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>services:\n  grimmory:\n    image: ghcr.io\/grimmory-tools\/grimmory:latest\n    container_name: grimmory\n    ports:\n      - \"6060:6060\"\n    environment:\n      USER_ID: 1000\n      GROUP_ID: 1000\n      TZ: Europe\/Berlin\n      DATABASE_URL: jdbc:mariadb:\/\/mariadb:3306\/grimmory\n      DATABASE_USERNAME: grimmory\n      DATABASE_PASSWORD: DEIN_DB_PASSWORT\n      DISK_TYPE: LOCAL\n      SWAGGER_ENABLED: \"false\"\n      FORCE_DISABLE_OIDC: \"false\"\n    volumes:\n      - .\/data:\/app\/data       # interne App-Daten (Cover, Einstellungen)\n      - .\/books:\/books         # deine Buch-Bibliothek\n      - .\/bookdrop:\/bookdrop   # Einwurf-Ordner fuer automatischen Import\n    depends_on:\n      mariadb:\n        condition: service_healthy\n    restart: unless-stopped\n\n  mariadb:\n    image: lscr.io\/linuxserver\/mariadb:11.4.8\n    container_name: grimmory-mariadb\n    environment:\n      PUID: 1000\n      PGID: 1000\n      TZ: Europe\/Berlin\n      MYSQL_ROOT_PASSWORD: DEIN_ROOT_PASSWORT\n      MYSQL_DATABASE: grimmory\n      MYSQL_USER: grimmory\n      MYSQL_PASSWORD: DEIN_DB_PASSWORT\n    volumes:\n      - .\/config:\/config       # hier speichert MariaDB die Datenbank\n    healthcheck:\n      test: [\"CMD\", \"mariadb-admin\", \"ping\", \"-h\", \"localhost\"]\n      interval: 5s\n      timeout: 5s\n      retries: 10\n    restart: unless-stopped<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #85E89D\">services<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">  grimmory<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    image<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">ghcr.io\/grimmory-tools\/grimmory:latest<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    container_name<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">grimmory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    ports<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      - <\/span><span style=\"color: #9ECBFF\">\"6060:6060\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    environment<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      USER_ID<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">1000<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      GROUP_ID<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">1000<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      TZ<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">Europe\/Berlin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      DATABASE_URL<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">jdbc:mariadb:\/\/mariadb:3306\/grimmory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      DATABASE_USERNAME<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">grimmory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      DATABASE_PASSWORD<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">DEIN_DB_PASSWORT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      DISK_TYPE<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">LOCAL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      SWAGGER_ENABLED<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">\"false\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      FORCE_DISABLE_OIDC<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">\"false\"<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    volumes<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      - <\/span><span style=\"color: #9ECBFF\">.\/data:\/app\/data<\/span><span style=\"color: #6A737D\">       # interne App-Daten (Cover, Einstellungen)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      - <\/span><span style=\"color: #9ECBFF\">.\/books:\/books<\/span><span style=\"color: #6A737D\">         # deine Buch-Bibliothek<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      - <\/span><span style=\"color: #9ECBFF\">.\/bookdrop:\/bookdrop<\/span><span style=\"color: #6A737D\">   # Einwurf-Ordner fuer automatischen Import<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    depends_on<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      mariadb<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">        condition<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">service_healthy<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    restart<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">unless-stopped<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">  mariadb<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    image<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">lscr.io\/linuxserver\/mariadb:11.4.8<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    container_name<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">grimmory-mariadb<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    environment<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      PUID<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">1000<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      PGID<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">1000<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      TZ<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">Europe\/Berlin<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      MYSQL_ROOT_PASSWORD<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">DEIN_ROOT_PASSWORT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      MYSQL_DATABASE<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">grimmory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      MYSQL_USER<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">grimmory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      MYSQL_PASSWORD<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">DEIN_DB_PASSWORT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    volumes<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">      - <\/span><span style=\"color: #9ECBFF\">.\/config:\/config<\/span><span style=\"color: #6A737D\">       # hier speichert MariaDB die Datenbank<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    healthcheck<\/span><span style=\"color: #E1E4E8\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      test<\/span><span style=\"color: #E1E4E8\">: [<\/span><span style=\"color: #9ECBFF\">\"CMD\"<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #9ECBFF\">\"mariadb-admin\"<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #9ECBFF\">\"ping\"<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #9ECBFF\">\"-h\"<\/span><span style=\"color: #E1E4E8\">, <\/span><span style=\"color: #9ECBFF\">\"localhost\"<\/span><span style=\"color: #E1E4E8\">]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      interval<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">5s<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      timeout<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">5s<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">      retries<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #79B8FF\">10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #85E89D\">    restart<\/span><span style=\"color: #E1E4E8\">: <\/span><span style=\"color: #9ECBFF\">unless-stopped<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Speichere die Datei anschlie\u00dfend ab (im Editor <code>nano<\/code> mit <code>Strg+O<\/code>, Enter, dann <code>Strg+X<\/code>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 3: Sichere Passw\u00f6rter einsetzen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ersetze vor dem Start die beiden Platzhalter durch eigene, sichere Passw\u00f6rter:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>DEIN_DB_PASSWORT<\/code> \u2013 das Passwort der Datenbank. Es muss an <strong>allen drei Stellen identisch<\/strong> sein (einmal beim App-Container, zweimal beim Datenbank-Container).<\/li>\n\n\n\n<li><code>DEIN_ROOT_PASSWORT<\/code> \u2013 das Administrator-Passwort der Datenbank. W\u00e4hle ein anderes, ebenfalls sicheres Passwort.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Verwende am besten lange, zuf\u00e4llige Passw\u00f6rter ohne Sonderzeichen wie <code>$<\/code>, die in Konfigurationsdateien Probleme machen k\u00f6nnen. Passe au\u00dferdem <code>Europe\/Berlin<\/code> an, falls du in einer anderen Zeitzone lebst.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 4: Grimmory starten<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Jetzt startest du beide Container. Beim ersten Mal dauert es einen Moment, weil die Datenbank eingerichtet und Grimmory seine Struktur anlegt:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Container im Hintergrund starten\ndocker compose up -d\n\n# Start live mitverfolgen (mit Strg+C wieder verlassen)\ndocker compose logs -f grimmory<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Container im Hintergrund starten<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> compose<\/span><span style=\"color: #9ECBFF\"> up<\/span><span style=\"color: #79B8FF\"> -d<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Start live mitverfolgen (mit Strg+C wieder verlassen)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> compose<\/span><span style=\"color: #9ECBFF\"> logs<\/span><span style=\"color: #79B8FF\"> -f<\/span><span style=\"color: #9ECBFF\"> grimmory<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Im Log siehst du, wie zuerst die Datenbank \u201ehealthy&#8221; meldet und danach Grimmory hochf\u00e4hrt. Sobald der Webserver auf Port 6060 l\u00e4uft, ist alles bereit.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 5: Erste Anmeldung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u00d6ffne im Browser <code>http:\/\/&lt;SERVER-IP&gt;:6060<\/code> \u2013 ersetze <code>&lt;SERVER-IP&gt;<\/code> durch die IP-Adresse deines Ger\u00e4ts (l\u00e4uft Grimmory auf demselben Rechner, funktioniert auch <code>http:\/\/localhost:6060<\/code>). Beim ersten Aufruf legst du dein Administrator-Konto an. Damit ist Grimmory einsatzbereit.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 6: B\u00fccher hinzuf\u00fcgen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr deine Inhalte gibt es zwei Ordner, die du in Schritt 2 eingebunden hast:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Ordner<\/th><th>Zweck<\/th><\/tr><\/thead><tbody><tr><td>books<\/td><td>Deine eigentliche Bibliothek \u2013 hier liegt deine Sammlung.<\/td><\/tr><tr><td>bookdrop<\/td><td>Einwurf-Ordner: Dateien hier hineinlegen, Grimmory importiert sie automatisch.<\/td><\/tr><tr><td>data<\/td><td>Interne App-Daten wie Cover und Einstellungen (nicht anfassen).<\/td><\/tr><tr><td>config<\/td><td>Die Datenbankdateien von MariaDB (nicht anfassen).<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Kopiere einfach ein paar E-Books (z. B. EPUB- oder PDF-Dateien) in den <code>bookdrop<\/code>-Ordner und beobachte, wie sie in der Weboberfl\u00e4che auftauchen. Grimmory holt zu den meisten B\u00fcchern automatisch Titel, Cover und Metadaten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wartung: Updates und Backups<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Update auf die neueste Version ist mit zwei Befehlen erledigt:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Auf die neueste Version aktualisieren\ndocker compose pull\ndocker compose up -d\n\n# Dienst stoppen bzw. wieder starten\ndocker compose down\ndocker compose up -d<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #6A737D\"># Auf die neueste Version aktualisieren<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> compose<\/span><span style=\"color: #9ECBFF\"> pull<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> compose<\/span><span style=\"color: #9ECBFF\"> up<\/span><span style=\"color: #79B8FF\"> -d<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #6A737D\"># Dienst stoppen bzw. wieder starten<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> compose<\/span><span style=\"color: #9ECBFF\"> down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">docker<\/span><span style=\"color: #9ECBFF\"> compose<\/span><span style=\"color: #9ECBFF\"> up<\/span><span style=\"color: #79B8FF\"> -d<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr ein Backup sicherst du regelm\u00e4\u00dfig die Ordner <code>data<\/code>, <code>config<\/code> und <code>books<\/code> deines Projektverzeichnisses \u2013 darin steckt alles Wichtige.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">H\u00e4ufige Stolperfallen<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Port 6060 ist belegt:<\/strong> L\u00e4uft auf dem Ger\u00e4t bereits ein Dienst auf diesem Port, \u00e4ndere links in der Zeile <code>\"6060:6060\"<\/code> die erste Zahl, z. B. auf <code>\"6061:6060\"<\/code>, und rufe die Oberfl\u00e4che dann \u00fcber diesen Port auf.<\/li>\n\n\n\n<li><strong>Container startet nicht:<\/strong> Sieh dir mit <code>docker compose logs grimmory<\/code> die Fehlermeldungen an \u2013 meist ist ein falsch gesetztes Passwort die Ursache.<\/li>\n\n\n\n<li><strong>Datenbankfehler beim ersten Start:<\/strong> Gib der Datenbank kurz Zeit. Grimmory wartet dank Healthcheck normalerweise selbst, bis MariaDB bereit ist.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">H\u00e4ufige Fragen (FAQ)<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Brauche ich einen leistungsstarken Server?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Nein. Ein Raspberry Pi 4\/5, ein Mini-PC oder ein NAS mit Docker-Unterst\u00fctzung reicht f\u00fcr den Hausgebrauch v\u00f6llig aus. Grimmory ist gen\u00fcgsam.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Kostet Grimmory etwas?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Nein. Grimmory ist quelloffen und wird von dir selbst gehostet \u2013 es fallen keine Lizenz- oder Abogeb\u00fchren an, nur der Stromverbrauch deines Ger\u00e4ts.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Kann ich von unterwegs zugreifen?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Standardm\u00e4\u00dfig ist Grimmory nur im Heimnetz erreichbar. F\u00fcr den Zugriff von au\u00dfen richtest du am besten einen Reverse Proxy mit HTTPS oder ein VPN ein \u2013 aus Sicherheitsgr\u00fcnden sollte die Oberfl\u00e4che nicht ungesch\u00fctzt ins Internet gestellt werden.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Ich nutze schon BookLore \u2013 muss ich neu anfangen?<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Nein. Wenn du bereits BookLore betreibst, kannst du deine komplette Bibliothek \u00fcbernehmen. Wie das geht, zeigt unsere Anleitung <a href=\"https:\/\/netguide.io\/homelab\/de\/booklore-zu-grimmory-migrieren\/\">BookLore zu Grimmory migrieren<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Quellen: <a href=\"https:\/\/github.com\/grimmory-tools\/grimmory\" target=\"_blank\" rel=\"noopener\">Grimmory auf GitHub<\/a>, <a href=\"https:\/\/github.com\/grimmory-tools\/grimmory\/blob\/develop\/deploy\/compose\/docker-compose.yml\" target=\"_blank\" rel=\"noopener\">offizielle docker-compose.yml<\/a>.<\/em><\/p>\n<div id=\"netgu-1945485463\" class=\"netgu-after-content netgu-entity-placement\"><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-6258556257245998\" crossorigin=\"anonymous\"><\/script><ins class=\"adsbygoogle\" style=\"display:block;\" data-ad-client=\"ca-pub-6258556257245998\" \ndata-ad-slot=\"4559785002\" \ndata-ad-format=\"auto\"><\/ins>\n<script> \n(adsbygoogle = window.adsbygoogle || []).push({}); \n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Schritt-f\u00fcr-Schritt zur eigenen Buch-Bibliothek: Grimmory mit Docker installieren \u2013 verst\u00e4ndlich erkl\u00e4rt f\u00fcr Einsteiger, inklusive kompletter Compose-Datei.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[13],"tags":[],"class_list":["post-37","post","type-post","status-publish","format-standard","hentry","category-docker"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Tobias Pries","author_link":"https:\/\/netguide.io\/homelab\/author\/tobias-pries\/"},"uagb_comment_info":0,"uagb_excerpt":"Schritt-f\u00fcr-Schritt zur eigenen Buch-Bibliothek: Grimmory mit Docker installieren \u2013 verst\u00e4ndlich erkl\u00e4rt f\u00fcr Einsteiger, inklusive kompletter Compose-Datei.","brizy_media":[],"_links":{"self":[{"href":"https:\/\/netguide.io\/homelab\/wp-json\/wp\/v2\/posts\/37","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/netguide.io\/homelab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/netguide.io\/homelab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/netguide.io\/homelab\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/netguide.io\/homelab\/wp-json\/wp\/v2\/comments?post=37"}],"version-history":[{"count":0,"href":"https:\/\/netguide.io\/homelab\/wp-json\/wp\/v2\/posts\/37\/revisions"}],"wp:attachment":[{"href":"https:\/\/netguide.io\/homelab\/wp-json\/wp\/v2\/media?parent=37"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/netguide.io\/homelab\/wp-json\/wp\/v2\/categories?post=37"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/netguide.io\/homelab\/wp-json\/wp\/v2\/tags?post=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}