home-server
README.md
The books stack
Three containers working as one pipeline. kobodl polls a Kobo account
every five minutes and downloads anything purchased there;
calibre-web-automated watches an ingest folder, converts and files
whatever lands in it into a proper Calibre library, and serves it on port
8083; audiobookshelf serves audiobooks and podcasts on 13378 from its own
library folder.
kobodl has no image of its own. The container is python:3.12-alpine,
installs kobodl when it starts, serves the web UI on 5679 for the one-time
login, and loops. After each sync it runs sort.sh, the wrapper: prose
ebooks are copied into the ingest folder for Calibre-Web-Automated — which
consumes and deletes them, so a separate sent-list is what stops a title
being ingested again every cycle — audio files are moved into the
audiobooks tree by author and title, an ebook of the same title is dropped
next to its audiobook as a companion, and when anything moved it asks
AudioBookshelf to rescan and to match the new items against Audible for
metadata.
docker-compose.yml— the stack as Portainer runs itkobodl/sort.sh— the wrapper kobodl runs after every sync