Hacker News new | past | comments | ask | show | jobs | submit login
Kavita – Self-hosted digital library which supports a vast array of file formats (kavitareader.com)
307 points by thunderbong 51 days ago | hide | past | favorite | 86 comments

UI with minimalism, open source and cross-platform (Win, Lin, Mac) -- what's not to like about it?!

And a great name too. Kavita means poem or poetry in Sanskrit and pretty much all Indic languages.

I'm sure others will point out the pros/cons vis-a-vis Calibre reader. But each serves a different niche. This one seems particularly geared towards comics. So cannot expect all the bells and whistles of Calibre.

> Kavita means poem or poetry in Sanskrit and pretty much all Indic languages.

Thanks for posting this. They don't seem to have that in their FAQs, and I find that's a very common thing. I often wonder about the naming of a project, and too often it's far too hard to find out. (In this case, it is simple enough to google "kavita meaning" and find out, but I feel like I find myself unable to find out for lots of projects)

  > Kavita means poem or poetry in Sanskrit and pretty much all Indic languages.
Interestingly, in Semitic languages Kavita means writing or written things.

In case anyone else is confused: in Sanskrit it's Ka-vi-ta (it seems), in Semitic (at least Hebrew), it's k-ti-va. So quite different.

if you take the K as a ch throat sound, it means omelette in hebrew.

I'm still looking for the library solution that doesn't mess with whatever file/folder arrangement I choose. I find it very odd that this seems to be such a difficult deal to do in the ebook space, considering the vast array of picture/video and music managers that seem to have no problem with this.

I think Ubooquity is probably your best bet. But it's no longer maintained and has some issues with larger libraries due to how the library scan is implemented.

Ubooquity does offer this.

Edit: Setup Kavita using Docker, and the directory structure isn't maintained.

I'm very tempted to write a Caddy plugin for OPDS to solve for this.

Did a little more looking around. It also appears "Komga" might do this as well? Will be trying both.


Is there any Document Management System with good search/indexing capabilities, versioning and format conversation features that is targeted for personal use by individuals?

This and Calibre seems focused on ebooks, rather than on documents.

I think you're looking for something like paperless-ng. https://github.com/jonaswinkler/paperless-ng

Not exactly the same as that. I'm had in mind something more focused on working documents in one's PC, not just scanned paper documents. For the working documents, versioning, diffing etc that a DMS will provide could be really useful.

Something like Xerox Docushare but only for ones own private documents.

Looks neat. I would love for such a tool that also has full text search on the books. I tried searching for “JSON” which is indeed in one of the books in the library and it did not find that book.

Our search only currently works on the series titles. It's getting an overhaul in 2 releases time though, but Full text search within books is not going to be supported. It's a very complicated task and there are better softwares out there to support that.

Has password format requirements. How I set my passwords on my network is up to me.

Doesn't let you know of this password format requirement in an older Chrome browser. It simply sits there dumbly and doesn't let you register.

Analytics (opt-out rather than opt-in) sent back to server with a pinky promise not to send any other data.

Why do I need Twitter javascript and Twitter cookies included in my e-reader? No, just no. Why do I have to be on-guard against what tracking and additional cruft is included in my own server?!?

Paging through the library 30 books at a time rather than scrolling. The 1990's web called asking for its UI back but I didn't pick up because we text these days.

Messes with the directory contents and formats. That is a hard pass from me.

I'll stick with the sucky broken system I have right now than a shiny new broken system that still sucks but also messes with my directory structure.

Great effort, but your execution lands as wide of the mark as every other solution out there.

Entitled random on the Internet isn't impressed. I'm sure the author will be gutted.

While they're being a bit of a smart ass about it, the criticisms are totally valid and they're not being entitled for offering them when the project is posted in a public space.

In fact pointing out that it contains telemetry and JS from Twittwr seem pretty important things to point out to people, at least in my book.

No, entitled would be me expecting the author to fix it. He can execute his vision however he wants, it just ain't my vision. Also, author promotes on public forum then author should expect feedback, both positive and negative.

How does this compare to Calibre? I very much appreciate Calibre's extensibility of metadata and make use of it in my own digital library collection, and despite being (seen as) a desktop app, has a nice and well-working server mode which allows me to access my collection from any device I want.

Calibre is a powerhouse of an application. It is built for people that want really in-depth metadata curtailing and exploration. Kavita is not that.

At the moment, in terms of metadata Kavita is pretty limited. The current release is adding more metadata support (local) and attempting at downloading metadata from external sources (nothing else really does this except other tools).

