The stack I use has been pretty solid:
- Calibre docker container accessible via Guacamole
- Calibre-Web docker container as "front-end"
- Readarr docker container to obtain new books via Usenet (primarily ALTHub)
- SABNzbd docker container to download
Readarr searches Usenet for books, then sends what it finds to SABNzbd, which downloads the file to a folder that Calibre watches, which then imports the book and adds it to its database, which Calibre-Web has access to, so in a minute or two it's available in Calibre-Web for download/reading/conversion.
If for some reason the book isn't available via Readarr/Usenet, it can be downloaded via other methods and uploaded to Calibre-Web, so everything ends up in the same place.