I threw away Audible’s app, and now I self-host my audiobooks

I hate the concept of DRM, but honestly it's just not an issue for me. Writers of books, just like developers of apps, should get paid for every single copy.
Wanting DRM-free audiobooks isn't about not paying the writers. It's about being able to listen to what I paid for on any device I want to (e.g. in my car), and still being able to listen to them after Amazon kills Audible.

Also, while not strictly DRM-related, the stores offering DRM-free downloads usually have higher-quality files (128 Kbps or even 256 Kbps for newer titles on Downpour, compared to Audible who's still stuck with 64 Kbps).
 
Upvote
8 (8 / 0)
It always amazes me that so many folks (I'm a public library employee) have not only the attention span but the multi-tasking brain required to injest audiobooks. I barely have the time to read myself, let alone listen to someone do it at a snail's pace.

Maybe after I retire, I guess?

It may also amaze that many people can only read, and even think, at roughly the "snail's pace" of the spoken word.

(Coming from that perspective myself, I only recently learned that many people do not, as a matter of course, think verbally (i.e. via internal mono- or dialogue) and are able to actually think "using thoughts, at the speed of thought", so to speak... I'd always assumed people who seemed particularly quick just thought in "really fast words" (though maybe some do just that))

Anyways, aside from being a way to cram more reading time into life, IMO they can be enjoyable in their own right & worth a try if you haven't.
 
Last edited:
Upvote
4 (4 / 0)
So, quick networking 101 basics...

Routing gets involved any time different networks need to talk to each other. The most common one that people see at a home environment is when their local network needs to talk to the internet. But basically, if you are trying to talk across different networks, you need routing involved. Now, most home networks are at 192.168.0.X or 192.168.1.X, the config I sent you for wireguard used 192.168.100.X. Those are all different networks. So for the .100.X to be able to talk to .1.X, there needs to be a defined path for those 2 networks to talk to each other, which is where the routing comes in. Now, routing needs to happen at a place that both of those networks can access. Since the .100.X network only sees the computer that wireguard is installed on, and your LAN network also sees that computer, that is where the routing needs to happen. It doesn't happen at your router as the Wireguard network can't actually reach your router. This means that you need to configure routing to happen between those 2 networks on your Wireguard computer. Without routing, all Wireguard will see is the computers that are a part of the tunnel, using their Wireguard IP addresses.

The only time your router would get involved is if you were to run one that has Wireguard built into it. At which point configuration becomes a bit easier as the router is already configured to route, so it is just keeping track of one more network.

Adding a DNS entry only means that your phone will switch from the default DNS provider (generally either whatever your cell provider gives you, or something like Googles 8.8.8.8) to whatever you specify. You generally only need to specify the DNS for Wireguard if you want that to be different for the tunnel. For example, I run my own DNS in my house, it has records for my internal services. So if I want to continue to reference the internal servers by name, I have to specify the DNS for my house install so I can continue to use those over Wireguard, since those aren't available on the public DNS records anywhere.
So I've gotten further, with the help of chatGPT :)
I don't know if all of these steps are necessary or potentially harmful.. I don't exactly know what these things do.
In case anyone's following along.. let me try to document this:

1. Set "IPEnableRouter" to 1 in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters in regedit.
2. Turn on Routing and Remote Access in services.msc.
3. Add my router's IP address as the DNS in both the server and client configuration for wireguard.
4. Turn on NAT by running the following command in an elevated powershell terminal:
Code:
New-NetNat -Name "WireGuardNAT" -InternalIPInterfaceAddressPrefix 10.254.0.0/24

End result is 192.168.1.X addresses work over VPN, as do internet addresses. But local hostnames (mycomputer.local, etc.) still do not 🤦‍♂️. Verified the internet is going over VPN by checking my IP address and doing a DNS leak test.. as well as watching a tv program my cable provider (yeah, I know..) restricts to "in home" wifi (dipshits).

Only suggestions chatgpt gave for local hostnames is to either flash my router with a CFW (since it doesn't appear like it supports "DNS relay") or run my own DNS server. Both of those options are a bridge too far, for now. What I have is "good enough" to not want to go down that rabbit hole.

Of course, all of this is overkill to accomplish the original goal of being able access my audiobooks outside my home network.. but I was willing to put in the effort because, as I've alluded to, I have other uses for VPNing into my home network.. (especially since teamviewer has so completely shit the bed as to be absolutely unusable from my laptop.. maybe I shouldn't have told them off when filling out the "commercial use" bullshit for the 759th time because they're fucking stupid.. but that's going off on a tangent..)
 
Upvote
0 (0 / 0)

ERIFNOMI

Ars Tribunus Angusticlavius
15,352
Subscriptor++
So I've gotten further, with the help of chatGPT :)
I don't know if all of these steps are necessary or potentially harmful.. I don't exactly know what these things do.
In case anyone's following along.. let me try to document this:

1. Set "IPEnableRouter" to 1 in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters in regedit.
2. Turn on Routing and Remote Access in services.msc.
3. Add my router's IP address as the DNS in both the server and client configuration for wireguard.
4. Turn on NAT by running the following command in an elevated powershell terminal:
Code:
New-NetNat -Name "WireGuardNAT" -InternalIPInterfaceAddressPrefix 10.254.0.0/24

End result is 192.168.1.X addresses work over VPN, as do internet addresses. But local hostnames (mycomputer.local, etc.) still do not 🤦‍♂️. Verified the internet is going over VPN by checking my IP address and doing a DNS leak test.. as well as watching a tv program my cable provider (yeah, I know..) restricts to "in home" wifi (dipshits).

Only suggestions chatgpt gave for local hostnames is to either flash my router with a CFW (since it doesn't appear like it supports "DNS relay") or run my own DNS server. Both of those options are a bridge too far, for now. What I have is "good enough" to not want to go down that rabbit hole.

Of course, all of this is overkill to accomplish the original goal of being able access my audiobooks outside my home network.. but I was willing to put in the effort because, as I've alluded to, I have other uses for VPNing into my home network.. (especially since teamviewer has so completely shit the bed as to be absolutely unusable from my laptop.. maybe I shouldn't have told them off when filling out the "commercial use" bullshit for the 759th time because they're fucking stupid.. but that's going off on a tangent..)
NAT is certainly a way to do that. Not the way I'd have done it. NAT when you don't have to sucks. The alternative would require you to configure a route on your router to send traffic destined for your wg subnet to your host running wg so it can then route it properly. This is another reason why running your VPNs on your router makes a lot of sense, though not something I'd recommend with consumer class gear.

I mentioned it above, but your .local names aren't going to work because you're in a different broadcast domain. Multicast traffic isn't going to make the jump from your local network subnet to your VPN subnet without doing some work. Setting up an mDNS repeater just for name resolution is a bit much. At that point, might as well just set up a proper local DNS for local name resolution unless you have another need for mDNS traffic across the two subnets.

But really the "right" solution at this scale is give your host a static IP or a DHCP reservation so it always has the same IP and use the IP instead of the the hostname. It's one host, so it's not a big deal to remember the IP. If you're just using it for this one app anyway, just set it and forget it.
 
Upvote
1 (1 / 0)

meisanerd

Ars Centurion
1,029
Subscriptor
So I've gotten further, with the help of chatGPT :)
I don't know if all of these steps are necessary or potentially harmful.. I don't exactly know what these things do.
In case anyone's following along.. let me try to document this:

1. Set "IPEnableRouter" to 1 in HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters in regedit.
2. Turn on Routing and Remote Access in services.msc.
3. Add my router's IP address as the DNS in both the server and client configuration for wireguard.
4. Turn on NAT by running the following command in an elevated powershell terminal:
Code:
New-NetNat -Name "WireGuardNAT" -InternalIPInterfaceAddressPrefix 10.254.0.0/24

End result is 192.168.1.X addresses work over VPN, as do internet addresses. But local hostnames (mycomputer.local, etc.) still do not 🤦‍♂️. Verified the internet is going over VPN by checking my IP address and doing a DNS leak test.. as well as watching a tv program my cable provider (yeah, I know..) restricts to "in home" wifi (dipshits).

Only suggestions chatgpt gave for local hostnames is to either flash my router with a CFW (since it doesn't appear like it supports "DNS relay") or run my own DNS server. Both of those options are a bridge too far, for now. What I have is "good enough" to not want to go down that rabbit hole.

Of course, all of this is overkill to accomplish the original goal of being able access my audiobooks outside my home network.. but I was willing to put in the effort because, as I've alluded to, I have other uses for VPNing into my home network.. (especially since teamviewer has so completely shit the bed as to be absolutely unusable from my laptop.. maybe I shouldn't have told them off when filling out the "commercial use" bullshit for the 759th time because they're fucking stupid.. but that's going off on a tangent..)
.local domains will not cross the router barrier, so those will never work. But if you have a static IP on the APB computer, you should be able to use that in the remote book app, and it should connect both locally and over vpn.

If you really want dns, easiest is to probably set up a pihole on your lan, set that as the dns to use in wireguard, and add static entries to it for your local servers. This also means that you benefit from adblocking when you are remote and connected via vpn. Dont worry about flashing custom firmware on your router, unless you really really really want to go down that rabbit hole, and are willing to risk a lot of headache if something goes sideways during that process.
 
Upvote
1 (1 / 0)

tscharf

Ars Scholae Palatinae
716
So ... you can setup a home server with lots of arcane Linux requirements and have remote access but can't get Audible to work on your phone? Hmmmmm ....

I have over 1000 books on Audible and the app has been tuned pretty well IMO over a decade and works well. I have used Libby and a few others and Audible has the best app.

Regardless of that discussion the biggest issue with Audible is occasional disappearing books. Case in point was The Martian narrated by Ray Porter. Audible did the book again with a different narrator and the original was disappeared. It's still accessible if you search in the right place (desktop app / library search / download via desktop). This has happened several times now to older books.

Rumor has it you can make backups of your books with Libation. It allows you to automate downloads of only your recent books.
 
Upvote
-5 (0 / -5)

Triangulatorr

Ars Centurion
200
Subscriptor
Hopefully, Cory Doctorow's message will gain more traction, and the countries US is now imposing tariffs on will suspend their anti-circumvention laws. US has originally forced these laws on others in exchange for free trade agreements it is now choosing not to honor, after all.
I'm assuming you're referring to "Chokepoint Capitalism". I happen to have listened to that while angry @ Audible over a multi-month inability to play books on my phone. I bought the book on Libro.fm as an experiment, and haven't looked back since. Cancelled Audible and for player, I use Smart Audiobook Player, though the Libro.fm app works. More features in Smart - time-based sleep timer on/off, shake to reset sleep timer, additional audio options.

Thing is, I would never have even known about "Audiblegate" had I not heard Cory and Rebecca on the Decoder podcast mentioning it and "Chokepoint Capitalism".
 
Upvote
2 (2 / 0)
NAT is certainly a way to do that. Not the way I'd have done it. NAT when you don't have to sucks. The alternative would require you to configure a route on your router to send traffic destined for your wg subnet to your host running wg so it can then route it properly.
There is an option for a “static route” in my router. Would that be what you’re referring to, or something else entirely?
IMG_7427.jpeg
This is another reason why running your VPNs on your router makes a lot of sense, though not something I'd recommend with consumer class gear.
There actually is an option to run a VPN off my router.. I tried it briefly once, but abandoned it because the performance was so poor as to be basically unusable.
But really the "right" solution at this scale is give your host a static IP or a DHCP reservation so it always has the same IP and use the IP instead of the the hostname.
Yes, I’ve already done this.
It's one host, so it's not a big deal to remember the IP. If you're just using it for this one app anyway, just set it and forget it.
Ha ha.. that’s cute :).
Reality is.. more complicated.. than that.
 
Upvote
0 (0 / 0)

ERIFNOMI

Ars Tribunus Angusticlavius
15,352
Subscriptor++
There is an option for a “static route” in my router. Would that be what you’re referring to, or something else entirely?
View attachment 105265

There actually is an option to run a VPN off my router.. I tried it briefly once, but abandoned it because the performance was so poor as to be basically unusable.

Yes, I’ve already done this.

Ha ha.. that’s cute :).
Reality is.. more complicated.. than that.
Yeah, that's how you would configure a route on your router.

It's not necessary now that you have your VPN host NATing traffic too. But you can't easily traverse that NAT in the other direction if you want to reach any hosts connected to the VPN from within your network.
 
Upvote
0 (0 / 0)

ERIFNOMI

Ars Tribunus Angusticlavius
15,352
Subscriptor++
For future reference.. what value would I put in each field?
The terminology isn't completely clear to me.
Destination address is the network address of your wg network. 192.168.100.0 was it?
Subnet mask is the subnet mask of that subnet. You probably used /24, so 255.255.255.0
Gateway IP is the IP of your wg server, the one which will be routing between the two networks.
And metric you can probably leave blank.

192.168.100.0/24 (or 255.255.255.0 subnet mask, different notation for the same thing) means any address that starts with 192.168.100. The gateway is the address of the host which knows the way to that network. Metric is the weight of a route. It's not really relevant here, and I'd expect it should let you omit it.
 
Upvote
0 (0 / 0)

deviaan

Seniorius Lurkius
45
Nice timing! I've been wanting to get a home server for a while now--streaming music, movies, shows, a library, NAS, etc--basically all the media I've collected from mostly humble bundles & physical media purchases. I also want to use it as a local git server & CI/CD for some personal projects. Honestly, the hardest thing has been figuring out what I should get since I don't have a spare computer. I'll have to buy something. I'm leaning towards some old business computer, like an Optiplex, with an i5 and throwing in one of those Intel GPUs, though I'm not sure if that's the most cost effective option, and I'm not sure if I should try to do everything in one server or have a few different ones.
 
Upvote
1 (1 / 0)

Don Reba

Ars Tribunus Militum
2,953
Subscriptor++
I'm assuming you're referring to "Chokepoint Capitalism". I happen to have listened to that while angry @ Audible over a multi-month inability to play books on my phone. I bought the book on Libro.fm as an experiment, and haven't looked back since. Cancelled Audible and for player, I use Smart Audiobook Player, though the Libro.fm app works. More features in Smart - time-based sleep timer on/off, shake to reset sleep timer, additional audio options.

Thing is, I would never have even known about "Audiblegate" had I not heard Cory and Rebecca on the Decoder podcast mentioning it and "Chokepoint Capitalism".
Doctorow has been advocating for dropping anticircumvention laws in response to tariffs, for a while. Here are two of his blog posts on this:
 
Upvote
2 (2 / 0)
I can't get mine to even recognize any of the titles. It just says "various authors" and I wonder if it is because I have downloaded them myself? It is the only gripe I have with Plex, which I use for everything else.
If you're on iOS, give Prologue a try. It is a Plex audiobook player.

Also, to get the correct metadata in your files, take a look at Plex-Audiobook-Guide.
 
Upvote
1 (1 / 0)
Yeah I ripped all my audible books, about a 112, last year and put them on audiobookshelf on my NAS. It legit is a solid product. The only real down side is that I can't easily secure the connection with SSL. And I'm not doing a reverse proxy as Lets Encrypt requires port 80 to be open to authenticate during the renewal process, and I'm never opening port 80 up.
Instead I just VPN into my network. It just sucks as I can't share my collection with my GF. It is legit the ONLY thing keeping me on Plex. Having a secure connection out of the box makes things super easy.
Can you use DNS verification for your LetsEncrypt certs?

I'm behind CG-NAT and have no way to open and forward ports to my IP.
I use DNS verification to get my certs, and Tailscale to connect when I'm away from home.
 
Upvote
2 (2 / 0)
This is probably worth another article, but the way I'm tackling this particular problem is with a local instance of Wireguard and a VPN profile on my mobile devices. When I'm out and about or in the car or whatever, I can tap the "VPN" shortcut on my iOS home screen, and boom—Plappa is now able to see Audiobookshelf, and streaming works just as well as it does at home.

When I started reading this article I got excited because this was the major problem that kept me from using audiobookshelf when it first launched. Disappointing to see you still need a bunch of third-party software to use what I personally view as the only purpose of this entire scheme. For now I'll stick with my method of keeping a couple dozen audiobooks on my phone and my whole collection on my keychain flash drive.
 
Upvote
0 (0 / 0)

gefitz

Ars Scholae Palatinae
971
There's a lot of problems with this statement, but I'm going to go out on a limb and guess that you've never even tried to listen to an audiobook.

There's countless studies showing that repetitive, menial labour actually boosts our cognitive capabilities.

Going to the gym, exercise, chores, etc, are the optimal times to read a book.

Try it sometime, and revel in the knowledge that you're never to busy to "read"
Thanks for the sanctimonious conclusion jumping, but no, I've tried. Not only that, I work for a public library system, so I'm quite familiar with not only the average length of an audiobook but also with my very own experiences with them.
 
Upvote
1 (1 / 0)

pokrface

Senior Technology Editor
21,217
Ars Staff
When I started reading this article I got excited because this was the major problem that kept me from using audiobookshelf when it first launched. Disappointing to see you still need a bunch of third-party software to use what I personally view as the only purpose of this entire scheme. For now I'll stick with my method of keeping a couple dozen audiobooks on my phone and my whole collection on my keychain flash drive.
At least with Plappa (the playback app I'm using), if you pay $5 for the lifetime version, you also gain the ability to download audiobooks to your device and play them locally. That obviates the need for figuring out a streaming solution.
 
Upvote
0 (0 / 0)
As far as I'm concerned, Canada should declare all US intellectual property to be null and void. Patents, copyrights.. everything is public domain now.

#ElbowsUp
Agreed. You might be interested in a recent episode of the Law Bytes podcast.
Professor Richard Gold of McGill University’s Faculty of Law specializes in intellectual property. On last week’s Law Bytes episode, I referenced his proposal to consider suspending patents in key sectors such as pharmaceuticals and AI as a mechanism to counter US pressure. He joins me on the Law Bytes podcast to expand on his idea, explaining why there would be benefits for Canadian firms and frustration on U.S. firms that could spark domestic support to counter potential measures targeting Canada.
https://www.michaelgeist.ca/2025/02/law-bytes-podcast-episode-226/
 
Upvote
1 (2 / -1)

meisanerd

Ars Centurion
1,029
Subscriptor
When I started reading this article I got excited because this was the major problem that kept me from using audiobookshelf when it first launched. Disappointing to see you still need a bunch of third-party software to use what I personally view as the only purpose of this entire scheme. For now I'll stick with my method of keeping a couple dozen audiobooks on my phone and my whole collection on my keychain flash drive.
I mean, you probably want your VPN to be a separate thing from your audio book server. Not all ABS instances will need to be accessed via VPN, the ABS devs aren't cryptographic experts and would likely just introduce security vulnerabilities if they tried to implement their own, and if you are running other services (like video streaming, home automation, etc) in addition to ABS, you don't want to have to manage a VPN for each service and have to do a port forward for each VPN to access the services.
 
Upvote
2 (2 / 0)
I've used Plex with Audiobooks for many years and I'm generally pleased with it. I have about 460 titles (ripped from CD) and regularly listen to them. I keep 2 separate libraries for music and audiobooks, which I think helps. Files are structured hierarchically in folders, first by author and then by book. Metadata is rudimentary, but sufficient. My main complaint is that Plex doesn't remember where you were last listening to a book if you switch from one to another - you then have to manually advance to it yourself. My server is shared outside the house too, so I can listen to my books anywhere. Much better than any of the streaming services on the whole.
 
Upvote
2 (2 / 0)

battery

Smack-Fu Master, in training
2
Subscriptor
If you're already running Plex, can't you host on Plex and run it through PlexAmp? Also supports streaming outside the LAN.
I have done this in Plex and a drawback is that it doesn't preserve chapters after trying for a few hours to import them into the file, it doesn't offer them up in Plex or plexamp. - when you have a 10hr book its a nuisance to skip the whole file.
In the end I used terminal on the Mac to make a file that was compatible to my Plex server - but I may try the app you suggested. Also have Proxmox and my own funky dynamic dns tool so remote access shouldn't be a problem.
 
Upvote
1 (1 / 0)
Yeah I ripped all my audible books, about a 112, last year and put them on audiobookshelf on my NAS. It legit is a solid product. The only real down side is that I can't easily secure the connection with SSL. And I'm not doing a reverse proxy as Lets Encrypt requires port 80 to be open to authenticate during the renewal process, and I'm never opening port 80 up.
Instead I just VPN into my network. It just sucks as I can't share my collection with my GF. It is legit the ONLY thing keeping me on Plex. Having a secure connection out of the box makes things super easy.
I have my instance secured with Traefik, which is using the ACME DNS-01 challenge to authenticate.
 
Upvote
1 (1 / 0)
I really wish there was a good solution like this for ebooks. I use Plex for my media, but they don't support ebooks. I know about Calibre, but its Linux support isn't great and all my servers are Linux.

Edit: This caused me to re-search this and I discovered there's an alternative to Calibre called "Kavita." I think I'll give it a look: https://www.kavitareader.com/
There is a docker image for Calibre from the LinuxServer.io team, which containerizes the desktop app into a hosted KasmVNC instance that can be accessed via HTTP/S. Kavita looks to be well supported, but I haven't used it.

What I actually want, is some way to get Edge voices to read my Kindle Library. I adore the Ava voice and want it to read me all my kindle books. Can't get kindle pages to work with edge though.
There is also a docker image for Calibre-Web, which is a companion application that hosts the content from Calibre in a website form, with support for reading eBook formats in-browser. You can use Calibre to convert them to PDFs, open them in the browser, and have it read aloud. Not the easiest workaround, but it will work.
 
Upvote
0 (0 / 0)

ajollylife

Smack-Fu Master, in training
77
Not sure if anyone is interested, but on Android I have this automated with Tasker. As soon as my home wifi is disconnected Tasker connects to my Wireguard VPN docker container running in my LAN's subnet. I always have access to my self-hosted services on my phone. And when I reconnect to my wifi, it auto disconnects the VPN.
I'm interested! Tasker is great.
 
Upvote
0 (0 / 0)

ajollylife

Smack-Fu Master, in training
77
Upvote
0 (0 / 0)