Post

Синхронізація Obsidian без підписок: розгортаємо CouchDB та LiveSync у Docker

Синхронізація Obsidian без підписок: розгортаємо CouchDB та LiveSync у Docker

🇬🇧 Read this article in English


Додаток Obsidian справедливо вважається одним із найкращих інструментів для побудови особистої бази знань (Second Brain). Його головна перевага — нотатки зберігаються у відкритому форматі Markdown локально на вашому комп’ютері, без прив’язки до пропрієтарних хмар.

Проте щойно виникає потреба відкрити свої конспекти з планшета в дорозі чи з телефону на нараді, починаються труднощі. Офіційна підписка Obsidian Sync коштує від $4 до $10 на місяць за користувача. Безкоштовний Syncthing чудово працює між Windows та Android, але практично марний на iPad/iPhone через жорсткі пісочниці фонових процесів в iOS. А синхронізація через iCloud на Windows постійно створює конфліктні копії файлів.

Вихід є — розгорнути власний сервер синхронізації на базі CouchDB та плагіна Self-hosted LiveSync. Це рішення працює в режимі реального часу (символ за символом), підтримує наскрізне E2EE-шифрування і нативно працює на Windows, Android та iOS!

Налаштування плагіна Self-hosted LiveSync в Obsidian Мал. 1. Вікно налаштувань плагіна Self-hosted LiveSync у темній темі Obsidian


Чому саме CouchDB та LiveSync?

  • Повноцінний клон Obsidian Sync: Зміни передаються миттєво, без очікування пересканування файлів.
  • Підтримка всіх платформ: Працює на iPad, iPhone, Android, Windows, macOS та Linux.
  • Наскрізне шифрування (E2EE): Нотатки шифруються на вашому пристрої перед відправкою. Навіть адміністратор бази даних не зможе прочитати жодного слова.
  • Автоматичне вирішення конфліктів: Якщо ви відредагували замітку одночасно на телефоні й ПК, плагін акуратно об’єднає правки без втрати даних.

Архітектура стеку

  1. CouchDB — NoSQL база даних, яка ідеально пристосована для двосторонньої синхронізації документів.
  2. Nginx Proxy Manager — шлюз, який забезпечує з’єднання за протоколом HTTPS (це критично важливо, оскільки iOS категорично блокує незахищені HTTP-запити у WebCrypto).
  3. AdGuard Home — локальний DNS-сервер для резолву піддомену notes.home.myhomelab.org.

Крок 1. Запуск CouchDB в Docker Compose

Створимо робочу папку на сервері (наприклад, на вашій Ubuntu VM чи хості з Docker):

1
sudo mkdir -p /opt/couchdb && cd /opt/couchdb

1. Налаштування файлу конфігурації local.ini

За замовчуванням CouchDB обмежує розмір файлів кількома мегабайтами. Щоб ви могли спокійно додавати до нотаток фотографії, скани та PDF-документи, створимо конфіг з розширеними лімітами:

1
2
3
4
5
6
7
cat <<EOF > /opt/couchdb/local.ini
[chttpd]
max_http_request_size = 4294967296

[couchdb]
max_document_size = 50000000
EOF

⚠️ Порада з досвіду: Обов’язково створіть файл local.ini ДО першого запуску Docker. Якщо цього не зробити, Docker автоматично створить однойменну папку, що призведе до помилки монтування файлу (mount: not a directory).

2. Створення docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3.8'

services:
  couchdb:
    image: couchdb:latest
    container_name: couchdb
    restart: unless-stopped
    environment:
      - COUCHDB_USER=admin
      - COUCHDB_PASSWORD=SuperSecretPassword2026!  # Задайте власний надійний пароль
    volumes:
      - ./data:/opt/couchdb/data
      - ./local.ini:/opt/couchdb/etc/local.ini
    ports:
      - "5984:5984"

Запускаємо контейнер:

1
docker compose up -d

Перевірте працездатність: docker ps. Контейнер повинен перебувати у статусі Up.


Крок 2. Налаштування HTTPS в Nginx Proxy Manager

Оскільки мобільні клієнти (особливо на iOS) вимагають шифрування, відкриваємо панель Nginx Proxy Manager і додаємо новий Proxy Host:

  1. Вкладка Details:
    • Domain Names: notes.home.myhomelab.org
    • Scheme: http
    • Forward Host / IP: IP вашого сервера з CouchDB (наприклад, 192.168.50.125).
    • Forward Port: 5984
    • Websockets Support: обов’язково увімкнути (необхідно для живого оновлення нотаток).
  2. Вкладка SSL:
    • Оберіть ваш сертифікат (наприклад, Wildcard *.home.myhomelab.org).
    • Увімкніть Force SSL та HTTP/2 Support.
  3. Вкладка Advanced (зняття лімітів на розмір файлів):
    1
    
    client_max_body_size 100M;
    
  4. Збережіть налаштування.

