Заметочный суверенитет

В соответствии в наставлениями Президента и Правительства Российской Федерации укрепил свою личную IT-инфраструктуру и реализовал полный суверенитет моих заметок Obsidian. 

Долго не ввязывался в изучение этого популярного приложения для заметок, потому что долгие годы меня полностью устраивали Notes на айфоне/маке. Конечно, иногда не хватало нативного клиента на ПК, но под Windows я пользовался веб-версией, и это меня вполне устраивало.

И вдруг в начале мая 2026-го резко испортилась синхронизация заметок Apple между устройствами. Возможно, это как-то связано с кривыми руками провайдеров проводного интернета в моей деревне, которые особо рьяно исполняли указания по реализации блокировок всего и вся. Не знаю, не разбирался. Я пошел выбирать альтернативу. Выбрал Obsidian, который сразу полюбился мне структурой хранения заметок в виде папки с файлми на диске. Никаких тебе облачных серверов и баз данных.

Тестирование вариантов

Чистый Обсидиан великолепно работает оффлайн, но мне нужен был «заметочник» для зоопарка устройств на Windows, macOS и iOS. Разработчики предлагают собственное решение за 5 USD в месяц. Учитывая, что для меня раньше синхронизация заметок была бесплатной, я отложил этот вариант на последок, решив сначала изучать сторонние варианты.

iCloud

Так как в моем парке присутствует заметный перевес в сторону «яблочных» устройств, я попробовал предлагаемую Обсидианом нативную синхронизацию через облако Apple.

Если не притягивать к ней комп на Windows 11, то все работает отлично, хотя и с некоторой задержкой, явно заметной по сравнению с привычными Заметками.

Подключение ПК к семье «яблок» выявила серьезную проблему реализации iCloud для Windows — приложение регулярно создает дубликаты файлов. Недавно редактируемые заметки можатся и дублируются по несколько раз в день. Я понаблюдал за этим цирком пару дней и пошел искать решение дальше.

Яндекс Диск

В результатах поиска по запросу sync в каталоге камунити плагинов я наткнулся на плагин WebDAV Sync и вспомнил, что Яндекс Диск поддерживает такой протокол.

Довольно быстро настроил синхронизацию, мигрировал хранилище из iCloud в Яндекс Диск, и пользовался несколько недель. Меня немного раздражало, что настройки сторонних плагинов синхронизировались через раз. Но в целом без значков Iconic и кастомной сортировки можно жить. Тем более на халяву.

В один день я решил изменить систему хранения моих еженедельных дневников, и переименовал разом 22 заметки в одной из папок. Плагин бодро показал мне сообщение ✅ Sync Completed, я открыл Обсидиан на другом устройстве — а там всё по-старому. Попытки провести принудительную синхронизацию ни к чему не привели: в локальной папке файлы с новыми именами, в облаке лежат со старыми, а плагин считает, что у него все синхронно. Тут мы с ним и расстались.

Мой выбор

Сразу предупреждаю, что выбранный мой способ подходит скорее увлеченным технологиями людям. Заняты́е могут просто платить пять долларов за родной Obsidian Sync.

Погрустив один вечер без синхронизации, утром следующего дня я поднял сервер для Fast Note Sync. Решение, конечно, не бесплатное, но я и так арендую виртуальный сервер в Латвии (дешевле, чем за 5 долларов в месяц, кстати) для всяких приколов, поэтому дополнительных расходов не планируется. И, естественно, такой подход требует технических навыков, которыми я, к счастью, обладаю.

Синхронизация в реальном времени

Самая крутая фишка, которая зацепила меня в описании плагина — это поддержка мгновенного (ну, почти) обмена данными между клиентами. Работает по принципу Google Docs: ты печатаешь что-то на одном устройстве, а буковки в реальном времени появляются на другом. Задержка между обновлениями меньше секунды, что очень круто с учетом того, что мой VPS сидит где-то рядом с крупнейшим производством шпрот в мире.

Резервные копии по расписанию

Можно настроить бекап хранилища Обсидиан на S3, R2 или любое облако по WebDAV. Учитывая, что с последней технологией я уже был близко знаком, настроил ежедневный сброс полного архива в Яндекс Диск со сроком жизни 30 дней.

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

Обновление

