Retire kosync and dir2opds now that Kavita handles both
Kavita's KOReader sync API and OPDS feed replace them, and both readers (Kindle KOReader, Xteink X4) now point at books.thesatelliteoflove.com. Drops their stacks, the sync. and opds. routes and DNS records, and the htpasswd tasks that only existed for dir2opds basic auth. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -47,10 +47,6 @@
|
|||||||
ip: "{{ network.netcup_ip }}"
|
ip: "{{ network.netcup_ip }}"
|
||||||
- name: pdg
|
- name: pdg
|
||||||
ip: "{{ network.netcup_ip }}"
|
ip: "{{ network.netcup_ip }}"
|
||||||
- name: opds
|
|
||||||
ip: "{{ network.netcup_ip }}"
|
|
||||||
- name: sync
|
|
||||||
ip: "{{ network.netcup_ip }}"
|
|
||||||
- name: gokapi
|
- name: gokapi
|
||||||
ip: "{{ network.netcup_ip }}"
|
ip: "{{ network.netcup_ip }}"
|
||||||
- name: id
|
- name: id
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ subdomains:
|
|||||||
gotify: "gotify.{{ primary_domain }}" # Gotify notifications
|
gotify: "gotify.{{ primary_domain }}" # Gotify notifications
|
||||||
gotify_assistant: "gotify-assistant.{{ primary_domain }}" # iGotify iOS assistant
|
gotify_assistant: "gotify-assistant.{{ primary_domain }}" # iGotify iOS assistant
|
||||||
listmonk: "listmonk.{{ secondary_domain }}" # Listmonk mailing list
|
listmonk: "listmonk.{{ secondary_domain }}" # Listmonk mailing list
|
||||||
dir2opds: "opds.{{ primary_domain }}" # dir2opds OPDS catalog
|
|
||||||
kosync: "sync.{{ primary_domain }}" # KOReader sync server
|
|
||||||
gokapi: "gokapi.{{ primary_domain }}" # Gokapi file sharing
|
gokapi: "gokapi.{{ primary_domain }}" # Gokapi file sharing
|
||||||
pocketid: "id.{{ primary_domain }}" # Pocket ID passkey OIDC
|
pocketid: "id.{{ primary_domain }}" # Pocket ID passkey OIDC
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
service_categories:
|
service_categories:
|
||||||
infrastructure: ["caddy", "authentik", "dockge"]
|
infrastructure: ["caddy", "authentik", "dockge"]
|
||||||
development: ["gitea", "bytestash"]
|
development: ["gitea", "bytestash"]
|
||||||
media: ["audiobookshelf", "kavita", "dir2opds", "hoarder", "kosync", "manyfold"]
|
media: ["audiobookshelf", "kavita", "hoarder", "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"]
|
||||||
|
|||||||
@@ -5,41 +5,6 @@
|
|||||||
loop:
|
loop:
|
||||||
- /opt/stacks/caddy
|
- /opt/stacks/caddy
|
||||||
|
|
||||||
- name: Install apache2-utils for htpasswd
|
|
||||||
ansible.builtin.apt:
|
|
||||||
name: apache2-utils
|
|
||||||
state: present
|
|
||||||
update_cache: true
|
|
||||||
cache_valid_time: 3600
|
|
||||||
become: true
|
|
||||||
when: vault_dir2opds is defined
|
|
||||||
|
|
||||||
# bcrypt uses a random salt, so a fresh hash would change the Caddyfile (and
|
|
||||||
# restart Caddy) on every run. Reuse the deployed hash while it still matches
|
|
||||||
# the vault password; only make a new one when it doesn't.
|
|
||||||
- name: Get bcrypt hash for dir2opds basic auth
|
|
||||||
ansible.builtin.shell: |
|
|
||||||
set -eu
|
|
||||||
cur=$(awk -v u="$AUTH_USER" '/basic_?auth/ {b=1} b && $1 == u {print $2; exit}' \
|
|
||||||
/opt/stacks/caddy/Caddyfile 2>/dev/null || true)
|
|
||||||
if [ -n "$cur" ]; then
|
|
||||||
tmp=$(mktemp); trap 'rm -f "$tmp"' EXIT
|
|
||||||
printf '%s:%s\n' "$AUTH_USER" "$cur" > "$tmp"
|
|
||||||
if htpasswd -vb "$tmp" "$AUTH_USER" "$AUTH_PASS" >/dev/null 2>&1; then
|
|
||||||
echo "$AUTH_USER $cur"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
htpasswd -bnB "$AUTH_USER" "$AUTH_PASS" | awk -F: 'NF {print $1, $2}'
|
|
||||||
environment:
|
|
||||||
AUTH_USER: "{{ vault_dir2opds.basic_auth_user }}"
|
|
||||||
AUTH_PASS: "{{ vault_dir2opds.basic_auth_password }}"
|
|
||||||
register: dir2opds_basic_auth_hash_result
|
|
||||||
changed_when: false
|
|
||||||
check_mode: false
|
|
||||||
no_log: true
|
|
||||||
when: vault_dir2opds is defined
|
|
||||||
|
|
||||||
- name: template Caddyfile
|
- name: template Caddyfile
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
src: Caddyfile.j2
|
src: Caddyfile.j2
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
- name: make dir2opds directories
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: "{{ item}}"
|
|
||||||
state: directory
|
|
||||||
loop:
|
|
||||||
- /opt/stacks/dir2opds
|
|
||||||
|
|
||||||
- name: make dir2opds book directories
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: "{{ item}}"
|
|
||||||
state: directory
|
|
||||||
loop:
|
|
||||||
- /opt/stacks/dir2opds/books
|
|
||||||
|
|
||||||
- name: Template out the compose file
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: dir2opds-compose.yml.j2
|
|
||||||
dest: /opt/stacks/dir2opds/compose.yml
|
|
||||||
owner: root
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: deploy dir2opds stack
|
|
||||||
community.docker.docker_compose_v2:
|
|
||||||
project_src: /opt/stacks/dir2opds
|
|
||||||
files:
|
|
||||||
- compose.yml
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
- name: make kosync directories
|
|
||||||
ansible.builtin.file:
|
|
||||||
path: "{{ item }}"
|
|
||||||
state: directory
|
|
||||||
loop:
|
|
||||||
- /opt/stacks/kosync
|
|
||||||
- /opt/stacks/kosync/logs/app
|
|
||||||
- /opt/stacks/kosync/logs/redis
|
|
||||||
- /opt/stacks/kosync/data/redis
|
|
||||||
|
|
||||||
- name: Template out the compose file
|
|
||||||
ansible.builtin.template:
|
|
||||||
src: kosync-compose.yml.j2
|
|
||||||
dest: /opt/stacks/kosync/compose.yml
|
|
||||||
owner: root
|
|
||||||
mode: '0644'
|
|
||||||
|
|
||||||
- name: deploy kosync stack
|
|
||||||
community.docker.docker_compose_v2:
|
|
||||||
project_src: /opt/stacks/kosync
|
|
||||||
files:
|
|
||||||
- compose.yml
|
|
||||||
@@ -22,10 +22,3 @@
|
|||||||
import_tasks: manyfold.yml
|
import_tasks: manyfold.yml
|
||||||
tags: manyfold
|
tags: manyfold
|
||||||
|
|
||||||
- name: Install dir2opds
|
|
||||||
import_tasks: dir2opds.yml
|
|
||||||
tags: dir2opds
|
|
||||||
|
|
||||||
- name: Install koreader sync server
|
|
||||||
import_tasks: kosync.yml
|
|
||||||
tags: kosync
|
|
||||||
|
|||||||
@@ -126,19 +126,7 @@ repaircafe.nerder.land {
|
|||||||
redir /volunteer-signup https://listmonk.nerder.land/subscription/form 301
|
redir /volunteer-signup https://listmonk.nerder.land/subscription/form 301
|
||||||
}
|
}
|
||||||
|
|
||||||
{% if vault_dir2opds is defined %}
|
|
||||||
opds.thesatelliteoflove.com {
|
|
||||||
basicauth {
|
|
||||||
{{ dir2opds_basic_auth_hash_result.stdout }}
|
|
||||||
}
|
|
||||||
reverse_proxy dir2opds:8080
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
gokapi.thesatelliteoflove.com {
|
gokapi.thesatelliteoflove.com {
|
||||||
reverse_proxy gokapi:53842
|
reverse_proxy gokapi:53842
|
||||||
}
|
}
|
||||||
|
|
||||||
sync.thesatelliteoflove.com {
|
|
||||||
reverse_proxy kosync:17200
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
services:
|
|
||||||
dir2opds:
|
|
||||||
image: ghcr.io/dubyte/dir2opds:v1.9.0
|
|
||||||
container_name: dir2opds
|
|
||||||
ports:
|
|
||||||
- "{{ network.docker_host_ip }}:8080:8080"
|
|
||||||
volumes:
|
|
||||||
- ./books:/books
|
|
||||||
command:
|
|
||||||
- -dir=/books
|
|
||||||
- -extract-metadata
|
|
||||||
- -enable-cache
|
|
||||||
- -gzip
|
|
||||||
- -enable-html
|
|
||||||
- -url=https://{{ subdomains.dir2opds }}
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
mag37.dockcheck.update: true
|
|
||||||
networks:
|
|
||||||
default:
|
|
||||||
external: true
|
|
||||||
name: {{ docker.network_name }}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
---
|
|
||||||
services:
|
|
||||||
kosync:
|
|
||||||
image: koreader/kosync:latest
|
|
||||||
container_name: kosync
|
|
||||||
environment:
|
|
||||||
- ENABLE_USER_REGISTRATION=false
|
|
||||||
volumes:
|
|
||||||
- ./logs/app:/app/koreader-sync-server/logs
|
|
||||||
- ./logs/redis:/var/log/redis
|
|
||||||
- ./data/redis:/var/lib/redis
|
|
||||||
restart: unless-stopped
|
|
||||||
labels:
|
|
||||||
mag37.dockcheck.update: true
|
|
||||||
networks:
|
|
||||||
default:
|
|
||||||
external: true
|
|
||||||
name: {{ docker.network_name }}
|
|
||||||
Reference in New Issue
Block a user