From 6a0819059b5b259c19aa4e7d6e2828e885bbb090 Mon Sep 17 00:00:00 2001 From: Phil Date: Sat, 31 Oct 2026 08:35:22 -0600 Subject: [PATCH] Move books. from Calibre-Web to Kavita Kavita now serves books.thesatelliteoflove.com with Pocket ID login (password login is off), and the temporary kavita. subdomain is gone. Calibre-Web's stack is removed; its calibre_books and calibre_config volumes stay on docker-01 as a fallback for now. Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 2 +- README.md | 4 +-- dns.yml | 2 -- group_vars/all/domains.yml | 3 +-- group_vars/docker/services.yml | 2 +- roles/docker/README.md | 4 +-- roles/docker/tasks/media/calibre.yml | 19 -------------- roles/docker/tasks/media/main.yml | 4 --- roles/docker/templates/Caddyfile.j2 | 6 +---- roles/docker/templates/calibre-compose.yml.j2 | 26 ------------------- todo.md | 2 +- 11 files changed, 9 insertions(+), 65 deletions(-) delete mode 100644 roles/docker/tasks/media/calibre.yml delete mode 100644 roles/docker/templates/calibre-compose.yml.j2 diff --git a/CLAUDE.md b/CLAUDE.md index f32f29a..8cc3595 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -94,7 +94,7 @@ The docker role is now organized into logical service groups under `roles/docker - **development/**: Development and collaboration tools - Gitea, ByteStash - **media/**: Content creation and consumption - - Audiobookshelf, Calibre, Karakeep (formerly Hoarder), Manyfold + - Audiobookshelf, Kavita, Karakeep (formerly Hoarder), Manyfold - **productivity/**: Personal organization and document management - Paperless-NGX, Baikal (CalDAV/CardDAV), Syncthing, Heyform, Dawarich, Obsidian LiveSync - **communication/**: Social media diff --git a/README.md b/README.md index db6234c..d006783 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ The Docker role deploys and manages 21 self-hosted services organized into logic ### Media - **Audiobookshelf** (Audiobook server) -- **Calibre** (E-book management) +- **Kavita** (E-book server) - **Karakeep** (Bookmark manager, formerly Hoarder) - **Manyfold** (3D model organizer) @@ -86,7 +86,7 @@ Manages scheduled tasks and automation: The most comprehensive role, deploying 21 containerized services organized into logical categories: - **Infrastructure**: Caddy reverse proxy, Authentik SSO, Dockge management - **Development**: Gitea, ByteStash -- **Media**: Audiobookshelf, Calibre, Karakeep, Manyfold +- **Media**: Audiobookshelf, Kavita, Karakeep, Manyfold - **Productivity**: Paperless-NGX, Baikal, Syncthing, HeyForm, Dawarich, Obsidian LiveSync - **Communication**: GoToSocial - **Monitoring**: Changedetection, AppriseAPI, Gotify, Cronmaster diff --git a/dns.yml b/dns.yml index 31678f1..c71bf8b 100644 --- a/dns.yml +++ b/dns.yml @@ -55,8 +55,6 @@ ip: "{{ network.netcup_ip }}" - name: id ip: "{{ network.netcup_ip }}" - - name: kavita - ip: "{{ network.netcup_ip }}" - name: nerder.land dns_records: - name: "forms" diff --git a/group_vars/all/domains.yml b/group_vars/all/domains.yml index f84db14..8b9fbf4 100644 --- a/group_vars/all/domains.yml +++ b/group_vars/all/domains.yml @@ -12,8 +12,7 @@ subdomains: heyform: "forms.{{ secondary_domain }}" # Heyform on nerder.land media: "media.{{ primary_domain }}" audio: "audio.{{ primary_domain }}" # Audiobookshelf - books: "books.{{ primary_domain }}" # Calibre - kavita: "kavita.{{ primary_domain }}" # Kavita (temporary, moves to books) + books: "books.{{ primary_domain }}" # Kavita models: "models.{{ primary_domain }}" # Manyfold paper: "paper.{{ primary_domain }}" # Paperless-NGX syncthing: "syncthing.{{ primary_domain }}" diff --git a/group_vars/docker/services.yml b/group_vars/docker/services.yml index ca56111..dc9072f 100644 --- a/group_vars/docker/services.yml +++ b/group_vars/docker/services.yml @@ -4,7 +4,7 @@ service_categories: infrastructure: ["caddy", "authentik", "dockge"] development: ["gitea", "bytestash"] - media: ["audiobookshelf", "calibre", "kavita", "dir2opds", "hoarder", "kosync", "manyfold"] + media: ["audiobookshelf", "kavita", "dir2opds", "hoarder", "kosync", "manyfold"] productivity: ["paperlessngx", "baikal", "syncthing", "heyform", "dawarich", "obsidian-livesync", "gokapi"] communication: ["gotosocial", "listmonk"] monitoring: ["changedetection", "appriseapi", "gotify", "cronmaster"] diff --git a/roles/docker/README.md b/roles/docker/README.md index 01eff6f..b0eb69e 100644 --- a/roles/docker/README.md +++ b/roles/docker/README.md @@ -32,7 +32,7 @@ Deploys and manages a comprehensive self-hosted infrastructure with 24 container ### Media (`media/`) - **Audiobookshelf** - Audiobook and podcast server -- **Calibre** - E-book management and conversion +- **Kavita** - E-book server (Pocket ID login) - **Ghost** - Modern blogging platform - **Pinchflat** - YouTube video archiving - **Pinry** - Pinterest-like image board @@ -183,7 +183,7 @@ The role uses a centralized variable hierarchy in `group_vars/all/`: Services expect to be accessible via subdomains of configured domains: - `auth.thesatelliteoflove.com` - Authentik - `git.thesatelliteoflove.com` - Gitea -- `books.thesatelliteoflove.com` - Calibre +- `books.thesatelliteoflove.com` - Kavita - `tasks.thesatelliteoflove.com` - MMDL - (and many more...) diff --git a/roles/docker/tasks/media/calibre.yml b/roles/docker/tasks/media/calibre.yml deleted file mode 100644 index 1d9c26e..0000000 --- a/roles/docker/tasks/media/calibre.yml +++ /dev/null @@ -1,19 +0,0 @@ -- name: make calibre directories - ansible.builtin.file: - path: "{{ item}}" - state: directory - loop: - - /opt/stacks/calibre - -- name: Template out the compose file - ansible.builtin.template: - src: calibre-compose.yml.j2 - dest: /opt/stacks/calibre/compose.yml - owner: root - mode: '0644' - -- name: deploy calibre stack - community.docker.docker_compose_v2: - project_src: /opt/stacks/calibre - files: - - compose.yml \ No newline at end of file diff --git a/roles/docker/tasks/media/main.yml b/roles/docker/tasks/media/main.yml index e446071..e5a16db 100644 --- a/roles/docker/tasks/media/main.yml +++ b/roles/docker/tasks/media/main.yml @@ -5,10 +5,6 @@ import_tasks: audiobookshelf.yml tags: audiobookshelf -- name: Install calibre - import_tasks: calibre.yml - tags: calibre - - name: Install kavita import_tasks: kavita.yml tags: kavita diff --git a/roles/docker/templates/Caddyfile.j2 b/roles/docker/templates/Caddyfile.j2 index fedc1c5..ebb2f33 100644 --- a/roles/docker/templates/Caddyfile.j2 +++ b/roles/docker/templates/Caddyfile.j2 @@ -16,11 +16,7 @@ cal.thesatelliteoflove.com { reverse_proxy baikal-baikal-1:80 } -books.thesatelliteoflove.com { - reverse_proxy authentik-server-1:9000 -} - -{{ subdomains.kavita }} { +{{ subdomains.books }} { reverse_proxy kavita:5000 } diff --git a/roles/docker/templates/calibre-compose.yml.j2 b/roles/docker/templates/calibre-compose.yml.j2 deleted file mode 100644 index f972aa7..0000000 --- a/roles/docker/templates/calibre-compose.yml.j2 +++ /dev/null @@ -1,26 +0,0 @@ ---- -services: - calibre-web: - image: lscr.io/linuxserver/calibre-web:latest - container_name: calibre-web - environment: - - PUID=1000 - - PGID=1000 - - TZ=Etc/UTC - - DOCKER_MODS=linuxserver/mods:universal-calibre #optional - - OAUTHLIB_RELAX_TOKEN_SCOPE=1 #optional - volumes: - - config:/config - - books:/books - restart: unless-stopped - labels: - mag37.dockcheck.update: true -volumes: - config: - driver: local - books: - driver: local -networks: - default: - external: true - name: {{ docker.network_name }} \ No newline at end of file diff --git a/todo.md b/todo.md index d270abf..fbd3311 100644 --- a/todo.md +++ b/todo.md @@ -10,7 +10,7 @@ ├── main.yml (orchestrator) ├── infrastructure/ (caddy, authentik, dockge) ├── development/ (gitea, codeserver, bytestash) - ├── media/ (audiobookshelf, calibre, ghost, pinchflat, pinry, hoarder, manyfold) + ├── media/ (audiobookshelf, kavita, ghost, pinchflat, pinry, hoarder, manyfold) ├── productivity/ (paperless, baikal, syncthing, mmdl, heyform, dawarich, palmr, obsidian-livesync) ├── communication/ (gotosocial, postiz) └── monitoring/ (changedetection, appriseapi, gotify)