It really depends on you and your library. I personally just want to be able to read my stuff and focus on things like genres and put collections and read lists together (for custom read orders), so Kavita is the best solution. If you want in-depth metadata, then you're better off setting up Calibre-web or Komga.

Would love to give the demo a try, but am getting "Your credentials aren't correct" unfortunately.

That just means someone changed it because they are bullies. Let me change it back. :)

It's been changed again. You should probably modify the demo deployment to prevent password changes, as well as revert the system to a known good state every so often to undo whatever nonsense has been done to it.

Are you the dev? The `img/hero/example.png` image is way too big, I watched it slowly load over the course of maybe 5 seconds.

I am. I probably just need to compress it (and write some media queries too). Thanks for the note.

Yes, no way to try it.

Same here.

Does this work with any real eink readers as a "store" and sync service? I checked it out but they only mention mobile apps, not devices

This requires having a web reader (edit: or OPDS), so I'm not sure about that.

Any OPDS-capable reader can access the media on the server and they also have their own API afaik, though I haven't really found any 3rd party client apps yet.

> Kavita is a rocket fueled self-hosted digital library which supports a vast array of file formats.

Doesn’t sound very ESG. What is rocket fuel in digital library contexts, and why is rocketing desirable to feature in a digital bookshelf’s heading blurb?

Looks like a Plex for all kinds of books? Neat idea by the looks of it.

So you can only read while at home, unless I misunderstood something.

You should def setup a reverse proxy. Our wiki has examples for most of the popular ones: https://wiki.kavitareader.com/en/install/reverse-proxy

Setting up a reverse proxy is a good way to access the server or container but I would recommend that nobody do this. I did a quick look through of the code on github and I would strongly advocate against exposing this server to the internet at this time even if it were situated behind a reverse proxy with an encrypted connection. The code is immature and not particularly well hardended, many error messages just spew out to Console and catch clauses are empty/non-logging and don't handle the error. There were several places in the repository pattern that gave me pause, and whilst there was only a limited number of ExecuteCommand invocations wrapped in a helper function, that is not to say there isn't a way to ExecuteCommand or perform other attacks. A malformed PDF, CBR or epub could easily fuzz this server. A VPN connecting to the server, or at the very least, symmetric challenge/response HTTPS with a client key requirement on the reverse proxy, with the server running in an isolated Docker container is the only way I'd expose this service.

P.S. I know you are the author of the code and not trying to state anything about the code, but merely that I would be careful exposing it to the internet at this time.

An offline reading feature would be great. Start the reader, mark some books for offline access, download them, go offline, read them, sync the page number with the server when back online.

Haha I tried this last week with PWAs, but they weren't able to provide the level of control I needed to achieve literally this idea. So it looks like native-ish code is in my future for iOS and Android :(

But you can download files and use native readers already.

Yes, and it's what I do. I copy ebooks from my computer to my phone with Syncthing, read on my phone and... only on my phone :-)

I know that there are page syncing services, maybe even a self hostable one from Mozilla but I'm lazy about this. After all my phone is always close to me and the screen is even wider than newspaper columns used to be.

Too bad browsers are too crippled to build PWAs with the power of native apps. Thanks for the effort anyway :-)

Boringproxy if you’re like me and don’t want to port forward or use a vpn.

One can always set up a VPN into their home, or make their server public. It's not for the faint of heart, though.

Wireguard to your home network is a must if you're into homelab/self-hosting, and no harder to set up than any one of the services you'll have set up on your home network. I love having direct access to my home network from my phone.

I do have a 'public' homeserver for two years now, so far so good.

Lets see if this jinxes it!

You can make an ssh tunnel to it using http://sshreach.me and open it when you want to access it while you're away from home.

"a rocket fueled self-hosted digital library" - what does it mean that it's rocket fueled...?

Maybe they are big fans of Newsradio (one of my all-time favorite shows) https://www.youtube.com/watch?v=3JpwjnMFlJI

It just means that it is fast :)

Maybe a play on "batteries included"?

First of all, great work and name. I hadn’t even realized that I was looking for this. Installed it on my NAS under docker.

Also got interested in competitors so tried a couple. Here are my notes:

1) docker works well. UI is fine, was able to figure out without much effort.

2) not sure what is the difference manga and comics? For some reason it didn’t scan some Pdfs as manga but did as comics.

3) wasn’t able to make caliber-web docker work, but tried ubooquity. For some reasons PDFs render sharper with ubooquity than with Kavita. It is fairly obvious and checked with a few. All settings are default. ubooquity was also faster, but I prefer the UI of Kavita.