Периодически на значке статуса плагина 🛜 появляется красная точка, сигнализирующая о выходе новой версии плагина или сервера. С плагином все просто, прямо в оповещении нажимаешь Update, и все обновляется за секунду. С сервером чуть интереснее.

Можно зайти на VPS по SSH и написать fns update, но выполнить обновление проще всего через веб-морду в браузере. С первого раза у меня это сделать не получилось. Кнопка Upgrade выдавала сообщение, что обновление запущено, но ничего не происходило. Тут же на странице настроек я ткнул Restart Service, перезапуск занять пару секунд. Повторное нажатие на Upgrade сработало штатно: страница перезагрузилась практически мгновенно и показала уже актуальную версию сервера.

Автоматическое обновление было бы явно удобнее. Мне как простому пользователю без разницы, на какой версии у меня работает плагин и сервер. Работаешь? Замечательно, работай молча, обновляйся со стабильного канала сам. Оповещения надо присылать, только если что-то наебнулось или не отработало автоматом. Видимо, автор приложения из тех разработчиков, которые любят уведомления на каждый чих, ничего не поделаешь.

Еще полезные особенности

  • Полная синхронизация конфигурации Обсидиан, в том числе и сторонних плагинов, без дополнительных настроек.
  • История правок.
  • Поддержка версий файлов.
  • Удаленное хранение вложений и доступ к ним из браузера.

В планах заявлена поддержка оконечного шифрования и локальный пир-ту-пир для обмена данными без интернета. Звучит, как существенная вычислительная нагрузка на сервер и приложение, конечно, но вещи полезные.

Итог

Важно помнить, что здесь мы говорим не об облачном сервисе, когда данные лежат на удаленном сервере, а клиенты подтягивают их по запросу. У нас полная локальная копия данных хранится на каждом устройстве отдельно, а сервер синхронизации — это лишь промежуточный узел для обмена самой свежей версией файлов. 

В случае отказа сервера, завершения поддержки со стороны разработчика или банальной блокировки VPS, я могу просто взять из бекапа последнюю версию хранилища Обсидиана, которое, напоминаю, представляет из себя обычную папку с файлами, и продолжить работать локально, пока ищу новое решение синхронизации.

Мне не нужно парсить кастомные структуры, мигрировать базы данных и заниматься прочим айтишным сексом, ведь вся информация хранится в текстовом формате. Я могу даже открыть любой из файлов *.md в блокноте, если сам Обсидиан сломается.

Именно этот контроль над моими данными меня привлекает больше всего в системе Obsidian по сравнению с Apple Notes, Google Keep и прочими Evernote.

Приложение 1. HTTPS и WSS

Меня несколько напрягал тот факт, что данные между сервером синхронизации и моими устройствами бегают в открытом виде, а менеджер паролей отказывается подставлять логин и пароль в поля веб-интерфейса сервера, потому что «Соединение не защищено».

В репозитории разработчика нашел шаблон конфигурации nginx. Сначала создал поддомен, потом ляпнул ему А-запись на IP виртуального сервера, и далее мы с ЧатомЦМД с горем пополам выпустили сертификат Let’s Encrypt и настроили проксирование через ЭнжинИкс.

Сначала, конечно, у меня нихрена не работало, хотя по ощущениями, все было сделано правильно: default отлинкован от site-enabled, ошибок certbot и nginx не выдают. Но не работает! Я ебнул кулаком по столу и пошел обедать. Через полчаса возвращаюсь — вместо Welcome to Nginx! открывается админка Fast Note. Спасибо, Фиксики!

Заменил IP:port в настройках плагина на новую ссылку, и все тут же подцепилось и закрутилось. Даже пропал ⚠️ Warning, который пугал открытой передачей данных и рекомендовал настроить HTTPS и WSS в публичной сети.

Что такое WSS пришлось гуглить, оказывается это WebSockets Secure, протокол шифрования данных на канале сокета. В шаблоне конфига она задана изначально и работает автоматически. За активацию WSS в конфиге отвечают вот эти две строчки:

proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

Для меня этот вопрос важен не столько потому, что я храню секретные данные в своем Обсидиане, а потому что не хочу, чтобы какой-то школьник просто по приколу нарисовал мне во всех заметках пенис псевдографикой. Не то чтобы я сильно против, но без посторонних пенисов как-то спокойнее.