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 <noreply@anthropic.com>
This commit is contained in:
Phil
2026-10-31 09:31:14 -06:00
co-authored by Claude Opus 5.5
parent 0875389d02
commit 6a0819059b
11 changed files with 9 additions and 65 deletions
+1 -1
View File
@@ -94,7 +94,7 @@ The docker role is now organized into logical service groups under `roles/docker
- **development/**: Development and collaboration tools - **development/**: Development and collaboration tools
- Gitea, ByteStash - Gitea, ByteStash
- **media/**: Content creation and consumption - **media/**: Content creation and consumption
- Audiobookshelf, Calibre, Karakeep (formerly Hoarder), Manyfold - Audiobookshelf, Kavita, Karakeep (formerly Hoarder), Manyfold
- **productivity/**: Personal organization and document management - **productivity/**: Personal organization and document management
- Paperless-NGX, Baikal (CalDAV/CardDAV), Syncthing, Heyform, Dawarich, Obsidian LiveSync - Paperless-NGX, Baikal (CalDAV/CardDAV), Syncthing, Heyform, Dawarich, Obsidian LiveSync
- **communication/**: Social media - **communication/**: Social media
+2 -2
View File
@@ -23,7 +23,7 @@ The Docker role deploys and manages 21 self-hosted services organized into logic
### Media ### Media
- **Audiobookshelf** (Audiobook server) - **Audiobookshelf** (Audiobook server)
- **Calibre** (E-book management) - **Kavita** (E-book server)
- **Karakeep** (Bookmark manager, formerly Hoarder) - **Karakeep** (Bookmark manager, formerly Hoarder)
- **Manyfold** (3D model organizer) - **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: The most comprehensive role, deploying 21 containerized services organized into logical categories:
- **Infrastructure**: Caddy reverse proxy, Authentik SSO, Dockge management - **Infrastructure**: Caddy reverse proxy, Authentik SSO, Dockge management
- **Development**: Gitea, ByteStash - **Development**: Gitea, ByteStash
- **Media**: Audiobookshelf, Calibre, Karakeep, Manyfold - **Media**: Audiobookshelf, Kavita, Karakeep, Manyfold
- **Productivity**: Paperless-NGX, Baikal, Syncthing, HeyForm, Dawarich, Obsidian LiveSync - **Productivity**: Paperless-NGX, Baikal, Syncthing, HeyForm, Dawarich, Obsidian LiveSync
- **Communication**: GoToSocial - **Communication**: GoToSocial
- **Monitoring**: Changedetection, AppriseAPI, Gotify, Cronmaster - **Monitoring**: Changedetection, AppriseAPI, Gotify, Cronmaster
-2
View File
@@ -55,8 +55,6 @@
ip: "{{ network.netcup_ip }}" ip: "{{ network.netcup_ip }}"
- name: id - name: id
ip: "{{ network.netcup_ip }}" ip: "{{ network.netcup_ip }}"
- name: kavita
ip: "{{ network.netcup_ip }}"
- name: nerder.land - name: nerder.land
dns_records: dns_records:
- name: "forms" - name: "forms"
+1 -2
View File
@@ -12,8 +12,7 @@ subdomains:
heyform: "forms.{{ secondary_domain }}" # Heyform on nerder.land heyform: "forms.{{ secondary_domain }}" # Heyform on nerder.land
media: "media.{{ primary_domain }}" media: "media.{{ primary_domain }}"
audio: "audio.{{ primary_domain }}" # Audiobookshelf audio: "audio.{{ primary_domain }}" # Audiobookshelf
books: "books.{{ primary_domain }}" # Calibre books: "books.{{ primary_domain }}" # Kavita
kavita: "kavita.{{ primary_domain }}" # Kavita (temporary, moves to books)
models: "models.{{ primary_domain }}" # Manyfold models: "models.{{ primary_domain }}" # Manyfold
paper: "paper.{{ primary_domain }}" # Paperless-NGX paper: "paper.{{ primary_domain }}" # Paperless-NGX
syncthing: "syncthing.{{ primary_domain }}" syncthing: "syncthing.{{ primary_domain }}"
+1 -1
View File
@@ -4,7 +4,7 @@
service_categories: service_categories:
infrastructure: ["caddy", "authentik", "dockge"] infrastructure: ["caddy", "authentik", "dockge"]
development: ["gitea", "bytestash"] 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"] productivity: ["paperlessngx", "baikal", "syncthing", "heyform", "dawarich", "obsidian-livesync", "gokapi"]
communication: ["gotosocial", "listmonk"] communication: ["gotosocial", "listmonk"]
monitoring: ["changedetection", "appriseapi", "gotify", "cronmaster"] monitoring: ["changedetection", "appriseapi", "gotify", "cronmaster"]
+2 -2
View File
@@ -32,7 +32,7 @@ Deploys and manages a comprehensive self-hosted infrastructure with 24 container
### Media (`media/`) ### Media (`media/`)
- **Audiobookshelf** - Audiobook and podcast server - **Audiobookshelf** - Audiobook and podcast server
- **Calibre** - E-book management and conversion - **Kavita** - E-book server (Pocket ID login)
- **Ghost** - Modern blogging platform - **Ghost** - Modern blogging platform
- **Pinchflat** - YouTube video archiving - **Pinchflat** - YouTube video archiving
- **Pinry** - Pinterest-like image board - **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: Services expect to be accessible via subdomains of configured domains:
- `auth.thesatelliteoflove.com` - Authentik - `auth.thesatelliteoflove.com` - Authentik
- `git.thesatelliteoflove.com` - Gitea - `git.thesatelliteoflove.com` - Gitea
- `books.thesatelliteoflove.com` - Calibre - `books.thesatelliteoflove.com` - Kavita
- `tasks.thesatelliteoflove.com` - MMDL - `tasks.thesatelliteoflove.com` - MMDL
- (and many more...) - (and many more...)
-19
View File
@@ -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
-4
View File
@@ -5,10 +5,6 @@
import_tasks: audiobookshelf.yml import_tasks: audiobookshelf.yml
tags: audiobookshelf tags: audiobookshelf
- name: Install calibre
import_tasks: calibre.yml
tags: calibre
- name: Install kavita - name: Install kavita
import_tasks: kavita.yml import_tasks: kavita.yml
tags: kavita tags: kavita
+1 -5
View File
@@ -16,11 +16,7 @@ cal.thesatelliteoflove.com {
reverse_proxy baikal-baikal-1:80 reverse_proxy baikal-baikal-1:80
} }
books.thesatelliteoflove.com { {{ subdomains.books }} {
reverse_proxy authentik-server-1:9000
}
{{ subdomains.kavita }} {
reverse_proxy kavita:5000 reverse_proxy kavita:5000
} }
@@ -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 }}
+1 -1
View File
@@ -10,7 +10,7 @@
├── main.yml (orchestrator) ├── main.yml (orchestrator)
├── infrastructure/ (caddy, authentik, dockge) ├── infrastructure/ (caddy, authentik, dockge)
├── development/ (gitea, codeserver, bytestash) ├── 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) ├── productivity/ (paperless, baikal, syncthing, mmdl, heyform, dawarich, palmr, obsidian-livesync)
├── communication/ (gotosocial, postiz) ├── communication/ (gotosocial, postiz)
└── monitoring/ (changedetection, appriseapi, gotify) └── monitoring/ (changedetection, appriseapi, gotify)