Уже многие написали и рассказали о таком полезном инструменте для организации своих заметок, как Obsidian.
Если кто еще не знает, Obsidian — это бесплатное Electron-приложение, доступное на всех основных платформах, созданное Эрикой Сю и Шидом Ли уже в далёком 2020 году. В этой программе интересным UI-решением, позволившим привлечь внимание аудитории, стало визуализация графа заметок, как некой общей карты, мозга, базы знаний, состоящей из md-документов.
Для меня на практике эта фича оказалась самой бесполезной по сравнению с другими возможностями платформы. Встроенные плагины для ежедневных заметок, тэги, мощный поиск, шаблоны, работа с изображениями и многое другое + больше количество сторонних плагинов на любой вкус и возможность при необходимости написать их самому. Вот, что мне пригодилось на самом деле. Я действительно за короткое время перенес все свои заметки из разрозненных источников в одно место и программа стала моим ежедневным инструментом. Поэтому я стал ее использовать на нескольких устройствах.
Когда встал вопрос синхронизации я сразу нашел такой функционал внутри самого Obsidian. Но он платный. Данные для синхронизации ходят через сервера разработчика приложения. Меня не очень устроил этот вариант. Вариант с тем, чтобы бегать между компьютерами с флешкой тоже сразу отпал. Во-первых — это бред. Во-вторых — это бред. В-третьих — это неудобно и данные ломаются при ручном слиянии.
В качестве решения я нашел opensource-программу syncthing. Она простая, быстро устанавливается, имеет довольно простой интерфейс. На своих устройствах я использую Ubuntu, поэтому данное ПО также отлично подходит.
Я не настаиваю на оптимальности и идеальности данного подхода. Но на текущий момент времени меня все устраивает. Работая с Obsidian то на одном, то на другом устройстве, у меня всегда актуальные обновленные данные и там и там автоматически, бесплатно и без лишних трудоемких действий.
Решение — syncthing
Syncthing (ранее Pulse) создал Jakob Borg в 2013 году. Он шведский разработчик, который был недоволен существующими решениями синхронизации (Dropbox, Bittorrent Sync) из-за их закрытости и зависимости от облаков.
-
Написан на Go. Сразу в 2013!
-
Лицензия: MPL 2.0 (Mozilla Public License) — полностью открытый исходный код
В отличие от облачных сервисов, Syncthing работает напрямую между устройствами без центрального сервера.
Особенности
-
Локальная сеть: multicast/broadcast (мгновенно)
-
Глобально: через discovery servers (по умолчанию syncthing.net)
-
Можно отключить глобальное обнаружение для полной приватности
-
Прямое TCP-соединение между устройствами
-
Автоматический NAT traversal (UPnP, NAT-PMP)
-
При невозможности прямого — relay-серверы (можно свои)
-
Основана на блочном протоколе (как rsync)
-
Синхронизирует только изменённые блоки файлов
-
Использует индексы для сравнения версий
-
При одновременном изменении создаёт копию:
file.sync-conflict-2024-01-15.txt -
Не теряет данные никогда
-
Конфликты легко разрешаются вручную
-
Каждое устройство генерирует уникальный TLS сертификат
-
Первое соединение требует подтверждения Device ID (как в SSH — проверка fingerprint)
-
Весь трафик шифруется end-to-end
-
Relay серверы не могут расшифровать данные
Установка и настройка
# Установкаsudo apt install syncthing# Автозапуск для пользователяsystemctl --user enable syncthingsystemctl --user start syncthing# Веб-интерфейс# Откройте http://localhost:8384# Все!
Подключение
Syncthing обладает очень приятным просторным интерфейсом в стиле конца 2000-х. (Уже даже не верится, что когда-то интерфейс мог быть функциональным, понятным, но при этом не перегруженным слушателями событий на каждый чих, предлагая пользователю гору функционала, большая часть которого ему не нужна вовсе).
Тема подстраивается к настройкам в системе.
Далее наверное единственный геморрный момент. Обменятся айдишниками, чтобы клиенты нашли друг друга в локальной сети.
Ноутбук 1 (делится папкой):
-
Открыть
http://localhost:8384 -
Нажать кнопку +Add Folder:
-
Ввести абсолютный путь к необходимой папке, которая будет синхронизироваться, например,
/home/username/Documents/synced -
Справа в хэдере перейти в Actions, кликнуть Show ID — скопировать ID (длинная строка типа
ABCDEFG-...)
Ноутбук 2 (подключается):
-
Открыть
http://localhost:8384 -
Нажать кнопку +Add Remote Device (справа, внизу) → вставить ID ноутбука 1
-
На ноутбуке 1 появится запрос — нужно принять его: нажать Accept
-
На ноутбуке 1 выбрать созданную ранее папку для шэринга → Edit → таб Sharing → выбрать имя второго ноута (отображается название, которое вы ему дали при его подключении на ноутбуке 2)
-
На ноутбуке 2: принять расшаренную папку, указать путь
/home/username/Documents/synced2/, например. То есть та папка, которая будет участвовать с синхронизации со стороны второго устройства.
Все! Теперь если что-то положить в папку synced на первом устройстве, это будет отображено во втором в папке synced2.
Obsidian? Ах, да, собственно о синхронизации Obsidian. Хотя, как можно догадаться, таким способом можно синхронизировать много чего.
На каждом устройстве выберите в Obsidian хранилище, которое лежит в synced-папке. То есть на ноуте 1 — папкуsynced с путем до неё, на втором — synced2 . Можно создать новое хранилище, можно скопировать на одном устройстве старый vault и оно автоматически отобразится на втором компьютере.
Кстати, эту статью я полностью подготовил в Obsidian.
Спасибо за внимание! Возможно, кому-то тоже, как и мне, пригодится такое решение.
ссылка на оригинал статьи https://habr.com/ru/articles/1040896/