Всем привет, в этом небольшом гайде расскажу как я синхронизирую свои заметки Obsidian сохраняя все 4 свойства. Мне кажется это золотой стандарт для настройки синхронизации Obsidian и в этом гайде поэтапно расписал как провернуть эту схему у себя.

С чем имеем дело:

  • редактор заметок, в моём случае Obsidian, но подойдёт любой; в Obsidian есть плагин который упростит работу с Git до пары кнопок

  • git и git хранилище, я использую GitHub, но можно GitLab, Codeberg или любой другой

  • git-crypt — утилита для прозрачного шифрования файлов прямо внутри репозитория

  • gpg — для генерации асимметричных ключей; если не хочется заморачиваться, можно обойтись симметричным .bin ключом

  • плагин obsidian git — чтобы пушить и пуллить прямо из Obsidian, без терминала

Как это всё работает: git-crypt цепляется к Git через фильтры clean и smudge. При git add файл шифруется AES-256 и уходит на сервер в виде нечитаемого бинарника. При git pull — расшифровывается обратно. Ты работаешь с обычными markdown файлами, шифрование происходит незаметно. Плагин Obsidian Git просто вызывает стандартные git-команды изнутри Obsidian, поэтому с git-crypt работает без каких-либо проблем.

установка

sudo pacman -S gnupg git-crypt

Debian/Ubuntu

sudo apt install gnupg git-crypt

Сначала фиксим права на папку, без этого gpg иногда ругается

chmod 700 ~/.gnupg
find ~/.gnupg -type f -exec chmod 600 {} \;
find ~/.gnupg -type d -exec chmod 700 {} \;

Создаём ключ

gpg --full-generate-key

В меню:

  • тип 1 - rsa

  • размер 4096

  • срок 0 - не истекает

  • имя и email

  • придумываем пароль - пароль понадобится при каждом git-crypt unlock

Смотрим что создалось

gpg --list-secret-keys --keyid-format long
sec   rsa4096/BC1669B94DC2FA3B 2026-03-10 [SC]
      A24F8B816C123B0B342234555C2ACA254BC1669B
uid   user <mail@email.com>

email отсюда понадобится на следующем шаге

По желанию можно настроить кэш пароля на 24 часа, чтобы не вводить при каждом unlock

echo "default-cache-ttl 86400" >> ~/.gnupg/gpg-agent.conf
echo "max-cache-ttl 86400" >> ~/.gnupg/gpg-agent.conf
gpgconf --reload gpg-agent

Репозиторий

cd ~/notes
git init
git-crypt init
git-crypt add-gpg-user --trusted mail@email.com

Создаём .gitignore исключаем системные файлы Obsidian которые не нужно синхронизировать

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

Создаём .gitattributes говорим git-crypt что шифровать а что нет

.gitattributes !filter !diff
.gitignore !filter !diff

*.md     filter=git-crypt diff=git-crypt
*.canvas filter=git-crypt diff=git-crypt
*.png    filter=git-crypt diff=git-crypt
*.jpg    filter=git-crypt diff=git-crypt
*.jpeg   filter=git-crypt diff=git-crypt
*.pdf    filter=git-crypt diff=git-crypt

Порядок коммитов важен, сначала только .gitattributes потом остальное. Если закоммитить всё разом, git-crypt не успевает применить фильтры и файлы уйдут в открытом виде:

git add .gitattributes
git commit -m "$(date '+%Y-%m-%d %H:%M')"

git add .
git commit -m "$(date '+%Y-%m-%d %H:%M')"

Проверяем статус шифрования

git-crypt status | grep WARNING

Пушим

git remote add origin git@github.com:username/notes.git
git branch -M main
git push -u origin main

Obsidian Git плагин

Открываем Obsidian, идём в Settings → Community Plugins → Browse, ищем Git (автор Vinzent), устанавливаем и включаем.
В настройках плагина настраиваем как нам удобно.
Теперь плагин сам тянет изменения при запуске Obsidian и автоматически коммитит и пушит по расписанию.
Вручную можно через Ctrl+P "Obsidian Git: Commit-and-sync" или кнопку в интерфейсе.

