Easy Self Host Icon

Self-Host Your Audiobooks & Podcasts with Audiobookshelf

Video

Transcript

Hey everyone, welcome back to Easy Self Host!

In this video we’re diving into an app I’ve been using a lot recently: Audiobookshelf.

Think of it as your own self‑hosted Audible.

It stores your audiobooks and podcasts and streams them to any device you’ve got.

If you like actually owning the audiobooks you buy—or just hoarding great finds—Audiobookshelf keeps everything playable and searchable in one place.

What's great is it also supports podcasts with automatic downloads of new episodes.

You get a nice web app to manage and play everything

plus mobile apps so you can listen wherever you go.

Alright, let’s spin up Audiobookshelf with Docker Compose.

Here's what our configuration looks like.

First, we'll declare a docker network called "proxy-net"

this will connect our audiobookshelf service to our reverse proxy.

Then let’s create four named volumes—audiobooks, podcasts, config, and metadata—to keep everything persisted between updates.

Moving on to our main service — the audiobookshelf server.

We're using the official Docker image of audiobookshelf.

For networking, we simply connect the service to our proxy-net.

With volumes, we mount those four volumes we created

each one going to its corresponding path inside the container.

For environment variables, we can just set the TZ for timezone

this ensures our audiobookshelf server uses the correct time for schedules.

That’s all for this simple docker compose.

Now we need to update our proxy configuration.

Since I'm using Caddy, I'll add a simple rule to proxy the domain audiobook.ezsh.app to the audiobookshelf service on port 80.

Let's jump to the server command line and navigate to our docker compose directory.

From here, we just run "docker compose up -d" to launch audiobookshelf.

Finally, we need to refresh our proxy rules.

I'll do this by restarting my Caddy server, and we're good to go!

Now let's navigate to the domain we set up for audiobookshelf.

First, we need to create our initial account

and then log in with these credentials.

Once logged in, you'll notice there's no media library yet.

Let's create our first one.

We'll set this up specifically for audiobooks.

and select the /audiobooks directory as our storage location.

Now let's add some content to our server.

The first method is uploading directly through the browser.

I'll drop this m4b file here...

and see how the page automatically parses the title from the filename.

We can use this button to fetch the author information automatically.

Now let's click upload to transfer our media file.

After completion, you'll see audiobookshelf scanning the uploaded file

and there it is in our library!

Then let’s try to upload an audio book with multiple audio files.

I'll drop this entire folder containing 12 files.

Notice the book title and author weren't parsed correctly.

No problem—we can use this button to fix them automatically.

Besides browser uploads, we can also add books directly through the file system.

This is perfect if you have a large audiobook collection.

We can use the file browser app to manage our audiobooks volume.

We need to follow the directory structure of audiobookshelf.

First, let's create a folder for the author

then create a book folder inside that

and finally move all audio files into this book folder.

Back in audiobookshelf, you can see a scanning task is now in progress.

And there's our newly added book!

To play an audiobook, let's go to the library and click the 'play' button.

We can use the chapter button in the play controls to quickly navigate through different sections.

Audiobookshelf automatically saves your listening progress

so you can continue exactly where you left off after refreshing or switching devices.

You can also manually create bookmarks for specific moments you want to return to later.

Audiobookshelf also supports podcasts, so let's explore that feature.

First, we need to create a separate library just for podcasts.

We separate podcasts from audiobooks because they have different file structures.

We have two options to add podcasts to audiobookshelf:

Let's add a podcast by going to the 'add' section.

Here we can enter the name of the podcast we want

and from the search results, we can add it directly to our library.

Inside the podcast page, we can click 'find episodes'

then choose specific episodes to download.

What makes this really powerful is automatic downloading.

In the 'edit' options, let's navigate to 'Schedule'

here we can set up audiobookshelf to automatically fetch new episodes.

We also have the option to limit how many episodes to keep.

I'll set this to 0, which means there's no limit—it will keep everything.

Now let's explore how to share your media with others.

Audiobookshelf supports multi-user access, perfect for sharing with family members.

To set this up, we go to the settings section

and here we can add new users.

When creating a user, we have several permission options to choose from.

For example, I can limit a user to only access the audiobook library

This gives you complete control over who can access what content in your server.

Now let’s log in to the new user account we just created.

With this account we can only see the audiobook library.

And we also have separate playing sessions.

Audiobookshelf also offers mobile apps that support offline listening.

Even when you leave your home network

you can still enjoy your audio content on the go.

The app automatically syncs your progress with the server

whenever you reconnect to your home network.

Currently, both Android and iOS are supported, though the iOS app is still in beta.

Unfortunately, there are no open TestFlight slots available anymore.

Personally, I compile the iOS app myself and install it on my phone.

There's also an alternative iOS app called ShelfPlayer

which many users recommend, but it costs $5.

Let's set up the mobile app now.

First, we need to specify our audiobookshelf server address.

Then we log in to our account.

Here we can see all our media just like in the web app

Resources