Skip to content

Comment on Bookshelf – Self-hosted eBook library that runs on object storage

Comments

Having built a tool in this space, I enjoy seeing all the Calibre alternatives that have been coming out in the last few years! It's fascinating to see the specific wants that people have.

Bookshelf, for example -- what possesses someone to make an ebook library that _only works on object storage_? Is this a weekend project, answering the question of "what would this look like"? Or was it something the author wanted for a long time?

Author here. It mostly came from a personal need rather than trying to answer "what would this look like on object storage?"

I wanted something with as little infrastructure as possible, ideally no database or additional services to maintain, while still having my library available anywhere. Object storage fit that pretty well, especially with things like R2 where the free tier is already more than enough for a personal ebook library.

That said, I don’t want Bookshelf to be tied to one particular setup forever. The plan is to keep the core idea of minimal infrastructure, while adding more storage/deployment options over time.

I love it! Thanks for sharing. That makes perfect sense - available from anywhere with limited infrastructure.

Looking forward to seeing what comes next for Bookshelf!

Having built a tool in this space, I enjoy seeing all the Calibre alternatives that have been coming out in the last few years!

If there would be just anything actually good. But for some reason they all have just very basic organisation-levels, and barely any support for handling custom data from calibre.

For some reason, streaming ebooks seems to be also not existing. One can either download the whole book, or use some lousy in-browser-reader. So strange how the ebook-world has no decent software for selfhosting.

Kavita has a custom epub library that actually streams the epub pages. The reason why it's non-existent is due to epub being a zip, with a manifest of pages and images. Each page is an html document, so it may have images requested from that manifest.

Most applications just use epub.js which needs the whole book loaded at once.

Edit: Also Kavita does support some calibre tags for metadata and def is much more customizable with a powerful filtering system which you can then bind to your dashboard/side nav.

www.kavitareader.com for those that might be interested (or check the wiki to get a bit more about it).

Of course, now you’ve piqued my interest - what is it that you want from your library management tool?

FWIW the tool I’ve built has no built-in ereader because I use apps like Apple Books or my kobo to read. i don’t need another half-built ereader

what is it that you want from your library management tool?

Custom fields for metadata and accessibility from different devices. Usually there is only hardcoded metadata, tags or categories and one or more systems for collections. And moving data between different software is also quite limited of course.

At the moment I manage everything with calibre on desktop, and use calibre-sync(?) on mobile which has full support for calibres metadata, including the custom fields. But it has no builtin reader and a very unoptimized interface. So the whole handling is very cumbersome, I have to first filter for what I seek, then download it, then change to the reader-app, and maybe organize the file there too, and afterwards I have to delete the local file and manage stuff on desktop like read-state, rating, etc.

Agree so much! It's so interesting all the different use cases and interpretations of those use cases people have.

Like this self-hosted project aims for "simple deployment"/less infra, but I can't imagine how you end up at "use Cloudflare proprietary offerings" and reconcile that with "self hosted".

But if you host the node app yourself and point it at your own seaweedfs/minio/garage that's still more infra than node process+SQLite file.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.