diff --git a/_snippets/common-links.md b/_snippets/common-links.md index d315411..5533e26 100644 --- a/_snippets/common-links.md +++ b/_snippets/common-links.md @@ -17,6 +17,7 @@ [homeassistant]: /recipes/homeassistant/ [jackett]: /recipes/autopirate/jackett/ [jellyfin]: /recipes/jellyfin/ +[kavita]: /recipes/kavita/ [keycloak]: /recipes/keycloak/ [komga]: /recipes/komga/ [lazylibrarian]: /recipes/autopirate/lazylibrarian/ diff --git a/_snippets/recipe-standard-ingredients.md b/_snippets/recipe-standard-ingredients.md index b0cb476..3d5779f 100644 --- a/_snippets/recipe-standard-ingredients.md +++ b/_snippets/recipe-standard-ingredients.md @@ -9,4 +9,4 @@ Related: - * [X] [Traefik Forward Auth](/docker-swarm/traefik-forward-auth/) to secure your Traefik-exposed services with an additional layer of authentication + * [X] [Traefik Forward Auth][tfa] or [Authelia][authelia] to secure your Traefik-exposed services with an additional layer of authentication\ diff --git a/manuscript/images/kavita.png b/manuscript/images/kavita.png new file mode 100644 index 0000000..808e0f2 Binary files /dev/null and b/manuscript/images/kavita.png differ diff --git a/manuscript/recent-changes.md b/manuscript/recent-changes.md index 90ce421..dfd4690 100644 --- a/manuscript/recent-changes.md +++ b/manuscript/recent-changes.md @@ -8,22 +8,23 @@ hide: Recipe | Description | Date -------------------------|------------------------------------------------------------------------------------------------------------------|-------------- +[Kavita][kavita] | "Rocket-fueled" reader for manga/comics/ebooks, able to save reading position across devices/sessions | _27 Jul 2022_ [Authelia][authelia] | Authentication and two factor authorization server with Authelia | _1 Nov 2021_ [Prowlarr][prowlarr] | An indexer manager/proxy built on the popular arr .net/reactjs base stack to integrate with the [AutoPirate][autopirate] friends | _27 Oct 2021_ [Archivebox][archivebox] | Website Archiving service to save websites to view offline | _19 Oct 2021_ [Readarr][readarr] | [Autopirate][autopirate] component to grab and manage eBooks (*think "Sonarr/Radarr for books*") | _18 Oct 2021_ [Paperless-NG][paperless-ng] | Organize, index, search, and view all your documents | _14 Oct 2021_ [RSS-Bridge][rss-bridge] | Consume content from non-open platforms (*Facebook, Instagram, etc*) in your feed reader | _1 Oct 2021_ -[NightScout][nightscout] | Share your CGM :drop_of_blood: data, setup advanced alarms and charts, for improved diabetes treatment :syringe: and quality-of-life :runner: | _9 Aug 2021_ ## Recent updates Recipe | Description | Date ----------------------------|---------------------------------------------------------------------------------|-------------- +[Authelia][authelia] | Updated with test services, fixed errors | _27 Jul 2022_ [Minio][minio] | Major update to Minio recipe, for new Console UI and Traefik v2 | _22 Oct 2021_ [Traefik Forward Auth][tfa] | Major update for Traefik v2, included instructions for Dex, Google, Keycloak | _29 Jan 2021_ [Autopirate][autopirate] | Updated all components for Traefik v2 labels | _29 Jan 2021_ -[Portainer][portainer] | Bump to version 2, bringing "expert simplicity" to your Docker stack management | _25 Jan 2021_ + ## Subscribe to updates diff --git a/manuscript/recipes/kavita.md b/manuscript/recipes/kavita.md new file mode 100644 index 0000000..9348f05 --- /dev/null +++ b/manuscript/recipes/kavita.md @@ -0,0 +1,86 @@ +--- +title: Kavita Reader in Docker - Read ebooks / Manga / Comics +description: Here's a recipe to run Kavita under Docker Swarm to read your comics / manga / ebooks +--- + +# Kavita Reader in Docker Swarm + +So you've just watched a bunch of superhero movies, and you're suddenly inspired to deep-dive into the weird world of comic books? You're already rocking [AutoPirate](/recipes/autopirate/) with [Mylar](/recipes/autopirate/mylar/) and [NZBGet](/recipes/autopirate/nzbget/) to grab content, but how to manage and enjoy your growing collection? + +![Kavita Screenshot](/images/kavita.png){ loading=lazy } + +[Kavita Reader](https://www.kavitareader.com) is a "*rocket fueled self-hosted digital library which supports a vast array of file formats*". Primarily used for cosuming Manga (*but quite capable of managing ebooks too*), Kavita's killer feature is an OPDS server for integration with other mobile apps such as [Chunky on iPad](http://chunkyreader.com/), and the ability to save your reading position across multiple devices. + +There's a [public demo available](https://www.kavitareader.com/#demo) too! + +--8<-- "recipe-standard-ingredients.md" + * [X] [AutoPirate](/recipes/autopirate/) components (*specifically [Mylar](/recipes/autopirate/mylar/)*), for searching for, downloading, and managing comic books + +## Preparation + +### Setup data locations + +First we create a directory to hold the kavita database, logs and other persistent data: + +```bash +mkdir /var/data/kavita +``` + +### Setup Docker Swarm + +Create a docker swarm config file in docker-compose syntax (v3), something like this: + +--8<-- "premix-cta.md" + +```yaml title="/var/data/config/kavita.yml" +version: "3.2" # https://docs.docker.com/compose/compose-file/compose-versioning/#version-3 + +services: + kavita: + image: kizaing/kavita:latest + env_file: /var/data/config/kavita/kavita.env + volumes: + - /var/data/kavita:/kavita/config + deploy: + labels: + # traefik + - traefik.enable=true + - traefik.docker.network=traefik_public + + # traefikv1 + - traefik.frontend.rule=Host:kavita.example.com + - traefik.port=8000 + + # traefikv2 + - "traefik.http.routers.kavita.rule=Host(`kavita.example.com`)" + - "traefik.http.routers.kavita.entrypoints=https" + - "traefik.http.services.kavita.loadbalancer.server.port=5000" + + # uncomment for traefik-forward-auth (1) + # - "traefik.http.routers.radarr.middlewares=forward-auth" + + # uncomment for authelia (2) + # - "traefik.http.routers.radarr.middlewares=authelia" + + networks: + - traefik_public + +networks: + traefik_public: + external: true +``` + +1. Uncomment to protect Kavita with an additional layer of authentication, using [Traefik Forward Auth][tfa] +2. Uncomment to protect Kavita with an additional layer of authentication, using [Authelia][authelia] + +## Serving + +### Avengers Assemble! + +Launch the Kavita stack by running ```docker stack deploy kavita -c ``` + +Log into your new instance at https://**YOUR-FQDN**. Since it's a fresh installation, Kavita will prompt you to setup a username and password, after which you'll be able to setup your library, and tweak all teh butt0ns! + +[^1]: Since Kavita doesn't need to communicate with any other services, we don't need a separate overlay network for it. Provided Traefik can reach kavita via the `traefik_public` overlay network, we've got all we need. + +--8<-- "recipe-footer.md" diff --git a/mkdocs.yml b/mkdocs.yml index 54ce6ab..901aace 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -118,6 +118,7 @@ nav: - OIDC Provider: recipes/keycloak/setup-oidc-provider.md - OpenLDAP: recipes/keycloak/authenticate-against-openldap.md - Komga: recipes/komga.md + - Kavita: recipes/kavita.md - Linx: recipes/linx.md - Mealie: recipes/mealie.md - Minio: recipes/minio.md