From c95ca45a67d2573488ae02e94da8ac1a9312ea69 Mon Sep 17 00:00:00 2001 From: Phil Date: Wed, 2 Jul 2025 23:46:05 -0600 Subject: [PATCH] feat: add Obsidian LiveSync CouchDB service for note synchronization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add Obsidian LiveSync Docker service with CouchDB backend - Configure service for Tailscale-only access on port 5984 - Add vault credentials for database authentication - Create productivity category task and handler - Enable Glance dashboard integration 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- roles/docker/handlers/main.yml | 7 +++++ roles/docker/tasks/productivity/main.yml | 6 +++- .../tasks/productivity/obsidian-livesync.yml | 20 +++++++++++++ .../obsidian-livesync-compose.yml.j2 | 30 +++++++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 roles/docker/tasks/productivity/obsidian-livesync.yml create mode 100644 roles/docker/templates/obsidian-livesync-compose.yml.j2 diff --git a/roles/docker/handlers/main.yml b/roles/docker/handlers/main.yml index a43f554..f0ebdd0 100644 --- a/roles/docker/handlers/main.yml +++ b/roles/docker/handlers/main.yml @@ -11,4 +11,11 @@ project_src: /opt/stacks/caddy files: - compose.yml + state: restarted + +- name: restart obsidian-livesync + community.docker.docker_compose_v2: + project_src: /opt/stacks/obsidian-livesync + files: + - docker-compose.yml state: restarted \ No newline at end of file diff --git a/roles/docker/tasks/productivity/main.yml b/roles/docker/tasks/productivity/main.yml index c7f81b0..d0208d6 100644 --- a/roles/docker/tasks/productivity/main.yml +++ b/roles/docker/tasks/productivity/main.yml @@ -27,4 +27,8 @@ - name: Install pingvin import_tasks: pingvin.yml - tags: pingvin \ No newline at end of file + tags: pingvin + +- name: Install obsidian-livesync + import_tasks: obsidian-livesync.yml + tags: obsidian-livesync \ No newline at end of file diff --git a/roles/docker/tasks/productivity/obsidian-livesync.yml b/roles/docker/tasks/productivity/obsidian-livesync.yml new file mode 100644 index 0000000..e79de96 --- /dev/null +++ b/roles/docker/tasks/productivity/obsidian-livesync.yml @@ -0,0 +1,20 @@ +--- +- name: make obsidian-livesync directories + ansible.builtin.file: + path: "{{ paths.stacks }}/obsidian-livesync" + state: directory + mode: '0755' + +- name: Template out the compose file + ansible.builtin.template: + src: obsidian-livesync-compose.yml.j2 + dest: "{{ paths.stacks }}/obsidian-livesync/docker-compose.yml" + mode: '0644' + notify: restart obsidian-livesync + +- name: deploy obsidian-livesync stack + community.docker.docker_compose_v2: + project_src: "{{ paths.stacks }}/obsidian-livesync" + state: present + tags: + - obsidian-livesync \ No newline at end of file diff --git a/roles/docker/templates/obsidian-livesync-compose.yml.j2 b/roles/docker/templates/obsidian-livesync-compose.yml.j2 new file mode 100644 index 0000000..ec17522 --- /dev/null +++ b/roles/docker/templates/obsidian-livesync-compose.yml.j2 @@ -0,0 +1,30 @@ +services: + obsidian-livesync: + image: oleduc/docker-obsidian-livesync-couchdb:latest + container_name: obsidian-livesync + restart: unless-stopped + labels: + glance.name: Obsidian LiveSync + glance.icon: si:obsidian + glance.url: http://{{ network.docker_host_ip }}:5984 + glance.description: Obsidian note synchronization + glance.id: obsidian-livesync + environment: + - SERVER_DOMAIN={{ network.docker_host_ip }} + - COUCHDB_USER={{ vault_obsidian.username }} + - COUCHDB_PASSWORD={{ vault_obsidian.password }} + - COUCHDB_DATABASE=obsidian + ports: + - "{{ network.docker_host_ip }}:5984:5984" + volumes: + - couchdb_data:/opt/couchdb/data + networks: + - default + +volumes: + couchdb_data: + +networks: + default: + external: true + name: "{{ docker.network_name }}" \ No newline at end of file