Obsidian+Github вместо Notion: синхронизация, бекап и версионность (3-в-1)
- вторник, 17 сентября 2024 г. в 00:00:14
О том, как сделать прозрачную синхронизацию заметок Obsidian между устройствами (Desktop, Android, iOS) через GitHub:
Без сторонних приложений (вроде iCloud, SyncThing, Termux и пр)
Бесплатно
Бонусом — резервная копия: как самих заметок, так и истории изменений.
В результате получается полноценная замена Notion: структурированные заметки с автоматической синхронизацией между устройствами.
Приватный репозиторий GitHub
Синхронизация по https + "Personal access token"
Для десктопа: плагин Git
Для мобильных: плагин Fit
Автосинхронизация: при старте (Git), раз в минуту, без уведомлений.
исключить папку .obsidian через .gitignore
Далее: подробно ("для чайников")
Сейчас Notion в РФ работает только для бесплатных аккаунтов и только через прокси/VPN. Платные аккаунты забанили. Если зайти из бесплатного аккаунта и забыть включить прокси — выкинет из Notion, неудобно.
Но главное неудобство — Notion владеет моими заметками и может удалить их в любой момент. С Obsidian иначе: все заметки — это локальная папка с текстовыми файлами (их можно открыть множеством приложений).
Вопрос лишь в прозрачной синхронизации … и он решён в этой статье.
Несколько лет назад я загорелся идеей создать личную картотеку "zettelkasten". У меня эта методология не прижилась, но в результате я познакомился с приложением Obsidian, начал вести там свои заметки, и год назад полностью ушёл туда с Notion.
Мой главный аргумент — я владею своими заметками, а не корпорация. Заметки хранятся в папке с текстовыми файлами. Они не пропадут, если кто-то так решит.
Про сам Obsidian на Хабре уже писали, например:
Но для меня Obsidian не был заменой Notion, пока я не научился синхронизировать его на всех устройствах без сторонних костылей программ.
Ниже - пошаговый алгоритм, с которым всё точно работает.
На случай если его у вас ещё нет, вот ссылка:
Залогиниться на github
По ссылке https://github.com/new указать:
имя репозитория
выбрать: приватный
выбрать: файл README (т.к. репозиторий не д.б. пустым)
создать репозиторий (зеленая кнопка внизу)
в корне репозитория создать файл .gitignore
с текстом .obsidian
Комментарий: файл
.gitignore
нужен, чтобы не синхронизировать папку.obsidian
, в которой находятся локальные настройки (конфликтуют на разных устройствах при синхронизации). Если этого не сделать — вся схема перестанет работать.
По ссылке https://github.com/settings/tokens/new указать:
имя токена
выбрать: No Expiration (значит токен не устареет)
выбрать repo
создать токен (зеленая кнопка)
сохранить созданный токен
GitHub покажет токен вида ghp_1wKdGc4IhVCHxXEaKClMNp1rEMwsHu1f5zNZ
только один раз, его нужно скопировать и сохранить. Если потеряется - придётся создавать новый.
Созданный токен даёт доступ ко всем личным "репозиториям" на гитхабе. Если у вас уже есть репозитории на гитхабе и вам *некомфортно* с таким токеном, то есть два решения:
Создать "продвинутый" токен:
токену выдать права на конкретный репозиторий "Repository permissions - Contents: Read and Write"
указать срок жизни токена 1 год (это максимум, через год придётся обновлять, неудобно)
Более простой вариант: создать отдельный github-аккаунт для обсидиана и использовать "классический" токен.
Приведу пример для Windows.
Убедиться, что git установлен в системе
в консоли набрать git --version
и увидеть версию.
если вылезла ошибка — установить гит: https://git-scm.com/downloads
Создать папку, в которой будут храниться «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
с настройками гитхаба)
Из программы Obsidian: открыть синхронизированную папку my-obsidian-vault
как хранилище
Теперь можно заполнить "хранилище" заметками и файлами, или просто отредактировать README.md
Если у вас уже есть заметки в Obsidian, то алгоритм будет тот же:
сначала создать и синхронизировать пустой репозиторий с github
затем скопировать туда все файлы из старого хранилища
В настройках Обсидиана, в разделе "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
)
Здесь всё проще, чем на десктопе:
Открыть приложение 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 (пока ещё) не умеет делать автосинхронизацию "при старте".
Поэтому, сразу после запуска, чтобы не ждать минуту, можно подтянуть изменения через кнопку с котиком "Fit Sync".
Также, в текущей версии плагина есть один "баг": если на десктопе удалить ненужную папку-с-файлами (и синхронизировать репозиторий), то на мобильном файлы удалятся, но пустая папка останется ... и её придётся удалить вручную. Неудобно, но такой сценарий случается довольно редко. Плюс есть шанс что автор плагина исправит этот баг.
При этом у плагина есть бесспорное достоинство: работает на мобильном.
Не редактируйте один и тот же файл одновременно на двух устройствах.
Впрочем, этот совет относится и к Notion: я однажды терял часть текстов в Notion, когда заметка была открыта в нескольких местах
На самом деле, следовать этому совету легко.
А если что-то пойдёт не так, то Obsidian сообщит о конфликте версий, и с ним придётся разбираться (в то время как Notion молча как-то всё решит сам)
На десктопе конфликт версий разрешается средствами GIT-а.
Если кратко: то достаточно отредактировать "конфликтный" файл и удалить из него ненужные строки (в т.ч. служебные), чтобы всё пришло в норму.
а если одновременно редактировались разные строки заметки, то умный git разрулит всё сам (корректно, незаметно, автоматически)
На мобильном конфликт решается иначе: локальный файл не меняется, но его "внешняя" копия появляется в папке _FIT
. Нужно смотреть глазами и решать головой, что оставить и что поменять в оригинальном файле.
Ещё раз: конфликт версий заметки — это форс-мажор, скорее всего вы никогда с ним не встретитесь (если не будете редактировать одну и ту же заметку одновременно на двух устройствах). А если встретитесь — его легко разрулить.
Мобильные приложения не могут вызывать другие мобильные приложения, поэтому плагин Obsidian не может вызвать стороннее приложение Git на мобильном.
Плагины Obsidian написаны на JS. В мобильном плагине obsidian-git есть JS-реализация полноценного гит-а… но она ещё сырая (тормозит на большом количестве файлов и спамит алертами).
Поэтому для мобильных устройств приходится использовать не полноценный Git, а плагин Fit, который использует упрощённый GitHub API.
Тут две причины:
хранение всей истории изменений на локальной машине (в папке .git)
удобство автоматического разруливания конфликта версий, если на разных устройствах одновременно редактировались разные строки одного файла.
Да, вполне. Шаг 3 можно пропустить - всё будет работать.
Правда десктопная версия даёт дополнительную резервную копию с историей изменений (хранится на десктопе), но если отказаться от десктопа — система продолжить работу.
Также можно отказаться от мобильной версии и работать только на десктопе (но зачем?:)
они требуют внимания (надо следить, что ничего не отвалилось)
они разряжают батарею (на мобильных)
они гоняют больше трафика (на мобильных)
синхронизация через них происходит чуть дольше
самое главное: они не хранят историю всех изменений (как это делает git в локальной папке .git
и на github)
Здесь же всё в одном приложении: запустил Obsidian — синхронизация идёт; закрыл — не идёт.
Если вы не сильны в git (как и я), то историю изменений любого файла можно посмотреть на сайте github (для каждого файла справа-вверху есть кнопка "🕓History").
Действительно, плагин 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 — вы знаете что делать.