Self-host your own audio library with Audiobookshelf
Reading is one of life’s great pleasures - along with cooking, fiddling with Raspberry Pis and exploring deep, dark forests, the birds of the Crow’s nest can often be found with their noses (beaks) deep in works of literary fiction.
From the ages of three to 20, the Crow would spend his weekends in libraries, second-hand bookshops and market stalls.
The Crow could be found in many such empororia circa 1994 | Credit: steve_w CC BY 2.0
With internet connectivity came DRM-free .lit files, which, along with my HP Jornada 548 PDA, synergised to create the perfect platform for acquiring and consuming the words of others. I use the word consuming deliberately. An unlimited supply of literature saw me shovelling down novels on my commute to work, at lunch, in the evening, and while idling at the traffic lights. A bottomless book supply is addictive and can ruin your life if you let it.
I bought my first Android device in 2013, and downloaded Aldiko, before later moving on to Moon Reader Pro. My method of sourcing reading material stayed the same, it was about this time that the potential of Google’s text to speech engine became clear to me. I could read while I was doing other things. I didn’t have to grab a few paragraphs at the traffic lights - I could read while I was driving. I could read while I was doing the dishes. Holy shit. It was amazing.
From Text-to-speech to audiobooks
Towards the arse-end of 2018, I realised I didn’t like Google any more. I wanted it out of the company out of my life and out of my business. I gave away my Android device, bought a OnePlus One, and flashed Ubuntu Touch. As a privacy friendly mobile operating system, it’s great - although non-essential trimmings are somewhat lacking. Sure, there was an Sturm Reader, which would display epubs, and save my place from one session to the next, but there was no text -to-speech available. How would I read when I was driving, cooking, cleaning, or washing my hair?
I was also getting into self-hosting - the practice of deploying one’s own web-facing software on one’s own hardware, to replace or augment services provided by Google, Facebook, or any of the other tech giants. You should try it, it’s awesome. As I couldn’t have books read to me by my mobile device, I had them read to me by someone else on my mobile device. For the first time since the heady days of Hedgehog’s talking tree, the human voice inside my head was not mine.
Amazon’s Audible was out of the question, but again, there are plenty of sources of DRM free audiobooks out there at a reasonable cost.
Listen to audiobooks with Jellyfin.
Jellyfin is a fork of Emby - a self-hosted media server. Unlike Emby, Jellyfin doesn’t nag you to pay for some premium version of the software, and in addition to movies, TV shows, and music, it also supports ebooks and audiobooks.
Point Jellyfin in the direction of your audiobook directory, and it will (in most cases) automatically fetch metadata and even pull cover images from the internet.
Jellyfin is a work in progress, and if I’m honest, using it to listen to audiobooks isn’t the greatest experience. Jellyfin isn’t the greatest at dealing with individual chapters, and if you choose to upload a 14 hour single MP3 or M4b file, it can be a nightmare to find your place again when, of its own accord, Jellyfin decides that you’ve finished the book even though you haven’t. The Android app disconnects frequently meaning that I have to use the web version, which was… fine. Regardless, I used Jellyfin as my audiobook server for around a year - until something better came along.
Audiobookshelf does one thing - and does it well
I didn’t realise quite how frustrating the Jellyfin audiobook experience was until I found something better. That something is Audiobookshelf.
Audiobookshelf is super easy to set up with docker and docker-compose, meaning that I was up and running in literal minutes - it’s nothing difficult and nothing to worry about. Just set a config directory and point it to your gigabytes of audiobooks.
Like Jellyfin, it will fetch metadata and covers, but there are some killer features which prove that Audiobookshelf is a hugely superior piece of software (at least as far as audiobooks are concerned).
First off is the app. It’s still in beta, but (almost) everything works without a hitch. Apart from setting up family members as users, I never have cause to use the web interface at all.
In the fortnight I’ve been using it, the Audiobookshelf Android app has never lost my place. Not even once. But you know what, it wouldn’t matter if it did.
On the frequent occasions I doze off while listening, I can easily find my place again as Audiobookshelf supports chapters and has not one, but TWO progress bars, meaning that you can easily find your place within a chapter or within the book as a whole. Finding your place on a two and a half inch progress bar is a whole lot easier when that bar covers a half hour stretch.
Which brings me to the next awesome Audiobookshelf feature - the sleep timer. If you’re in the habit of listening to Poirot as you slip into the land of Nod, you can set a timer so that the audiobook will automatically stop playing after a set span. These times can be anything between one and 90 minutes - or the end of the chapter.
You know how narrators have different reading styles? With some, it feels like you’re going to die of old age before they reach the end of the chapter. Audiobookshelf allows you to change the speed up to double speed. Or you can slow it down to 0.5x.
Audiobookshelf is a work in progress
The Android app is still in beta (or early access) meaning that more features are being added, and that not all features work as they should. The only major one which is bugging me right now is with offline listening.
It’s simple to download the audiobook files to your device if you anticipate being off-grid for a few days, but try and listen to them and you’re out of luck. the app crashes out. Meh. I’ll file a Github issue at some point.
All in all, it’s fab. It’s a complete audiobook solution, and the books you’ve bought are yours.
‘Audiobooks are MP3 or M4b files. surely it’s a simple matter to store them on your desktop machine and transfer them wholesale to your mobile device?’, I hear you say.
Well, sure. That’s 100% true - but with a few caveats The first is that my audiobook library runs to over 100GB. The internal storage on my S8 is 64GB. There is a clear mismatch here. On the other hand, I have approximately 3.5TB free on the Pi. 100GB won’t even make a scratch.
I could slide books onto and off my phone and carefully manage the available storage, but realistically, that’s a lot of hassle.
And then there’s the fact that reading (and yes I include audiobooks in that) is a social activity. If these were paperbacks, I would have a shared library with members of my family.
‘Ooh, I’ve just read the new Neal Stephenson and it was a banger, want to borrow it?’ Believe it or not, this is disallowed by the terms and conditions on the flyleaf of every physical book I own, so I don’t feel too bad about sharing my legitimately purchased audiobooks with friends and fam either. It’s far easier to give them a login and password than actually send them a 200MB file twice every week.
This site is hosted on a Raspberry Pi 4B in the author's living room (behind the couch). If you fancy building a website, but would prefer not to have hardware cluttering up your house, you can get reasonably priced hosting from BlueHost
On the other hand, if you're worried about being followed online, consider using PureVPN to cover your tracks.
These are affiliate links. Obviously. If you're feeling generous, you can buy me a coffee.