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:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
@@ -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 }}"
|
||||||
|
|||||||
@@ -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"]
|
||||||
|
|||||||
@@ -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...)
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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 }}
|
|
||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user