From ae458f7b14ddcb320f5a30ee12edfdd005c438f3 Mon Sep 17 00:00:00 2001 From: Adrien Poupa Date: Fri, 3 Jan 2025 21:55:53 -0500 Subject: [PATCH] feat(calibre-web): Add Calibre-Web --- .env.example | 2 ++ README.md | 18 +++++++++++++++--- docker-compose.yml | 43 +++++++++++++++++++++++++++++++++++++++---- 3 files changed, 56 insertions(+), 7 deletions(-) diff --git a/.env.example b/.env.example index a5b5d06..1aac38d 100644 --- a/.env.example +++ b/.env.example @@ -45,3 +45,5 @@ HOMEPAGE_VAR_WEATHER_LAT= HOMEPAGE_VAR_WEATHER_LONG= HOMEPAGE_VAR_WEATHER_UNIT=metric IMMICH_DB_PASSWORD=postgres +CALIBRE_USERNAME=admin +CALIBRE_PASSWORD=admin123 \ No newline at end of file diff --git a/README.md b/README.md index be12ac7..71ad3c1 100644 --- a/README.md +++ b/README.md @@ -76,9 +76,10 @@ I am running it in Ubuntu Server 22.04; I also tested this setup on a [Synology | [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr) | Optional - Proxy server to bypass Cloudflare protection in Prowlarr
Enable with `COMPOSE_PROFILES=flaresolverr` | [flaresolverr/flaresolverr](https://hub.docker.com/r/flaresolverr/flaresolverr) | | | [AdGuard Home](https://adguard.com/en/adguard-home/overview.html) | Optional - Network-wide software for blocking ads & tracking
Enable with `COMPOSE_PROFILES=adguardhome` | [adguard/adguardhome](https://hub.docker.com/r/adguard/adguardhome) | | | [Tandoor](https://tandoor.dev) | Optional - Smart recipe management
Enable with `COMPOSE_PROFILES=tandoor` | [vabene1111/recipes](https://hub.docker.com/r/vabene1111/recipes) | /recipes | -| [Joplin](https://joplinapp.org/) | Optional - Note taking application
Enable with `COMPOSE_PROFILES=joplin` | [joplin/server](https://hub.docker.com/r/joplin/server) | /joplin | -| [Home Assistant](https://www.home-assistant.io/) | Optional - Open source home automation that puts local control and privacy first
Enable with `COMPOSE_PROFILES=homeassistant` | [home-assistant/home-assistant:stable](https://ghcr.io/home-assistant/home-assistant) | | -| [Immich](https://immich.app//) | Optional - Self-hosted photo and video management solution
Enable with `COMPOSE_PROFILES=immich` | [immich-app/immich-server:release](https://ghcr.io/immich-app/immich-server) | | +| [Joplin](https://joplinapp.org) | Optional - Note taking application
Enable with `COMPOSE_PROFILES=joplin` | [joplin/server](https://hub.docker.com/r/joplin/server) | /joplin | +| [Home Assistant](https://www.home-assistant.io) | Optional - Open source home automation that puts local control and privacy first
Enable with `COMPOSE_PROFILES=homeassistant` | [home-assistant/home-assistant:stable](https://ghcr.io/home-assistant/home-assistant) | | +| [Immich](https://immich.app) | Optional - Self-hosted photo and video management solution
Enable with `COMPOSE_PROFILES=immich` | [immich-app/immich-server:release](https://ghcr.io/immich-app/immich-server) | | +| [Calibre-Web](https://github.com/janeczku/calibre-web) | Optional - Web app for browsing, reading and downloading eBooks stored in a Calibre database
Enable with `COMPOSE_PROFILES=calibre-web` | [linuxserver/calibre-web](https://hub.docker.com/r/linuxserver/calibre-web) | /calibre | Optional containers are not enabled by default, they need to be enabled, see [Optional Services](#optional-services) for more information. @@ -135,6 +136,8 @@ If you want to show Jellyfin information in the homepage, create it in Jellyfin | `HOMEPAGE_VAR_WEATHER_LAT` | Homepage weather city latitude | | | `HOMEPAGE_VAR_WEATHER_LONG` | Homepage weather city longitude | | | `HOMEPAGE_VAR_WEATHER_UNIT` | Homepage weather unit, either `metric` or `imperial` | `metric` | +| `CALIBRE_USERNAME` | Optional - Calibre-Web username to show details in the homepage, if enabled | `admin` | +| `CALIBRE_PASSWORD` | Optional - Calibre-Web password to show details in the homepage, if enabled | `admin123` | ## PIA WireGuard VPN @@ -394,6 +397,15 @@ See [here](./homeassistant/README.md). See [here](./immich/README.md). +### Calibre-Web + +On the initial setup screen, enter `/books` as your calibre library location. + +**Default admin login:** Username: `admin` Password: `admin123`. + +Unrar is included by default and needs to be set in the Calibre-Web admin page (Basic Configuration:External Binaries) +with a path of `/usr/bin/unrar`. + ## Customization You can override the configuration of a service or add new services by creating a new `docker-compose.override.yml` file, diff --git a/docker-compose.yml b/docker-compose.yml index 919af54..92f9630 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -226,7 +226,7 @@ services: - homepage.icon=jellyseerr.png - homepage.href=/jellyseerr - homepage.description=Content Recommendations and Request Management - - homepage.weight=2 + - homepage.weight=3 - homepage.widget.type=jellyseerr - homepage.widget.url=http://jellyseerr:5055 - homepage.widget.key=${JELLYSEERR_API_KEY} @@ -353,7 +353,7 @@ services: retries: 3 restart: always unpackerr: - image: golift/unpackerr + image: golift/unpackerr:latest container_name: unpackerr volumes: - ${DOWNLOAD_ROOT}:/data/torrents @@ -396,7 +396,7 @@ services: profiles: - sabnzbd jellyfin: - image: lscr.io/linuxserver/jellyfin + image: lscr.io/linuxserver/jellyfin:latest container_name: jellyfin environment: - PUID=${USER_ID} @@ -425,10 +425,45 @@ services: - homepage.icon=jellyfin.png - homepage.href=/jellyfin - homepage.description=Media server - - homepage.weight=3 + - homepage.weight=4 - homepage.widget.type=jellyfin - homepage.widget.url=http://jellyfin:8096/jellyfin - homepage.widget.key=${JELLYFIN_API_KEY} + calibre-web: + image: lscr.io/linuxserver/calibre-web:latest + container_name: calibre-web + environment: + - PUID=${USER_ID} + - PGID=${GROUP_ID} + - TZ=${TIMEZONE} + - DOCKER_MODS=linuxserver/mods:universal-calibre + - OAUTHLIB_RELAX_TOKEN_SCOPE=1 + volumes: + - ${CONFIG_ROOT:-.}/calibre-web:/config + - ${DATA_ROOT}/books:/books + restart: unless-stopped + labels: + - traefik.enable=true + - traefik.http.middlewares.calibre-headers.headers.customRequestHeaders.X-Scheme=https + - traefik.http.middlewares.calibre-headers.headers.customRequestHeaders.X-Script-Name=/calibre + - traefik.http.middlewares.calibre-stripprefixregex.stripPrefixRegex.regex=/calibre + - traefik.http.routers.calibre.middlewares=calibre-headers,calibre-stripprefixregex + - traefik.http.routers.calibre.rule=(Host(`${HOSTNAME}`) && PathPrefix(`/calibre`)) + - traefik.http.routers.calibre.tls=true + - traefik.http.routers.calibre.tls.certresolver=myresolver + - traefik.http.services.calibre.loadbalancer.server.port=8083 + - homepage.group=Media + - homepage.name=calibre + - homepage.icon=calibre-web.png + - homepage.href=/calibre + - homepage.description=Books management + - homepage.weight=5 + - homepage.widget.type=calibreweb + - homepage.widget.url=http://calibre:8083/calibre + - homepage.widget.username=${CALIBRE_USERNAME} + - homepage.widget.password=${CALIBRE_PASSWORD} + profiles: + - calibre-web homepage: image: ghcr.io/gethomepage/homepage:latest container_name: homepage