From d1e5fd9d0c63fd3e42435669b48d35ec92422d58 Mon Sep 17 00:00:00 2001 From: Phillip Skentelbery Date: Tue, 30 Jun 2026 17:59:48 -0600 Subject: [PATCH] feat: add koreader sync server + fix apt cache in caddy task --- group_vars/all/domains.yml | 1 + group_vars/docker/services.yml | 2 +- roles/docker/tasks/infrastructure/caddy.yml | 2 ++ roles/docker/tasks/media/kosync.yml | 22 ++++++++++++++++++++ roles/docker/tasks/media/main.yml | 6 +++++- roles/docker/templates/Caddyfile.j2 | 4 ++++ roles/docker/templates/kosync-compose.yml.j2 | 22 ++++++++++++++++++++ 7 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 roles/docker/tasks/media/kosync.yml create mode 100644 roles/docker/templates/kosync-compose.yml.j2 diff --git a/group_vars/all/domains.yml b/group_vars/all/domains.yml index 88f5c2c..b04d786 100644 --- a/group_vars/all/domains.yml +++ b/group_vars/all/domains.yml @@ -27,6 +27,7 @@ subdomains: gotify_assistant: "gotify-assistant.{{ primary_domain }}" # iGotify iOS assistant listmonk: "listmonk.{{ secondary_domain }}" # Listmonk mailing list dir2opds: "opds.{{ primary_domain }}" # dir2opds OPDS catalog + kosync: "sync.{{ primary_domain }}" # KOReader sync server # Email domains for notifications email_domains: diff --git a/group_vars/docker/services.yml b/group_vars/docker/services.yml index 62cfc1a..e69f61c 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", "dir2opds", "hoarder", "manyfold"] + media: ["audiobookshelf", "calibre", "dir2opds", "hoarder", "kosync", "manyfold"] productivity: ["paperlessngx", "baikal", "syncthing", "heyform", "dawarich", "obsidian-livesync"] communication: ["gotosocial", "listmonk"] monitoring: ["glance", "changedetection", "appriseapi", "gotify", "cronmaster"] diff --git a/roles/docker/tasks/infrastructure/caddy.yml b/roles/docker/tasks/infrastructure/caddy.yml index 41f7646..2cfed72 100644 --- a/roles/docker/tasks/infrastructure/caddy.yml +++ b/roles/docker/tasks/infrastructure/caddy.yml @@ -9,6 +9,8 @@ ansible.builtin.apt: name: apache2-utils state: present + update_cache: true + cache_valid_time: 3600 become: true when: vault_dir2opds is defined diff --git a/roles/docker/tasks/media/kosync.yml b/roles/docker/tasks/media/kosync.yml new file mode 100644 index 0000000..0cff60b --- /dev/null +++ b/roles/docker/tasks/media/kosync.yml @@ -0,0 +1,22 @@ +- 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: 644 + +- name: deploy kosync stack + community.docker.docker_compose_v2: + project_src: /opt/stacks/kosync + files: + - compose.yml diff --git a/roles/docker/tasks/media/main.yml b/roles/docker/tasks/media/main.yml index 9dca7b1..169b60f 100644 --- a/roles/docker/tasks/media/main.yml +++ b/roles/docker/tasks/media/main.yml @@ -33,4 +33,8 @@ - name: Install dir2opds import_tasks: dir2opds.yml - tags: dir2opds \ No newline at end of file + tags: dir2opds + +- name: Install koreader sync server + import_tasks: kosync.yml + tags: kosync \ No newline at end of file diff --git a/roles/docker/templates/Caddyfile.j2 b/roles/docker/templates/Caddyfile.j2 index 44f3bbb..4f13211 100644 --- a/roles/docker/templates/Caddyfile.j2 +++ b/roles/docker/templates/Caddyfile.j2 @@ -114,3 +114,7 @@ opds.thesatelliteoflove.com { reverse_proxy dir2opds:8080 } {% endif %} + +sync.thesatelliteoflove.com { + reverse_proxy kosync:17200 +} diff --git a/roles/docker/templates/kosync-compose.yml.j2 b/roles/docker/templates/kosync-compose.yml.j2 new file mode 100644 index 0000000..82ab59d --- /dev/null +++ b/roles/docker/templates/kosync-compose.yml.j2 @@ -0,0 +1,22 @@ +--- +services: + kosync: + image: koreader/kosync:latest + container_name: kosync + environment: + - ENABLE_USER_REGISTRATION=true + volumes: + - ./logs/app:/app/koreader-sync-server/logs + - ./logs/redis:/var/log/redis + - ./data/redis:/var/lib/redis + restart: unless-stopped + labels: + glance.name: KOReader Sync + glance.icon: si:book + glance.url: https://{{ subdomains.kosync }}/ + glance.description: KOReader reading progress sync + mag37.dockcheck.update: true +networks: + default: + external: true + name: {{ docker.network_name }}