Важно: открывать Obsidian только после git-crypt unlock в терминале. Если открыть раньше — увидишь GITCRYPT... вместо заметок, плагин будет пытаться запушить мусор. Закрыть Obsidian, разблокировать в терминале, открыть снова.

Pre-commit хук

Хук блокирует коммит если файлы которые должны быть зашифрованы идут в открытом виде. Создаём файл .githooks/pre-commit

mkdir -p .githooks
touch .githooks/pre-commit
chmod +x .githooks/pre-commit

.githooks/pre-commit

#!/bin/bash
for file in $(git diff --cached --name-only); do
    if git check-attr filter "$file" | grep -q "git-crypt"; then
        string=$(git show ":$file" 2>/dev/null | head -c 9)
        if [ "$string" != $'\x00GITCRYPT' ]; then
            echo "file '$file' is not encrypted man be carefully"
            exit 1
        fi
    fi
done
exit 0
git config core.hooksPath .githooks
git add .githooks/pre-commit
git commit -m "$(date '+%Y-%m-%d %H:%M')"

Перенос на другое устройство

На старом устройстве:

gpg --export-secret-keys --armor mail@email.com > ~/key.asc

Копируем на новое через scp или флешку. На новом:

gpg --import ~/my-gpg-key.asc
git clone git@github.com:username/notes.git
cd notes
git-crypt unlock

Удаляем файл ключа с обоих устройств:

rm ~/my-gpg-key.asc

Открываем Obsidian, выбираем "Open folder as vault", указываем папку с клонированным репозиторием. Устанавливаем плагин Obsidian Git, выставляем те же настройки.

Бэкап GPG ключа

Без ключа и пароля доступ к заметкам потерян навсегда

gpg --export-secret-keys --armor mail@email.com > ~/backup-gpg.asc

Кладём в менеджер паролей или на внешний диск, после этого удаляем

rm ~/backup-gpg.asc

Cимметричный ключ без GPG

Если не хочется разбираться с GPG git-crypt умеет работать с обычным .bin ключом.

git-crypt export-key ~/key.bin

Удобный хак переводим его в base64 и храним как строку в менеджере паролей, не нужно таскать бинарный файл

base64 -i ~/key.bin

На новом устройстве:

echo "base64 string" | base64 -d > key.bin
git-crypt unlock key.bin

Минус: ключ не защищён паролем, если строка утечёт из менеджера паролей, заметки расшифруются.