> wasn’t able to make caliber-web docker work

I done through this route before. From the best of my crappy memory, you need to make sure that you create calibre library before starting the web part. You would have to do it through the standalone app.

And for docker, it kinda a fickle from I remember. you have to bind the calibre-web to your local calibre library folder. You need to enable the docker to access to that folder. It took me multiple guides to understand how to make this works.

Thanks I’ll give it another shot.

Here a few guides that I used in the past that helps me to understand and how to set up for Calibre-Web to work with Docker.

I have a guide for the Docker with local filesystem that helps me to make it work[1],[2]. I remember that Docker is particular with file path and you have to use the Docker file path convention, they uses forward slashes instead backslashes like Windows.

[1] https://flaviocopes.com/docker-access-files-outside-containe...

[2] https://stackoverflow.com/questions/44876778/how-can-i-use-a...

This is the error I’m running into. I’m running it on a Synology NAS.


The folder and port mapping was done, I'm familiar with using Docker.

Oh Synology NAS, I am not familiar with their and I haven't use it before. This happened in Windows in my experience. Thank you for the link!

Now I remember there is one more step, I fixed it by putting the library in the root folder of the drive. That solved the issue for me. I only tried it for a day and shut it down.

I am planning to get RPI and put calibre-web in it. It still in my todo list.

This looks awesome. Reading behaves a little weird on Firefox - the page seems to shift to the left briefly before showing the next page.

I've been a big fan of the Plex approach for curation.

Would be awesome to integrate some one-click addition from high-quality ebook sources like Standard Ebooks (does it support upstream OPDS sources?).

Can you elaborate or create an issue on Github? I primarily use Firefox and haven't noticed anything.

We support OPDS for consumption, but not for consuming content. I have some loose plans to support upstream sites/sources, but nothing concrete nor planned.

If I can repro this more reliably, I'll definitely report. It's a very subtle flicker where the content appears to the left of where it should be when flipping through pages.

I'd love to have something like this if I ever bought a https://onyxboox.com/boox_nova3color

If it could download "to-read" books/manga onto local storage and then sync page numbers when you connect to wifi that would be amazing.

I have a waaay simpler version with only ePub with no pictures support: https://h5reader.azurewebsites.net/

The advantage is you don't have to install anything. Whatever books you upload are simply stored in your browser (might be an issue on iOS). If you want to sync, you login into your Google Drive, and books and positions are synced via it.

It is not correctly set to be a PWA, but if you're offline and the tab is still open, it will continue to work.

We have download support and "To Read" might be a collection or a readlist, so you could just download those series onto your device of choice if you don't want to user our web reader. If you use the web reader, of course, progress is tracked for you.

If you're talking more like how Plex does sync, I literally just tried that with a Progressive Web App last week, but it didn't pan out. There wasn't enough control with a PWA (which means I'm going to have to write something native-ish in the future).

It seems like there's an API so I'm assuming it is possible to do.

Speaking of libraries, does anyone know a minimalist amateur library software a hackerspace could use? We currently only have a few books, but the list could as well grow and it would be nice to have a webpage that would help us track who brought / borrowed what.

A search for "minimalist amateur library software" got me this:


Good luck!

a spreadsheet. no really. until you have >1000s of books, a spreadsheet will have all you need

This is assuming you have a trusted editor who can make updates (or that you trust everyone who needs access to make reasonable edits).

Looks nice, I've been rolling my own simple version of something similar because none of the existing solutions supported my main use case, which is to convert format on the fly for the target device (a la Plex)

In case you need ideas for future features :)

I'm curious how you achieve this? Is it similar to Calibre-web's Send to device? Or did you code the conversions yourself (or are you using an external service) and emailing the file?

Are you also providing the reading experience or sending the converted file raw to use in another program's reader?

You use the webapp from your target device, then when you select a book, it's converted on the server (I use mostly Kindle Comic Coverter and Calibre ebook-convert), then served as a regular html download and opened in a native reader.

This works particularly well from Kindle, so I never have to connect it to a computer, and I don't have any email size limit which is quite easy to go over with comics

Interesting, I'll have to look into that as well. I have a lot of platforms that I have to support, so utilizing tools can be problematic. I'm sure that's why send to email is so popular (and it's easy to implement).

Nice. I have been waiting for something like this. I will be monitoring closely, and once it has highlight and notes feature, I will move my books from iCloud.

not to be a spoilsport but no annotations?


My hack for reading Manga is to pack them up into a PDF and download them to a tablet where I can read them unconnected.

