home-server
docker-compose.yml
services:
kobodl:
image: python:3.12-alpine
container_name: kobodl
ports:
- "5679:5678"
security_opt:
- label=disable
volumes:
- /path/to/home/books/config/kobodl/kobodl.json:/root/.config/kobodl.json:z
- /path/to/home/books/config/kobodl/sort.sh:/sort.sh:z
- /path/to/home/books/config/kobodl/abs_token:/root/.config/abs_token:z
- /path/to/home/books/kobo:/downloads:z
- /path/to/home/books/ingest:/ingest:z
environment:
- TZ=Asia/Kolkata
entrypoint: []
command: >
sh -c "
pip install kobodl -q &&
echo 'kobodl ready' &&
kobodl serve --host 0.0.0.0 --port 5678 &
while true; do
if kobodl user list 2>/dev/null | grep -q '@'; then
echo '[cron] syncing Kobo library...' &&
kobodl book get --get-all --format-str '{Author}/{Title}' --output-dir /downloads 2>&1 | tail -10 && sh /sort.sh;
else
echo '[cron] no user — authenticate at http://192.168.1.61:5678';
fi;
sleep 300;
done
"
restart: always
calibre-web-automated:
image: ghcr.io/crocodilestick/calibre-web-automated:latest
container_name: calibre-web-automated
ports:
- "8083:8083"
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Kolkata
volumes:
- /path/to/home/books/config/cwa:/config:z
- /path/to/home/books/library:/calibre-library:z
- /path/to/home/books/ingest:/cwa-book-ingest:z
restart: always
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
container_name: audiobookshelf
ports:
- "13378:80"
environment:
- PUID=0
- PGID=0
- TZ=Asia/Kolkata
security_opt:
- label=disable
volumes:
- /path/to/home/books/config/audiobookshelf:/config:z
- /path/to/home/books/config/audiobookshelf/metadata:/metadata:z
- /path/to/home/books/kobo/audiobooks:/audiobooks:z
- /path/to/home/books/podcasts:/podcasts:z
restart: always