О том, как сделать прозрачную синхронизацию заметок Obsidian между устройствами (Desktop, Android, iOS) через GitHub:
Без сторонних приложений (вроде iCloud, SyncThing, Termux и пр)
Бесплатно
Бонусом — резервная копия: как самих заметок, так и истории изменений.
В результате получается полноценная замена Notion: структурированные заметки с автоматической синхронизацией между устройствами.
Краткое решение
Приватный репозиторий GitHub,
Синхронизация по https + "Personal access token"
Для десктопа: плагин Git
Для мобильных: плагин Fit
Автосинхронизация: при старте (Git), раз в минуту, без уведомлений.
исключить папку .obsidian через .gitignore
Далее: подробно ("для чайников")
Предыстория: Notion всё
Сейчас Notion в РФ работает только для бесплатных аккаунтов и только через прокси/VPN. Платные аккаунты забанили. Если зайти из бесплатного аккаунта и забыть включить прокси — выкинет из Notion, неудобно.
Но главное неудобство — Notion владеет моими заметками и может удалить их в любой момент. С Obsidian иначе: все заметки — это локальная папка с текстовыми файлами (их можно открыть множеством приложений).
Вопрос лишь в прозрачной синхронизации … и он решён в этой статье.
Предыстория: личный опыт
Несколько лет назад я загорелся идеей создать личную картотеку "zettelkasten". У меня эта методология не прижилась, но в результате я познакомился с приложением Obsidian, начал вести там свои заметки, и год назад полностью ушёл туда с Notion.
Мой главный аргумент — я владею своими заметками, а не корпорация. Заметки хранятся в папке с текстовыми файлами. Они не пропадут, если кто-то так решит.
Про сам Obsidian на Хабре уже писали, например:
Но для меня Obsidian не был заменой Notion, пока я не научился синхронизировать его на всех устройствах без сторонних костылей программ.
Ниже - пошаговый алгоритм, с которым всё точно работает.
Шаг 0: Установить Obsidian на все свои устройства
На случай если его у вас ещё нет, вот ссылка:
Шаг 1: Создать приватный репозиторий Github
Залогиниться на github
По ссылке https://github.com/new указать:
имя репозитория
выбрать: приватный
выбрать: файл README (т.к. репозиторий не д.б. пустым)
создать репозиторий (зеленая кнопка внизу)
в корне репозитория создать файл
.gitignore
с текстом.obsidian
Комментарий: файл
.gitignore
нужен, чтобы не синхронизировать папку.obsidian
, в которой находятся локальные настройки (конфликтуют на разных устройствах при синхронизации). Если этого не сделать — вся схема перестанет работать.
Шаг 2: Создать токен доступа
По ссылке https://github.com/settings/tokens/new указать:
имя токена
выбрать: No Expiration (значит токен не устареет)
выбрать repo
создать токен (зеленая кнопка)
сохранить созданный токен
GitHub покажет токен вида
ghp_1wKdGc4IhVCHxXEaKClMNp1rEMwsHu1f5zNZ
только один раз, его нужно скопировать и сохранить. Если потеряется - придётся создавать новый.
Только для "параноиков"
Созданный токен даёт доступ ко всем личным "репозиториям" на гитхабе. Если у вас уже есть репозитории на гитхабе и вам *некомфортно* с таким токеном, то есть два решения:
Создать "продвинутый" токен:
токену выдать права на конкретный репозиторий "Repository permissions - Contents: Read and Write"
указать срок жизни токена 1 год (это максимум, через год придётся обновлять, неудобно)
Более простой вариант: создать отдельный github-аккаунт для обсидиана и использовать "классический" токен.
Шаг 3: Синхронизация с десктопом (Windows, Linux, Mac)
Приведу пример для Windows.
3а: клонировать репозиторий
Убедиться, что git установлен в системе
В консоли набрать
git --version
и увидеть версию.Если вылезла ошибка:
Установить гит: https://git-scm.com/downloads
Выполнить первоначальную настройку гит-а: в командной строке указать свои "email" и "имя" (любые), которыми будут подписываться ваши файлы в гите (у вас приватный репозиторий, значит их никто не увидит)
git config --global user.email МОЙ-EMAIL git config --global user.name МОЁ-ИМЯ
Гит выполняет все операции "от имени" юзера, определённого этими двумя командами. Пока он не имеет этих данных, функционал гит-а недоступен.
Создать папку, в которой будут храниться «Vaults/Хранилище» Obsidian (Vault — это аналог Workspace в Notion). Например:
C:/OBSIDIAN
(win) или~/OBSIDIAN
(linux).Собрать https-ссылку, по которой будет синхронизироваться github
Формат ссылки:
https://<PERSONAL_ACCESS_TOKEN>@github.com/<USERNAME>/<REPO>.git
,Например:
https://ghp_1wKdGc4IhVCHxXEaKClMNp1rEMwsHu1f5zNZ@github.com/myaccount/my-obsidian-vault.git
Запустить консоль (
cmd.exe
в windows)в консоли перейти в папку OBSIDIAN (
cd /OBSIDIAN
) и оттуда выполнить команду с собранной ссылкойgit clone https://<PERSONAL_ACCESS_TOKEN>@github.com/<USERNAME>/<REPO>.git
В результате появится папка
OBSIDIAN/my-obsidian-vault
, а в ней файлы из GitHub (README.md
и.gitignore
, а также папка.git
с настройками гитхаба)
3b: создать Хранилище/Vault в Obsidian на основе скаченной папки
Из программы Obsidian: открыть синхронизированную папку
my-obsidian-vault
как хранилищеТеперь можно заполнить "хранилище" заметками и файлами, или просто отредактировать
README.md
Если у вас уже есть заметки в Obsidian, то алгоритм будет тот же:
сначала создать и синхронизировать пустой репозиторий с github
затем скопировать туда все файлы из старого хранилища
3с: Настроить синхронизацию через obsidian-плагин 'Git'
UPDATE: в новых версиях плагина Obsidian-git, термин "Backup" (на скриншотах далее) уже заменили на термин на "Commit-and-sync"
В настройках Обсидиана, в разделе "Community plugins" найти и установить плагин 'git'
Далее, в настройках самого плагина git, установить:
Vault Backup Interval (minutes): 1
Auto Backup after stopping file edits: ВКЛ
Pull updates on startup: ВКЛ
Disable notifications: ВКЛ (можно не включать, но тогда каждую минуту будут появляться уведомления)
Теперь все заметки из этого хранилища, каждую минуту после завершения редактирования, будут загружаться в Github. Также, при запуске Obsidian, последняя версия заметок сразу подгрузится с GitHub.
Если не хочется ждать минуту, то принудительно загрузить изменения на GitHub можно через Obsidian-команду "Git: Create backup":
CTRL+P
,git b
. Также (в настройках Obsidian) можно создать горячую клавишу для этой команды (например,ALT+S
)
Шаг 4: Синхронизация с мобильным (Android, iOS)
Здесь всё проще, чем на десктопе:
Открыть приложение Obsidian
Создать новый пустой Vault/Хранилище (не создавать в нём файлы)
Внутри Obsidian найти и установить community-плагин "Fit"
В настройках плагина:
вставить Токен (из шага 1). Именно токен, не url.
авторизоваться по кнопке "Authenticate user"
Github repository name: выбрать из списка, например:
my-obsidian-vault
Branch name: выбрать
main
. (тут без вариантов)Auto sunc: выбрать
Muted
Auto check interval: установить 1 минуту
File change: нажать, чтобы кнопка не горела (и не спамила каждую минуту).
Всё, настройка мобильного приложения завершена: Obsidian будет синхронизироваться с GitHub каждую минуту.
Недостатки плагина Fit версии v1.1.1
К сожалению, плагин Fit (пока ещё) не умеет делать автосинхронизацию "при старте".
Поэтому, сразу после запуска, чтобы не ждать минуту, можно подтянуть изменения через кнопку с котиком "Fit Sync".
Также, в текущей версии плагина есть один "баг": если на десктопе удалить ненужную папку-с-файлами (и синхронизировать репозиторий), то на мобильном файлы удалятся, но пустая папка останется ... и её придётся удалить вручную. Неудобно, но такой сценарий случается довольно редко. Плюс есть шанс что автор плагина исправит этот баг.
При этом у плагина есть бесспорное достоинство: работает на мобильном.
Шаг 5: техника безопасности
Не редактируйте один и тот же файл одновременно на двух устройствах.
Впрочем, этот совет относится и к Notion: я однажды терял часть текстов в Notion, когда заметка была открыта в нескольких местах
На самом деле, следовать этому совету легко.
А если что-то пойдёт не так, то Obsidian сообщит о конфликте версий, и с ним придётся разбираться (в то время как Notion молча как-то всё решит сам)
На десктопе конфликт версий разрешается средствами GIT-а.
Если кратко: то достаточно отредактировать "конфликтный" файл и удалить из него ненужные строки (в т.ч. служебные), чтобы всё пришло в норму.
а если одновременно редактировались разные строки заметки, то умный git разрулит всё сам (корректно, незаметно, автоматически)
На мобильном конфликт решается иначе: локальный файл не меняется, но его "внешняя" копия появляется в папке
_FIT
. Нужно смотреть глазами и решать головой, что оставить и что поменять в оригинальном файле.
Ещё раз: конфликт версий заметки — это форс-мажор, скорее всего вы никогда с ним не встретитесь (если не будете редактировать одну и ту же заметку одновременно на двух устройствах). А если встретитесь — его легко разрулить.
Вопросы и ответы:
Почему на мобильных используется плагин Fit, а не полноценный Git?
Мобильные приложения не могут вызывать другие мобильные приложения, поэтому плагин Obsidian не может вызвать стороннее приложение Git на мобильном.
Плагины Obsidian написаны на JS. В мобильном плагине obsidian-git есть JS-реализация полноценного гит-а… но она ещё сырая (тормозит на большом количестве файлов и спамит алертами).
Поэтому для мобильных устройств приходится использовать не полноценный Git, а плагин Fit, который использует упрощённый GitHub API.
Почему на десктопе используется плагин Git, а не простой Fit?
Тут две причины:
хранение всей истории изменений на локальной машине (в папке .git)
удобство автоматического разруливания конфликта версий, если на разных устройствах одновременно редактировались разные строки одного файла.
Можно ли использовать только мобильную версию (без десктопа)
Да, вполне. Шаг 3 можно пропустить - всё будет работать.
Правда десктопная версия даёт дополнительную резервную копию с историей изменений (хранится на десктопе), но если отказаться от десктопа — система продолжить работу.
Также можно отказаться от мобильной версии и работать только на десктопе (но зачем?:)
Почему бы не синхронизировать всё через сторонние приложения (например, SyncThing)?
они требуют внимания (надо следить, что ничего не отвалилось)
они разряжают батарею (на мобильных)
они гоняют больше трафика (на мобильных)
синхронизация через них происходит чуть дольше
они не хранят историю всех изменений (как это делает git в локальной папке
.git
и на github)самое главное — с ними возможен небезопасный сценарий: случайно удалил на одном устройстве — синхронизировалось/удалилось сразу везде. Чтобы этого избежать — следует как-то где-то дополнительно настраивать бекап.
Здесь же всё в одном приложении: запустил Obsidian — синхронизация идёт; закрыл — не идёт.
Где смотреть историю изменений файлов?
Если вы не сильны в git (как и я), то историю изменений любого файла можно посмотреть на сайте github (для каждого файла справа-вверху есть кнопка "🕓History").
Что делать, если GitHub однажды перестанет открываться из РФ?
Действительно, плагин Fit жестко привязан к API GitHub-а.
Но тут как в той притче - "или ишак подохнет, или падишах…".
Скорее всего к этому моменту допилят мобильный плагин Obsidian-Git. И тогда можно будет использовать любой git-сервер (даже свой собственный).
Или допилят плагин Fit (или создадут новый) для работы с каким-нибудь опенсорс-сервисом.
или действовать по-старинке:
Android: синхронизироваться через внешнее приложение "Termux", внутрь которого можно установить полноценный git (инструкция гуглится)
iOS: синхронизироваться через iCloud
наконец, у Obsidian есть свой сервис синхронизации за $4 в месяц. Правда к нему хорошо-бы прикрутить дополнительный бекап.
В январе я уже предсказывал замедление youtube. Так что побуду предсказателем ещё раз. Так вот: гитхаб в ближайшие годы останется доступным (ну а вдруг:)
Что ещё можно сделать с этой схемой?
В Obsidian можно использовать несколько Хранилищ/Vaults (аналог Workspace в Notion), и под каждое создать свой репозиторий на гитхаб. Правда синхронизацию придётся настраивать отдельно для каждого: в Obsidian плагины устанавливаются внутрь Vault, а не в приложение в общем.
Если есть свой сервер — можно настроить ещё один бекап: резервное копирование репозитория GitHub по расписанию через git.
Минутка здравого смысла
Как психолог по своей основной профессии, я смею утверждать, что способность владеть (обладать, распоряжаться, быть хозяином) — одно из базовых качеств, необходимых для хорошей жизни.
При чём здесь Obsidian?
Дело в том, что реализовываться (по своим ценностям) у человека получается только из состояния владения своей жизнью (когда ощущаешь право и способность влиять). А воспитывается способность владеть и влиять всегда с мелочей, в том числе через владение результатами своего творчества. В том числе через владение личными документами.
А современную ситуацию — где корпорации пытаются распоряжаться контентом авторов и фактически предлагают им отказаться от права владения — я рассматриваю лишь как временный перекос и "болезнь роста" нашей цивилизации.
При этом хочу разделить понятия "владение" и "управление": очень удобно, когда получается делегировать управление ресурсом, но продолжать оставаться хозяином. Правда вот в данной инструкции эти две роли пришлось совместить: самому управлять и самому владеть.
В общем, признание и реализация ценности "владения" — это тренд. Пока ещё небольшой, но — по моим наблюдениям — он показывает уверенный рост.
Так что если вы решите вернуть себе право распоряжаться своими заметками с помощью Obsidian — вы знаете что делать.