Most manga/book servers support a protocol called OPDS that saves you from jockeying files around by hand, and there are good cbr/cbz readers for every tablet out there which integrate nicely with OPDS.

It ain't hard to get a bunch of image files for a manga and then pack them into a PDF with a Python script. I am going to use the PDF reader on the tablet anyway to read other documents, why install another (probably) badly written app.

(e.g. there is a word that starts with "cr" and ends with "ap" and it's no accident. I had to try about 6 different QR code reader apps to find one that didn't crash on launch on my Samsung tablet.)

> supports disabling Authentication

Could it then be used as a public library of one's own works?

I mean, I guess so. It'd still be weird because progress would be tracked when people logged in. User accounts would still be there. (Although you could just reset it nightly or do some clever tricks with a reverse proxy to force everything to be read in incognito mode)

how is this different from calibre?

a quick check seems like this is a docker(running ubuntu inside, code is in CSharp) with a web interface, while calibre is a binary to install directly.

Because it is web based, it is meant for sharing your library with users on other computers, or accessing your library remotely, while calibre is not geared for that purpose.

this looks very slick. I have a very weird requirement when it comes to reading digital content. It has to be 100% distraction free because otherwise I end up getting sucked into Netflix or HN which is a lot less mental effort than getting into the flow of a new book. I don't trust myself not to open another tab and start researching about some things in the book, which leads to quickly checking slack or something else. This rules out anything that runs in a browser which I use to access all my other things. I also turn off the network on my other devices and on my laptop when it's reading time, not just to avoid notifications but to create a higher barrier for myself in case I "feel like" changing my mind after 3 pages.

If all this feels a bit sad it's because it is.

What I love about Kavita is that it seems to be much more social because I can lend books to a friend. I haven't checked if this is supported but the killer feature for me (for which I'd adjust my above rules/behavior and switch to Kavita) would be collaborative reading where we can put books on each others reading list, share notes or comments, or view each others progress. Like Netflix guest accounts with the difference that you can actually do things together (so way beyond Netflix today)

The "sharing" sounds a bit intrusive but it would help me a great deal in keeping up with my daily reading goals knowing that it's public to friends. It would be cool for book clubs too. Kavita is the first software where such features would/could make sense (if not then maybe in a fork?)

Right now I convert all my formats (epub etc) into pdf and then after disabling my network, use zathura with a dark theme to read. I keep notes with markdown files and once I've finished the book I reneame the pdf from book_title to read-book_title. Reading it a second time the filename becomes read2-book_title and so on ... When I share a book I send the file to a friend (only if they ask) who put it on their reading list and (10/10) forget about it forever.

It's a dumb approach for single user where the goal is to read as much as I did as a child without distraction. It's actually worse an experience than having the physical book in my hand which I can smell and then put on a shelf like a trophy and be proud of or lend it to a friend who will only ask for it if genuinely curious because they know once they return it they probably need to say a word or 3 about what they thought of it (or admit they didn't read it). With digital books I often finish a book and still don't know the author because the only time I've seen the cover was when I was at page one. And even the title I forget quickly regardless how good it was because of the same reason.

Kavita makes me a tiny bit excited, ... if not about it's current state, then about the potential it could have.

> I have a very weird requirement when it comes to reading digital content. It has to be 100% distraction free because otherwise I end up getting sucked into Netflix or HN

Not exactly a radical recommendation or anything, but have you tried a dedicated e-reader? No distractions possible that way, and you get the all the usual benefits -- e-ink screen, weeks-long battery, etc. I enjoy mine.

> With digital books I often finish a book and still don't know the author because the only time I've seen the cover was when I was at page one

Kobos (maybe Kindles as well?) can display the cover of the current novel while they're sleeping.

Kindles do it, although it's disabled by default (which I appreciated, I don't want people to know the trash I'm reading).

If you can download the files, why can't you upload as well?

Kavita is at the moment, aimed to be more like Plex. Theoretically you could upload files, but the main aim is exploring and consuming your content. Different people have very different schemes for where files should go.

One user does everything by genres, so /comics/romance/series, another does it by publisher and years. The problem with uploading is that there is no right answer. It's better to just inform Kavita that new files are on the disk and let the scan pick them up than try to build a complicated solution that is going to meet everyone's niche needs.

Sorry guys, but I genuinely don't understand what's the point of this. Is it an e-reader like the kindle reader for browser?

It's a web server software to serve your e-book and e-comic collection.

It shows the catalogue of your titles and allows reading inline (in the browser) as well.

Gotcha. Thanks for clearing that up.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact