У меня много устройств включая iУстройства, где Obsidian решил, что можно заработать и сделать бесплатные способы синхронизации сложнее, но выход, как оставить все данные при себе и получить классную синхронизацию - есть!

Для начала хотел бы рассказать, что я изначально пользуюсь Git синхронизацией, так как сам разработчик и мне уже максимально понятно слияние с бесконечно-вечным мастер-бренчем. А так же за возможность получить историю файла и откатить его к какой либо версии например в VSCode. Git так же выполняет функцию распределённого бекапа. Работает и на мобильных устройствах тоже, включая iOS, но... до поры до времени, на моём объеме уже не может запустить первое скачивание, если это пережить каким либо чудом, то работает нормально.

Ссылка на расширение: https://github.com/Vinzent03/obsidian-git

Если заинтересовались им, то добавьте в проект .gitignore файл в папку, чтобы исключить из git файлов локальные настройки клиента и можно было работать в более чем одном открытом Obisidian на разных компьютерах и телефонах который отправляет изменения в git без конфликтов.

.obsidian/cache
.obsidian/workspace
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.trash/
.DS_Store
.gitignore

Git это хорошо, а есть что побыстрее?

Есть, но тут уже посложнее

Но мы то хотим вот так? Написал здесь, а оно уже там! Вот! Это дело!

Для этого готовьтесь, нам понадобится свой сервер с доступом в интернет, чтобы был доступен отовсюду или VPN домой (вообще именно то, для чего он чаще всего нужен в хозяйстве, а не блокировки обходить), тот же ZeroTier или Tailscale могут решить задачу по доступу домой без покупки домена и сервера или белого IP. Сервером может быть какой-нить старый PC завалявшийся дома или взять в том же timeweb сервер себе, хватит даже самого дешёвого.

💡
Можете попробовать https://github.com/vrtmrz/obsidian-livesync?tab=readme-ov-file#how-to-use установку на fly.io, но я такое не пробовал, хотя должно быть проще. Моя же цель всё своё с собой.

CouchDB, внешний сервер

В интернете уже достаточно хороших статей например эта https://coyotle.ru/posts/obsidian-live-sync/, мой подход же ближе к https://pressanybutton.ru/post/poleznye-instrumenty/obsidian-livesync-sovmestnaya-rabota-nad-proektnoj/ этой.
- Тоже Docker для запуска CouchDB
- Тоже Caddy, как сервер, так как не нужно думать за certbot для nginx. SSL на плечах Caddy.

Давайте сразу выдам конфигурацию свою. А дальше расскажу, что с этим делать.

version: "3.9"
services:
  couchdb:
    image: couchdb
    container_name: couchdb
    hostname: couchdb
    ports:
      - "127.0.0.1:5984:5984"
    volumes:
      - ./data:/opt/couchdb/data
      - ./local.ini:/opt/couchdb/etc/local.ini
    environment:
      - COUCHDB_USER=randomUser12388
      - COUCHDB_PASSWORD=$0me-$tr0ng-Pa$$w0rd*
    restart: unless-stopped
docker-compose.yml
[httpd]
bind_address = 0.0.0.0
port = 5984

[couchdb]
single_node=true
max_document_size = 50000000

[chttpd]
require_valid_user = true
max_http_request_size = 4294967296

[chttpd_auth]
require_valid_user = true
authentication_redirect = /e=_/_utils/session.html

[httpd]
WWW-Authenticate = Basic realm="couchdb"
enable_cors = true

[cors]
origins = app://obsidian.md,capacitor://localhost,http://localhost
credentials = true
headers = accept, authorization, content-type, origin, referer
methods = GET, PUT, POST, HEAD, DELETE
max_age = 3600
local.ini
couchdb.domain.com {
  reverse_proxy 127.0.0.1:5984
}
caddy

Я бы даже не знаю имеет ли смысл в N раз писать ещё одну статью, ну давайте очень быстро, показывать буду на timeweb сервере, как это сделано у меня. После регистрации создаём облачный сервер сразу с Docker

Можно сразу с установленным Docker
Питерский, потому что есть дешёвые носители.
Бекапы, по желанию, я выключил у меня git. А вот ключ лучше сразу добавить
285р за такой сервер, вроде норм. Жмём заказать. И ждём
Получили IP
Добавляем новый сабдомен.

После получения IP прыгаем в настройку домена, у меня это 2domains, можете выбрать себе любой другой. Суть одна, добавить новую A-запись, я буду добавлять
couchdb.toxblh.ru себе. Можно ли без домена? Можно, но с ним удобнее и проще.

Пока добавляли запись, должен был уже создаться наш сервер. Копируем строчку про ssh, в консоль, если добавляли ключ, сразу получите доступ.

Первое, ставим caddy с репозиториев, как отдельный сервер, мне так привычнее уже, что он не сидит с докером вместе, но на вкус и цвет.
Понеслась:

apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list
apt update
apt install caddy
https://caddyserver.com/docs/install инструкция с офф сайта

Уже можно проверить

Оппа, оно работает!