Відкрийте в браузері https://notes.home.myhomelab.org — ви повинні побачити рядок {"couchdb":"Welcome","version":"..."}.


Крок 3. Налаштування першого пристрою (ПК з вашими нотатками)

  1. Відкрийте Obsidian на комп’ютері.
  2. Перейдіть у Settings ➡️ Community plugins (вимкніть Restricted Mode).
  3. Знайдіть через пошук та встановіть плагін Self-hosted LiveSync, після чого увімкніть його.
  4. Відкрийте налаштування плагіна і оберіть Rerun Onboarding Wizard ➡️ Configure a remote manually:
    • Оберіть тип сервера: CouchDB.
    • Server URL: https://notes.home.myhomelab.org
    • User: admin
    • Password: ваш пароль до CouchDB.
    • Database name: obsidian.
    • Натисніть Test (якщо база ще не існує, плагін запропонує створити її — натисніть Create).
  5. End-to-End Encryption (E2EE):
    • Увімкніть шифрування та введіть секретну парольну фразу. Обов’язково збережіть її у менеджері паролів!
  6. Первинна синхронізація:
    • Оберіть Push local database to remote (вивантажити всі локальні файли на сервер).
  7. Експорт налаштувань:
    • У налаштуваннях плагіна натисніть Copy Setup URI або Show QR Code.

Крок 4. Підключення iPad, iPhone та Android

Тепер найприємніше — підключення мобільних девайсів за 1 хвилину:

  1. Встановіть Obsidian з App Store або Google Play.
  2. Створіть нове порожнє сховище (наприклад, Notes).
  3. Встановіть та увімкніть плагін Self-hosted LiveSync.
  4. У вікні первинного запуску оберіть Connect with Setup URI (Recommended).
  5. Відскануйте камерою QR-код із монітора ПК (або вставте скопійований рядок).
  6. Введіть вашу E2EE парольну фразу.
  7. Натисніть Rebuild local database (Завантажити файли із сервера).

Усі ваші папки, нотатки, вкладення та внутрішні посилання з’являться на екрані планшета чи смартфона!


Крок 5. Активація бойового режиму синхронізації (Sync Mode)

Після первинного імпорту плагін часто залишається в пасивному режимі, щоб випадково не перезаписати файли. Щоб нові записи автоматично летіли на інші пристрої, перевірте налаштування на ПК, планшеті та телефоні:

  1. Відкрийте налаштування Self-hosted LiveSync.
  2. Прокрутіть до блоку Synchronisation:
    • Sync Mode: переконайтеся, що встановлено LiveSync (миттєва передача правок у реальному часі) або Periodic.
    • Sync on Save: увімкніть, щоб плагін фіксував правки щойно ви закінчуєте писати.
    • Sync on Startup: обов’язково увімкніть — це гарантує звірку бази щоразу при відкритті додатку.
  3. Як перевірити вручну: натисніть Ctrl + P (на ПК) або потягніть екран зверху вниз (на планшеті) і викличте команду LiveSync: Synchronise now. У правому кутку з’явиться статус про успішну передачу файлів.

Підводні камені та типові помилки

  • Відкладена офлайн-синхронізація (чи обов’язковий доступ ззовні?): Якщо ви не хочете налаштовувати VPN чи відкривати сервер в інтернет — це абсолютно не потрібно! Завдяки архітектурі Local-First, ви можете вільно писати нотатки на телефоні чи планшеті в дорозі, у метро чи літаку без інтернету. Усі зміни накопичуються в локальній черзі. Щойно ви повернетеся додому і девайс підключиться до домашнього Wi-Fi, LiveSync автоматично підхопить сервер, вивантажить ваші нотатки й підтягне оновлення з ПК.
  • Помилка Checking configuration failed: Якщо Obsidian на ПК не може підключитися, перевірте DNS. Комп’ютер має звертатися до вашого локального DNS (AdGuard Home), а не до роутера, який не вміє резолвити внутрішні домени.
  • Доступ поза межами дому (через 4G/Wi-Fi): Щоб нотатки синхронізувалися на ходу, використовуйте Tailscale або зв’язку з Cloudflare Tunnel. Завдяки тому, що LiveSync шифрує файли локально за алгоритмом AES, пересилання даних через інтернет є абсолютно безпечним.
  • Кілька користувачів: Кожен член родини може вказати власну назву бази (наприклад, obsidian_andriy та obsidian_olena) та власні паролі шифрування — нотатки залишатимуться суворо ізольованими.

Висновок

Зв’язка CouchDB та плагіна Self-hosted LiveSync — це бездоганне інженерне рішення для тих, хто цінує цифрову приватність та кросплатформність. Ви отримуєте швидкість і зручність платного сервісу, не сплачуючи жодної копійки за підписки та зберігаючи 100% контроль над власними думками й знаннями!

This post is licensed under CC BY 4.0 by the author.