Build your own Audible like service and stream books online

Posted on May 28, 2020 at 17:15 by GreenFrog

Build your own audiobook streaming service

Audiobook icon Audiobook streaming service on QNAP NAS

This Audible like service uses only a free software. It is all based on a Booksonic server, which is running as a Docker container on my good, old QNAP NAS. It is possible to deploy Booksonic on a Raspberry Pi or on any other hardware, but as I already have a platform for it, which is also a storage for all my audiobooks, it has more sense keeping all together in one place.

Overall solution works well, but it also has its shortcomings, nevertheless this is enough for my needs.

I can access all my audiobooks from anywhere, anytime (train, boat, bus etc.). Of course, phone needs an Internet access in order for me to listen books online, but if you plan a trip where Internet access is a problem, you could pre-download chosen audiobook at home and then suspend streaming online on the phone.

Beauty of having all your books online shine especially when you find out that book you started is not good for particular occasion or a mood you are in, you can simply swap it for a different one instantly while having entire library under your fingertips.

You might ask yourself, why you would need all your books, especially the ones you already read available online - well, I found out that sometimes I listen some of them more than once. For me it is not a matter of quantity but quality of the book I keep in my library.

What we will need in order to pull this off:

This guide is specific for QNAP users - [QNAP TS-451 and Container Station 2]. It also can be done using any other server that can run Docker containers.

QNAP - Container Station & Booksonic

  • Using QNAP QTS open Container Station app and search for "booksonic" image.
  • Your QNAP should find a Docker image as shown below.
  • Click Create button underneath selected Docker image.

Booksonic on QNAP find Docker image

  • Give server a name i.e. "BookSonicServer"
  • Set CPU and Memory limits.
  • Go to Advanced Settings at the bottom.

Booksonic on QNAP configure CPU and memory

  • Leave Environment section as is.
  • Under Network set Container Hostname "BookSonicServer", Network Mode "Bridge", set static IP of your choice.

Booksonic on QNAP configure CPU and memory

  • Under Device select option "Run containers in privileged mode" - container will fail to start if not selected.

Booksonic on QNAP configure CPU and memory

Under "Shared Folders" menu choose where to store configuration, audiobooks and podcasts files.

I store all on NAS so, I am choosing mounting points from host itself "Volume from host". Select "Add" and create three mounting points where you will keep config, podcasts and audiobooks. Make sure to create these folders first so you can select them at this point.

Booksonic on QNAP configure CPU and memory

Select "Create" at the bottom. It will display a summary page for you to brush over and when you are happy with all the settings click "OK"

At this point you should see background task indicating container deployment, when done (a minute or two) you should be able to start container.

Booksonic Server

When your Booksonic container is up and running, we should copy audiobook files in to the folder selected earlier. In my case I am coping audiobooks in to /share/Container/DockerPaths/BookSonic/books/
Each audiobook folder has the same structure /Author/BookTitle/AudioFiles.mp3

Booksonic server can be access and managed using browser http://IP:4040
In my case it will be:

Default user/pass is admin/admin
The same address we will use while accessing server from the phone app - Subsonic or Substreamer.

Subsonic App:

There is more apps that will utilize Subsonic/Booksonic server, but I only tested two of them

Full list of apps that you could try is here

I am quite happy with Subsonic app - is basic, little old looking but it works for me.

After installing an app on your phone you should add your server details, so it can connect with it.
Try using local network first - connect your phone to home WiFi so it is in the same network as your server and point the app to IP address you set on the server followed by the port 4040.
If your phone can communicate with the server in local network then you should forward port 4040 through your home router so you can access server from anywhere.

Subsonic App main screen

Help me make LMDS better

With your support anything is possible