I asked my AI for a book recommendation. It suggested The War of Art by Steven Pressfield. Good pick. Creative resistance, the inner battle of showing up and doing the work. Exactly what I needed to hear.
The normal next step is to buy it on Kindle. I did not do the normal next step.
Two hours later I had a self-hosted ebook server running on my Linux desktop with word-by-word audiobook synchronization, accessible from my iPad over an encrypted tunnel. Four Docker containers. Zero subscription fees.
The thing that pulled me in was Storyteller. It’s an open-source version of Whispersync — give it an ebook and its corresponding audiobook, and it aligns them word-by-word. You read on screen while it reads aloud, highlighting each word as it goes. Self-hosted. No Amazon account required.

Getting it running was ten minutes. Getting it reachable was the rabbit hole.
First it was localhost:8001. Fine for the desktop. Useless for the iPad on the couch. I needed it accessible from any device without punching holes in my router or setting up a reverse proxy. Tailscale puts all my devices on a private mesh network, and one command turns a local port into a proper HTTPS endpoint:
tailscale serve --bg http://127.0.0.1:8001

That’s it. HTTPS certificate included. No port forwarding, no DNS records, no nginx. The iPad loaded it on the first try.
The War of Art was the first book I uploaded. There’s something in that — a book about overcoming resistance being the thing that made me resist the easy path and build infrastructure instead. Pressfield would probably call that a different kind of Resistance. I call it a Saturday well spent.
I now have a reading server, an audiobook server, and two more services staged for later this month. My desktop keeps gaining capabilities. Every time I ask it a simple question, it answers with a new piece of infrastructure.
I’m starting to wonder what it’ll be by the end of the year.