Hörbücher hören wie bei Audible - nur frei

  Tim   Lesezeit: 8 Minuten  🗪 3 Kommentare Auf Mastodon ansehen

Freie Nutzung von Hörbüchern muss nicht umständlich sein. Mit audiobookshelf und Libation kann man sich eine Umgebung schaffen die ähnlich wie Audible funktioniert.

hörbücher hören wie bei audible - nur frei

Ich hatte schon immer gerne Hörbücher gehört. Doch seit ich 2020 zu Linux gewechselt bin und Datenschutz auch immer ernster nahm, habe ich das Nutzen von proprietären Apps und Diensten weitgehend eingeschränkt. Mit dem Proxmox Server, der im Keller vor sich hin rechnet, habe ich Stück für Stück meine Freiheit zurück gehostet. So mittlerweile auch audiobookshelf in Kombination mit Libation.

Was ist eigentlich audiobookshelf? Ähnlich wie Audible ist audiobookshelf ein Dienst, mit dem man Hörbücher und Podcasts per Weboberfläche oder Client verwalten und hören kann. Das Ganze ist aber selbst gehostet und Datenschutz freundlich. Dazu nutze ich Libation um meine Hörbücher vom DRM zu befreien, was Lioh bereits in einem Beitrag vorgestellt hat. Allerdings läuft Libation bei mir in einem Docker Container, um audiobookshelf automatisch mit neuen Hörbüchern aus meinem Audible Abo zu füttern.

Ich setze das ganze Projekt in einem Debian LXC Container in Proxmox mit Docker auf.
Sobald man als root eingeloggt ist, wird erst einmal das System auf den aktuellen Stand gebracht.

apt update && apt dist-upgrade -y

Um Docker zu installieren, bediene ich mich dem Script der offiziellen Docker Installationsanleitung.

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

Für das Projekt erstellt man jetzt eine Gruppe und Benutzer. Diesem weist man die Gruppen docker und sudo zu. Anschließend wechselt man in den Benutzer.

groupadd -g 1001 audiobookshelf
adduser --uid 1001 --gid 1001 audiobookshelf
usermod -aG sudo,docker audiobookshelf
su – audiobookshelf

Nun erstellt man einen Ordner für das Projekt, wechselt in diesen und erstellt die docker-compose.yml Datei:

mkdir audiobookshelf
cd audiobookshelf
nano docker-compose.yml

In die Datei fügt man Folgendes ein:

services:
  audiobookshelf:
    image: ghcr.io/advplyr/audiobookshelf:latest
    container_name: audiobookshelf
    restart: unless-stopped
    ports:
      - 13378:80
    volumes:
      - ./audiobooks:/audiobooks
      - ./podcasts:/podcasts
      - ./config:/config
      - ./metadata:/metadata
    environment:
      - TZ=Europe/Berlin

  libation:
    image: rmcrackan/libation:latest
    container_name: libation
    restart: always
    volumes:
      - ./libation:/config
      - ./audiobooks:/data

Mit der Tastenkombination STRG + O speichert man, bestätigt mit Y/J und mit STRG + X schließt man den Editor.

Den Container startet man mit folgendem Befehl und stoppt sie direkt wieder. Dies erstellt die benötigten Ordner automatisch:

docker compose up -d && docker compose down

Anschließend passt man noch die Berechtigung für Libation an.

sudo chown -R 1001:1001 audiobooks libation

Damit Libation auch euren Account nutzt, muss man sich auf dem Desktop einmal in Libation mit seinem Account angemeldet haben. Im Libation Benutzerordner (unter Linux ~/Libation/) kopiert man den Inhalt der AccountsSettings.json und fügt ihn auf dem Server in der Datei ~/audiobookshelf/libationAccountsSettings.json ein und speichert diese:

cd libation
nano AccountsSettings.json

Will man die Einstellungen von Libation anpassen, so kann man das in der Datei ~/audiobookshelf/libation/Settings.json tun. Diese muss man erst erstellen. Hier meine Settings.json als Beispiel.

{
  "Serilog": {
    "MinimumLevel": "Information",
    "WriteTo": [
      {
        "Name": "File",
        "Args": {
          "path": "/var/log/libation.log",
          "rollingInterval": "Month",
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] (at {Caller}) {Message:lj}{NewLine}{Exception} {Properties:j}"
        }
      }
    ],
    "Using": [
      "Dinah.Core",
      "Serilog.Exceptions"
    ],
    "Enrich": [
      "WithCaller",
      "WithExceptionDetails"
    ]
  },
  "Books": "/data",
  "InProgress": "/tmp",
  "FolderTemplate": " []",
  "FileTemplate": " []",
  "ChapterFileTemplate": " [] -  - ",
  "ChapterTitleTemplate": " - : ",
  "ShowImportedStats": false,
  "ImportEpisodes": false,
  "DownloadEpisodes": false,
  "AllowLibationFixup": true,
  "DecryptToLossy": false,
  "SplitFilesByChapter": false,
  "BadBook": "Retry",
  "CreateCueSheet": true,
  "RetainAaxFile": false,
  "StripUnabridged": true,
  "StripAudibleBrandAudio": true,
  "LameTargetBitrate": false,
  "LameDownsampleMono": true,
  "LameBitrate": 64,
  "LameConstantBitrate": false,
  "LameMatchSourceBR": true,
  "LameVBRQuality": 0,
  "AutoScan": false,
  "DownloadCoverArt": true,
  "AutoDownloadEpisodes": false,
  "SavePodcastsToParentFolder": false,
  "ReplacementCharacters": {
    "Replacement": [
      {
        "CharacterToReplace": "\u0000",
        "ReplacementString": "_",
        "Description": "All other invalid characters"
      },
      {
        "CharacterToReplace": "/",
        "ReplacementString": "_",
        "Description": "Forward Slash (Filename Only)"
      },
      {
        "CharacterToReplace": "\\",
        "ReplacementString": "_",
        "Description": "Back Slash (Filename Only)"
      },
      {
        "CharacterToReplace": "\"",
        "ReplacementString": "'",
        "Description": "Open Quote"
      },
      {
        "CharacterToReplace": "\"",
        "ReplacementString": "'",
        "Description": "Close Quote"
      },
      {
        "CharacterToReplace": "\"",
        "ReplacementString": "'",
        "Description": "Other Quote"
      },
      {
        "CharacterToReplace": "",
        "ReplacementString": "}",
        "Description": "Close Angle Bracket"
      },
      {
        "CharacterToReplace": ":",
        "ReplacementString": "-",
        "Description": "Colon"
      },
      {
        "CharacterToReplace": "‘",
        "ReplacementString": "'",
        "Description": "opening single quote"
      },
      {
        "CharacterToReplace": "’",
        "ReplacementString": "'",
        "Description": "closing single quote"
      }
    ]
  },
  "MergeOpeningAndEndCredits": true,
  "BetaOptIn": false
}

Jetzt kann man die Docker Container wieder starten. Ohne Settings.json nutzt Libation die Standardeinstellungen.

cd ~/audiobookshelf
docker compose up -d

Unter der IP des Servers mit dem Port 13378 kann man nun die Weboberfläche von Audiobookshelf erreichen. Hier erstellt man jetzt einen Benutzer und kann die Bibliothek einrichten. Freie Nutzung von Hörbüchern muss nicht umständlich sein. Mit audiobookshelf und Libation kann man sich eine Umgebung schaffen, die ähnlich, wie Audible funktioniert.

Beim Metadatenanbieter wähle ich natürlich Audible.de und beim Verzeichnis wählt man dann /Audiobooks aus. Die restlichen Einstellungen sind Geschmackssache, aber mir reicht das so schon.

Jetzt hat man ein funktionierendes audiobookshelf mit automatisiertem Libation welches automatisch neue Hörbücher erkennt, downloadet und DRM entfernt. Mit meinem Android-Smartphone lade ich dann die Audiobücher bequem mit der App runter, um sie unterwegs offline zu hören.
Es gibt allerdings noch andere Apps und Clients für verschiedenste Betriebssysteme.

Fazit

Anfangs war ich skeptisch, dass sich die Benutzung so glatt und problemlos anfühlt wie bei Audible selbst. Dazu kann ich nur sagen, ich lag absolut falsch. Einmal eingerichtet läuft alles so, wie man sich das vorstellt, nur halt ohne die Datenspionage, Dark Patterns etc. Einfach frei.

Ich nutze audiobookshelf nun schon mehrere Monate und möchte es nicht mehr missen. Auf dem Smartphone nutze ich die offizielle Android-App und bin zufrieden.

Quellen:

Screenshot von der Webseite https://www.audiobookshelf.org/
Alles andere aus eigener Feder oder eigene Screenshots.

Tags

Audible, Audiobooks, Server, Hörbücher, DRM, DeDRM

Tealk
Geschrieben von Tealk am 29. Januar 2025 um 11:18

Warum Docker? Die bieten sogar .deb: https://www.audiobookshelf.org/docs#linux-install-deb

Tim
Geschrieben von Tim am 29. Januar 2025 um 12:24

Das stimmt, mit .deb geht es auch.

Ich bevorzuge nur lieber Docker, da es eine isolierte Umgebung bietet und alle passenden Bibliotheken und Vorraussetzungen im Container mitbringt, sodass es unter verschiedentsten Systemen reproduziert werden kann.

BuffaloBill
Geschrieben von BuffaloBill am 30. Januar 2025 um 08:54

Ich mache das ganz ähnlich, nur Libation kannte ich noch nicht, ich hab das immer manuell gemacht.

Da ist nur noch ein Problem.... .... Mein Geld muss ich immer noch Amazon geben :S einem Konzern der den ganzen Murks erst gebaut hat. Ja es gibt auch Thalja und zb für Ebooks nutz ich auch die Tolino Ecke statt Amazone - aber bei Hörbüchern ist die Auswahl bei Thalja einfach nicht ausreichend. Viele Title sind audible exkusive :S