Комментарии (25)


  1. dimonier
    10.03.2026 19:23

    Между чем синхронизируете?

    Чаще всего синхронизируют хранилище между компьютером и телефоном. На телефоне это взлетит?


    1. Iscander_Che
      10.03.2026 19:23

      Вот тот же вопрос.


      1. CrazyOpossum
        10.03.2026 19:23

        Через termux можно, но геморрно - нужно не забывать регулярно коммитить, ещё и с консоли в андроиде. У себя на vps давно развернул wireguard+syncthing - качество жизни сильно улучшилось, заодно поскидывал туда всякие user.js, базу keepass и т.п. - всё равно сервак непубличный. Даже не обязательно включать/выключать wireguard на телефоне для разного сёрфинга - dante на сервере, foxyproxy в мобильной лисе с нужными настройками и wg всегда онлайн.


        1. xpltt Автор
          10.03.2026 19:23

          Поэтому и существует obsidian-git, чтобы коммитить сразу через интерфейс без консоли. На android, как и на пк, работает нормально


          1. Hrodvitnir
            10.03.2026 19:23

            Только если хранилище маленькое

            У меня на тыще файлов регулярно отваливался


    1. xpltt Автор
      10.03.2026 19:23

      Да можно
      Через termux, там есть и git, и git-crypt всё ставится и работает


  1. meshk0ff
    10.03.2026 19:23

    Еще можно с помощью Syncthing синхронизировать


    1. diomas
      10.03.2026 19:23

      С syncthing (как наверное и с любой синхронизацией, где синхронизируется файл целиком) неприятный момент: если на одном устройстве создана какая-нибудь daily-заметка с содержимым, вы переключаетесь на другое устройство и открываете обсидиан до того как произошла синхронизация, то обсидиан создает дайли-заметку с таким же именем файла, но пустую и позже, когда syncthing все-таки синхронизирует, он оставит пустой файл как более свежий, а файл с содержимым пометит как conflict. При этом в обсидиане вы так и будете наблюдать пустую заметку и возможно пропустите то, что у вас там конфликт.


      1. winorun
        10.03.2026 19:23

        У меня таблица конфликтов есть, если она не пустая запускаем diff. Формат текстовый объединить конфликты легко.


      1. acyp
        10.03.2026 19:23

        Я создаю дэйли-заметки с минутами в имени. Вероятность создать заметки с одинаковыми именами резко снижается. Ну или для спидигонщиков: секунды в имени. В этом варианте можно вляпаться только умышленно.


      1. meshk0ff
        10.03.2026 19:23

        Да, есть такое. Хотя сам сталкивался с таким конфликтом всего лишь раз, в остальных случаях синхронизация успевала, но тут конечно от сценария использования еще зависит.


  1. LeshaRB
    10.03.2026 19:23

    Я когда пользовался обсидиан, на компе стоял GoodSync. А на телефоне Foldersync. И всегда надо было держать в памяти, что сперва сделать синхронизацию

    Потом купил подписку UpNote, где это все из коробки


    1. durnoy
      10.03.2026 19:23

      Интересно, почему переехали на UpNote, а не купили Obsidian Sync?


  1. dshemin
    10.03.2026 19:23

    Сейчас настаиваю и буду экспериментировать с Obsidisn + плагин LiveSync + Couchdb. По первому впечатление - работает достойно, но требует наличия своего сервера, чтобы развернуть couchdb. Плагин умеет в шифрования /дешефрование так, что можно и шареную couchdb использовать.


    1. evstropov_dv
      10.03.2026 19:23

      Одновременная работа возможна? Есть ли какие ограничения в этом? Хочу сбежать с onenote


      1. dshemin
        10.03.2026 19:23

        Заявлено что да. Но не пробовал как оно работает.


  1. mopsicus
    10.03.2026 19:23

    Давно использую Syncthing, синхронизация макбуком, смартфоном и vps. Всё отлично работает.


    1. evstropov_dv
      10.03.2026 19:23

      Одновременная работа возможна? Есть ли какие ограничения в этом? Хочу сбежать с onenote


      1. mopsicus
        10.03.2026 19:23

        Ну это ж апп для ведения заметок/базы знаний в соло. При одновременном редактировании одного дока могут быть конфликты, если это имеется ввиду. Но есть куча плагинов, например Relay, он вроде бы решает эту задачу.


    1. cuursivve
      10.03.2026 19:23

      А что насчёт iOS в этой схеме? Вроде бы для Syncthing нужна фоновая работа приложения, а iOS это не допускает


      1. mopsicus
        10.03.2026 19:23

        Не особо вникал, у меня андроид. Но для айос вроде есть неофициальный клиент: https://github.com/pixelspark/sushitrain


  1. error911
    10.03.2026 19:23

    Что то я тоже не понял, что с чем и зачем синхронизировать? если обсидиан уже сам по себе поддерживает синхронизацию. Выглядит как - прикручиваем к велику второе колесо.


  1. Dolby
    10.03.2026 19:23

    Ээм а нафига так сложно? Я например сделал синхро через nextcloud, в настройках обсидиана указал адрес сервера, выставил периодичность синхронизации и все норм работает


  1. SignFinder
    10.03.2026 19:23

    Remotely-save или remotely-sync

    Данные шифруют, основные публичные облака поддерживают


  1. Titsubishi
    10.03.2026 19:23

    Тестил, но все делается куда проще:

    https://habr.com/ru/articles/845900/

    Спасибо, Автор, но ты как-то сложно о простом:

    1) можно обойтись без сложных команд, а простым юзерам так вообще не понятно что к чему

    2) это все только пока GitHub нам отключат

    3) у GitHub есть ограничение по занимаемому месту и оно сильно меньше того, что может дать любой бесплатное облако.

    4) про git ignore молодец, что написал, но все же, лично от себя, рекомендую сохранять все конфиги, особенно если на одинаковых ОС работаешь - каждый раз переустанавливать плагины такое себе.