CCCPaste

book_stack

name: "books"

### THIS COMPOSE FILE
# This compose file contains book-related apps
# - Calibre
# - Calibre-web-automated
# - CWA-book-downloader

### ANCHORS
# - The following achors serve as my baseline info that is included in most of my containers
# - Default behaviour is to include all entries below '&home-lab-default' by adding <<: *homelab-default to each container 
# - To add additional env args and labels to a container, I can still use the defaults with <<: &env and <<: &labels, then add additional entries 

x-app: &homelab-default 
  restart: unless-stopped
  security_opt:
    - no-new-privileges=true
  networks:
    - homelab
  environment: &env
    PUID: ${PUID}
    PGID: ${PGID}
    TZ: ${TZ}
    TP_THEME: organizr
  labels: &labels
    com.centurylinklabs.watchtower.enable: "true"

### SERVICES
services:

  ## BOOKS 
  calibre:
    #description: https://docs.linuxserver.io/images/docker-calibre
    <<: *homelab-default
    image: ghcr.io/linuxserver/calibre
    container_name: calibre
    volumes:
      - ${MEDIADIR}/media/books:/config
      - ${MEDIADIR}/media/books/uploads:/uploads 
      - ${MEDIADIR}/media/books/plugins:/plugins
    ports:
      - 8086:8080
      - 8087:8081
      - 9090:9090
  
  calibre-web-automated:
    #description: https://github.com/crocodilestick/Calibre-Web-Automated
    <<: *homelab-default 
    image: crocodilestick/calibre-web-automated:dev
    container_name: calibre-web-automated
    environment:
      <<: *env
      HARDCOVER_TOKEN: ${HARDCOVER_TOKEN}
    volumes:
      - ${DOCKERDIR}/calibre-web-automated:/config 
      - ${MEDIADIR}/media/books/uploads:/cwa-book-ingest
      - "${MEDIADIR}/media/books/Calibre Library:/calibre-library"
      - ${MEDIADIR}/media/books/plugins:/config/.config/calibre/plugins
    ports:
      - 8083:8083 

  calibre-web-automated-book-downloader:
    #description: https://github.com/calibrain/calibre-web-automated-book-downloader
    <<: *homelab-default 
    image: ghcr.io/calibrain/calibre-web-automated-book-downloader:latest
    container_name: calibre-web-automated-book-downloader
    environment:
      <<: *env
      FLASK_PORT: 8084
      LOG_LEVEL: info
      BOOK_LANGUAGE: en
      USE_BOOK_TITLE: true
      APP_ENV: prod
      CWA_DB_PATH: /auth/app.db
    ports:
      - 8084:8084
    volumes:
      - ${MEDIADIR}/media/books/uploads:/cwa-book-ingest
      - ${DOCKERDIR}/calibre-web-automated/app.db:/auth/app.db:ro

### NETWORKS
networks:
  homelab:
    driver: bridge
    external: true