Obsidian+Github вместо Notion: синхронизация, бекап и версионность (3-в-1)
О том, как сделать прозрачную синхронизацию заметок 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 — вы знаете что делать.
Автор: quakin