Так, работает! Пошли CouchDB ставить, создаём папку проектов, надеюсь вы не только CouchDB поставите, но и например можно Atuin или вообще комбайн установок runtipi. Далее создаём папку для couchdb и внутри уже папку data, для данных программы, файл docker-compose.yml и local.ini

mkdir projects
cd projects
mkdir couchdb
cd couchdb
mkdir data
touch local.ini
touch docker-compose.yml
nano docker-compose.yml 
docker-compose.yml - Копируем из начала статьи!

Единственное, что поменяйте значения в строках на
COUCHDB_USER=*свой логин*
COUCHDB_PASSWORD=*свой пароль*
Которые будете использовать потом, не забудьте их :)

💡
Как сохранить и выйти? Нажимем Ctrl+X, для выхода, нас спросят сохранить ли, отвечаем да нажатием "Y" и "Enter" 

Следом, наполняем local.ini, содержимым из начала статьи

nano local.ini
local.ini - тот же, что и в начале!

Готово, можно запускаться! Для этого вводим команду

docker-compose up -d
up - что мы поднимаем сервис. А `-d`, что мы хотим запустить, как сервис его
Если всё хорошо, видим такую картину, что образ скачался и запустился.

Теперь, нам нужно получить доступ до него, через web - идём в настройки caddy теперь

nano /etc/caddy/Caddyfile

Удаляем, всё что там было, добавляем кусочек, который в начале статьи и адаптируем его под себя в моём случае домен это couchdb.toxblh.ru, это всё что нам нужно поменять.

Выходим и сохраняем

Теперь, нам нужно, чтобы caddy прочитал данные настройки, перезагружаем сервер

systemctl restart caddy
Если ошибок нет, значит всё прошло успешно

Снова заходим на наш сайт и видим, что он стал требовать пароль, вводим те самые couchdb user и password из настройки docker-compose.yml

успешный вход выглядит так... но кажется это что-то на программистком
А человеческий тоже есть, если надо 😄

А красивый Web UI находится по ссылке https://couchdb.toxblh.ru/_utils/  то есть добавить к вашему /_utils всё. А ну и да, https уже работает, а мы ничего и не делали в этом весь caddy.


Так, сервер настроили, домен настроили, на всё ну от силы минуты две ушло так? Ну ладно минут 10, не более. Осталось последнее, добавить то что настроили в LiveSync и пользоваться.

🛑
СТОП! Делай бекап. LiveSync может всё сломать. Если нет Git, просто папку скопируй на всякий случай! Да сейчас, я предупредил!

Ставим плагин. Шестерёнка настроек, Сommunity plugins, включить, Browse и ищем lives... а вот он уже да, его и ставим.

После установки не забываем включить

Плагин нас спросит есть ли у нас удобная ссылка, для настройки... Нет, автор плагина решил, что использовать deno это нормально, но не всем. Так что мы нажимаем No, I do not have. Руками настроим сами

И Set it up manually

Далее, переходим в настройки соединения с сервером Remote Configuration
Заполняем поля, наш адрес до сервера, пользователь и пароль снова те же с COUCHDB, как на сайте. А вот Database name, то есть имя базы данных на ваш выбор, я назову ametist.
Так же рекомендую, в самом конце страницы включить end-to-end шифрование, при включении нужно будет написать кодовое слово, в целом я больше за чем против. Если вдруг сервер данных взломают, то это будет цифровой мусор, а не ваши заметки.

Нажимаем кнопку Test и должно появиться успешное соединение

Если всё хорошо - жмём Apply!

Далее переходим в настройки синхронизации и выбираем тот самый LiveSync, ради которого прошли весь путь, не забываем Apply применить!

После всех настроек, идём включать синхронизацию, для этого переходим на вкладку Setup и нажимаем Enable, но только после всей настройки.

Дальше предложит перезагрузиться, делаем это и отвечаем ответами по умолчанию (с отсчётом) на всё, что будет спрашивать.
Готово! Синхронизация нашего первого клиента началась. На всякий случай проверьте, что LiveSync всё ещё наш выбор синхронизации на вкладке 🔄


Дело за малым... ну то есть, теперь подключим смартфон! Особенно это интересно для iOS, на нём и покажу. Но на дроиде всё ровно так же.

Первое, создаём новый Vault на телефоне уже или можно конечно использовать текущий, но покажу на новом. Далее так же, настройки, плагины, ставим LiveSync включаем и на вопрос есть ли у нас ссылка, отвечаем Да, есть! Где мы её возьмём? Открываем ещё раз настройки на компьютере, синхронизация и вторым разделом на странице есть возможность скопировать ссылку! Копируем и передаём на телефон, установив пароль, любой, он только для ссылки. Вставляем его после ответа, что ссылка есть. Тот самый пароль, что задали, только что. На вопрос Import Configuration - Yes, хотим использовать, что в ссылке. И настроить, как второе устройство (Set it up as secondary or...) первый из пяти вариантов.

Будет ссылка вида: obsidian://setuplivesync?settings=%25da8b8e77af99c03b496d..

Если всё сделали правильно, на телефоне будут все те же заметки. Если нет - проверьте на 🔄, что стоит LiveSync и на телефоне и на компьютере.

По итогу можно наслаждаться быстрой синхронизацией 🎉

0:00
/