Импортозамещаем Evernote. Obsidian – менеджер заметок и лучший друг менеджеров
Привет, Хабр! Меня зовут Николай Суворов. Я — профессиональный менеджер, руководитель направления Delivery Management в МТС Digital. Занимаюсь Enablement Platform — единой платформой для быстрого создания продуктов в экосистеме МТС. Сегодня я расскажу о своем pet-проекте и о том, как я заменил привычный, но такой недоступный Evernote прекрасным менеджером заметок Obsidian. Статья будет интересна прежде всего тем, кто хочет обладать «вторым мозгом» и ни о чем не забывать.
По поводу «второго мозга» — это не фигура речи. Obsidian — менеджер заметок, который позволяет создавать свою «нейросеть» из атомарных кусочков информации, связанных между собой.
Если вам интересна только лишь установка Obsidian на базе частного облака — сразу пролистывайте статью до раздела техстека и установки. А я для начала расскажу о причинах и следствиях ведения заметок вообще.
Зачем нужен менеджер заметок и чем он отличается от блокнота, «Избранного» в Telegram и похожих инструментов
Менеджер заметок нужен, чтобы ничего не забыть и не упустить. Лично я стал пользоваться подобным софтом в далеком уже 2012 году, когда объемы входящей информации начали переполнять все возможные «емкости» в голове. Это был период, когда я начинал свою карьеру интернет-маркетолога и составлял семантические ядра по 100 000–200 000 строк. И к этим массивам нужно было добавлять некие пояснения о тематике и ограничениях.
Поначалу с целью хранения кусочков информации я использовал текстовые файлы, созданные в программе Блокнот. Этот способ здорово выручал (особенно если аккуратно составлять иерархию папок), но было трудно искать нужную папку в иерархии, когда таких папок становилось несколько десятков.
Параллельно мне нужно было сохранять заметки о SEO и контекстной рекламе, собирая по крупицам информацию на форумах и по конференциям. Эти заметки тоже накапливались, со временем стало трудно искать среди вороха файлов нужный, используя обычный поиск Windows. Одним словом, техника явно не вытягивала стоящие задачи. И тут, в одном из подкастов @rosnovsky, я услышал о Evernote.
Поставил, попробовал. Очень понравилось. В Evernote были возможности тегирования, инкрементального поиска, доступа с множества устройств. Это был «старый добрый» Evernote, который быстро работал и прекрасно справлялся со своей единственной и главной функцией — создания, редактирования, хранения и поиска заметок. Значительно позже в продукте полностью сменилась команда и его так «перебрали», что привыкать к улучшенному функционалу пришлось, как к совершенно новому продукту. Старые пользователи Evernote меня поймут.
Поверх привычного Evernote со временем пришлось наложить еще Telegram-бота для отправки заметок. Механизма создания заметок из почты уже не хватало. Нужна была максимальная оперативность и независимость от тормозящего мобильного приложения.
Кстати, сам Telegram вполне можно рассматривать в качестве менеджера заметок. В нем есть и поиск, и теги. Количество и содержание заметок может быть любым. В целом, если у вас однотипные заметки в небольших масштабах — Telegram закроет эту потребность. Но когда заметок станет несколько сотен, управлять таким объемом через Telegram станет затруднительно. Поиск ранее найденной и сохраненной информацию будет отнимать времени больше, чем сбор с нуля. Специальный менеджер заметок более приспособлен для удобного сохранения и быстрого поиска заметок. К тому же, он удобнее для мгновенного обзора большого массива единиц информации, включая иерархию каталогов, в которой она хранится. Мы еще поговорим об этом ниже.
Что случилось с Evernote и почему я вообще стал искать альтернативу
Об альтернативе Evernote я задумался ещё в 2018 году, когда сервис начал слишком быстро внедрять различные «улучшения», зачастую они приводили к невозможности работать с заметками в нормальном режиме. При этом подписка, разумеется, была платной и стоила порядка 2500 рублей в год. Бесплатная подписка и раньше не давала львиной части возможностей, а после смены команды вообще потеряла всякий смысл, поскольку позволяла использовать блокноты лишь на 2 устройствах вместо 5 (как раньше). В 2018 году достойных альтернатив Evernote не нашлось, а возвращаться к txt-файлам не хотелось. Пришлось привыкнуть к новшествам и платить, как раньше.
В феврале 2022 года сервис Evernote перестал принимать оплату в рублях. Оплаченная в сентябре подписка заканчивалась, а пользоваться бесплатной версией по-прежнему было практически невозможно. Почтовый ящик поддержки многозначительно молчал в ответ на все письма с призывами и мольбами.
Была еще идея воспользоваться помощью родственников, живущих в другой стране. Но не хотелось обременять своими проблемами, ведь возвращать деньги — это целая история. Да и это решение — временное, не закрывающее проблему полностью. Услуги сторонних компаний по онлайн-оплатам стоили примерно как подписка на год, а ехать за границу и оформлять там карту ради одного сервиса мне показалось не слишком рациональным решением.
Почитав форумы в интернете, я пришел к выводу, что Evernote окончательно ушел из России. Как ни прискорбно, но после 10 лет использования менеджера заметок со слоном пришлось искать ему альтернативу.
Менеджер заметок на основе Markdown — муки выбора
Альтернатив, собственно, было не так много. Поискав различные варианты, я нашел несколько умерших проектов, включая один отечественный. Все живые продукты объединяло то, что они были построены на удобном формате markdown-разметки и, в отличие от Evernote, ушли от собственной базы данных с заметками. Несмотря на то, что Evernote позволял экспорт-импорт заметок в формате .ENEX, (что несколько раз меня выручало) файловое хранение — это более гибкий вариант. Почему?
бэкап заметок всегда можно скопировать на резервный носитель;
импорт сводится к копированию массива файлов в нужную папку;
никаких проблем с совместимостью.
Хотя появились новые проблемы, например, с сохранением даты создания и изменения файла при использовании Яндекс.Диска. Но об этом далее. Свой выбор я окончательно остановил на markdown-разметке и файловом хранении заметок.
Особенность markdown-файлов в том, что их легко создавать и открывать в любом удобном редакторе или блокноте. Файл имеет расширение .md. Формат — элементарный. Он намного проще HTML, при этом позволяет писать заметки практически с любыми стилями текста. Проблема была только в универсальном редакторе для десктопа и мобильных устройств, а также возможностях тегировать заметки, осуществлять быстрый поиск по ним и хранить их в облаке.
Собственное решение
Первое что пришло в голову — написать что-то свое. Например, некий бот в Telegram, который бы сохранял заметки в виде файлов в удобной мне структуре каталогов и позволял искать. Но проблема этого варианта в том, что редактор таких заметок — поле ввода в Telegram. Поиск был бы не инкрементным. Навигация по каталогам, система тегов — все это было бы затруднительным. Создавать свой редактор с нуля, допустим, по уникальной коротко живущей ссылке из Telegram, я оценил примерно в 3–4 недели работы. Систему поиска пока не оценивал. Но все равно выглядело как-то накладно и похоже на свой велосипед, к тому же не слишком удобный для использования. Хотя я до сих пор не оставляю эту идею и, возможно, сделаю подобного бота в качестве дополнения к Obsidian.
Joplin, Notion, EvaWiki и другие
Далее я прочитал множество обзоров на редакторы заметок. Требования для себя определил такие: удобный редактор, поиск, теги, мультиплатформенность, децентрализованность хранения заметок.
Joplin показался слишком сложным и негибким. Интерфейс похож на Evernote. Но это и снижает ценность. Такое решение слишком стремится быть чем-то другим. Нет фишек, которые реально делали бы его удобным. Поддержка Android слабовата.
Многие советовали Notion. Но при детальном рассмотрении оказалось, что это точно такое же централизованное решение, каким был Evernote. Тоже платное и для россиян практически недоступное. Да еще и любит приврать о несуществующих акциях ради хайпа.
Делать сервис заметок на основе Wiki оказалось тоже не слишком удобным. Нужен именно сервис заметок, заточенный под эту задачу, а не база знаний. Вики-статью неудобно читать со смартфона, неудобно править. Это инструмент для решения других задач.
Одним словом, альтернативу я искал довольно долго и уже почти опустил руки, как вдруг где-то наткнулся на описание Obsidian.
Чем хорош Obsidian
Начну с того, что Obsidian — закрытое решение. Это не Open source-проект. Открытыми в нем могут быть только плагины сообщества, которых, к слову, уже более 700. Он мультиплатформенный. Приложение на Android хорошо проработано и удобно. Есть инкрементный поиск, теги, поиск по тегам. Структура каталогов может быть любой, потому как используется полностью файловое хранение заметок. Кроме обычного функционала есть ряд фишек, которыми сразу хотелось бы поделиться.
Первая и главная фишка: плагины сообщества. Они есть практически по любому вопросу, на любую тему. Хотите редактировать таблицы — на это несколько плагинов. Хотите расширить возможности редактора и добавить к нему новые кнопки подсветки текста — на это тоже плагинов 10 есть точно. А еще плагины для подсветки синтаксиса кода, всевозможные таск-менеджеры, календари, канбаны, mind-maps, перехватчики горячих клавиш, напоминатели и так далее и тому подобное.
Мой личный ТОП плагинов на сейчас:
Advanced Tables — предоставляет дополнительное меню для облечения не самого гибкого редактирования таблиц в Markdown. Добавление строк, столбцов, удаление. Самые простые операции;
Notion-Like Tables — еще один способ сделать таблицу в Markdown. Таблицы, пожалуй, — наиболее слабое место этого языка разметки. В некоторых случаях для этого удобнее использовать отдельный редактор;
cMenu — добавляет еще одну панель, на которую можно выводить кнопки помощников, например, для создания списков/чек-листов, подсветки, выделения жирным и так далее;
Dataview — мощнейшая функция, доступная только в Obsidian, которая, пожалуй, заслуживает отдельной публикации на Хабре. Позволяет прямо в статье вывести выборку заметок по тегу, либо из определенной папки, с учетом многочисленных условий. В целом, помогает реализовать контекстный поиск информации, как у Evernote «Еще заметки по этой теме», но намного гибче и круче;
Image Toolkit — дает функцию увеличения изображения по клику, слайд-шоу из заметки. Минимальный, но приятный функционал для более удобного просмотра картинок;
PlantUML — да, Obsidian умеет рисовать PlantUML. И поэтому он может стать бесценным инструментом для архитекторов, аналитиков и девопсов.
Я вскользь упомянул нейросеть. Дело в том, что Obsidian позволяет связывать заметки и отображать эти связи в графическом виде open graph. Если информация достаточно атомарна и качественно связана между собой, то можно еще лучше ориентироваться среди заметок, используя (помимо привычного облака тегов) одну из главных фишек нашего зрения: возможность мгновенного графического обзора множества сущностей, связей между ними и положения относительно друг друга.
Поиск информации теоретически упрощается в несколько раз. При помощи Obsidian вы можете группировать блоки вашей нейросети, увеличивать и уменьшать силу притяжения заметок к узлам, добавить теги в качестве узлов, фильтровать узлы, увеличивать и уменьшать дистанцию между ними. Есть множество роликов по использованию этой фичи. Однозначно утверждать о ее полезности или бесполезности не берусь: «смотря для чего, смотря для кого» (см. Графы в Obsidian).
На скриншоте пример того, как выглядит граф моих заметок за 2012–2014 годы (добавлены еще в Evernote). Кое-что пересекается. Заметки за эти годы ещё практически не связаны между собой иначе, чем через тег из 4-х цифр года.Пример связей между единицами информации. Возможно, не слишком атомарно. Зато легко вспомнить о чём вообще шла речь.
Кроме этого, в Obsidian есть хорошо знакомая поклонникам Visual Studio Code палитра команд с инкрементным поиском. Лично мне она кажется гораздо удобнее и практичнее массивных меню с десятками пунктов.
А еще редактор позволяет:
выводить заметки в отдельных вкладках;
разделять экран между двумя-тремя-четырьмя заметками;
добавлять заметки в избранное;
делать шаблоны из заметок для быстрого создания однотипных единиц информации;
создавать кастомные мета-теги.
Вообще, тут есть множество функций, закрывающих потребности как менеджеров, так и айтишников или ученых, которые хотели бы систематизировать свои информационные активы.
Теперь к наиболее интересной теме — установке всей этой красоты на базе частного облака с возможностью кросс-платформенного доступа к заметкам.
Техстек — Syncthing+Docker+Obsidian (Linux+MacOS+Android+Windows)
Вообще, сначала у меня был еще и Яндекс.Диск. Я его хотел использовать для того, чтобы все заметки автоматически сохранялись не только в частное облако и была некая гарантия сохранности информации, доступа к ней откуда угодно независимо от работоспособности собственного кластера. В дальнейшем от этой идеи пришлось отказаться, а контейнер с Яндекс.Диском отключить в докере, чтобы он не сбивал даты создания-обновления заметок. Диск с этой темой не дружит, а даты важны для сохранения хронологии сохраненных единиц информации. Это крайне полезная история при ревью годового списка заметок, например. Кстати, неплохой метод подведения итогов прошедшего года на новогодних каникулах, всем советую попробовать.
Не считая Яндекс.Диска, сразу захотелось использовать частное облако, потому как WebDAV — неудобный и медленный. А хранить заметки только на мобильном или только десктопном устройстве непрактично. Есть еще опция подключения облака самого Obsidian за небольшие деньги. Но после истории с Evernote я больше не связываюсь с облаками за пределами РФ. Зато как-то сразу нашелся Syncthing.
Общая схема первоначально выглядела примерно так:
Syncthing запустил в докере командой:
docker run -d --name=syncthing --hostname=syncthing -e PUID=1000 -e PGID=1000 -e TZ=Europe/Moscow -p 8384:8384 -p 22000:22000/tcp -p 22000:22000/udp -p 21027:21027/udp -v syncthing-conf:/config -v yd-data:/data1 --restart unless-stopped lscr.io/linuxserver/syncthing:latest
Это первый же попавшийся мне контейнер с hub.docker.com. Вполне рабочий вариант. Диск yd-data — тот самый, который планировался для использования одновременно Syncthing и Яндекс.Диск. На томе syncthing-conf конфигурация пишется стандартно, вывел отдельно, чтобы не пропадала вместе с контейнером в случае чего. При настройке Syncthing на VPS (через админский интерфейс на порту 8384) первое, что делаем — заводим сложный пароль к админке. Еще лучше, если добавить SSL-сертификат, безопасность ваших данных все-таки.
Далее создаем настройку для нашей папки, указываем путь к ней. В моем случае это папка /data1. Там все интуитивно понятно, разобраться не трудно. Из дополнительных настроек рекомендую установить Ignore Perms, которая позволяет игнорировать права на синхронизируемые файлы и пишет все на диск под PUID/GUID, который вы указали при поднятии контейнера. PUID/PGID — настройка владельца файлов по умолчанию. Она позволит отвязаться от имени юзера на конкретной VPS и разделять диск между несколькими контейнерами с одним и тем же владельцем.
Далее ставим Syncthing на мобильное устройство. Тут немного сложнее настройки. Для гарантии безопасности хранения данных владельцам Samsung рекомендую использовать Knox и все ставить в нем. Приложение должно быть всегда сверху и не засыпать в порядке энергосбережения. Все эти настройки — стандартные для Android, насчет iPhone не скажу. Не уверен, что там вообще возможно такое поставить.
Важно никогда не указывать ваш VPS рекомендателем (introducer), поскольку в этом случае вам автоматически будут добавлены на мобильное устройство все другие устройства, которые синхронизируются с VPS. И это очень плохо, так как Syncthing не умеет разруливать одновременные синхронизации и конфликты версий неизбежны. В настройках рекомендую сразу указать IP вашего VPS и порт синхронизации. В моем случае он 22000. Это ускорит соединение с сервером и в целом синхронизация будет работать быстрее. ID вашей VPS можно ввести как символами, так и считать QR-код с экрана.
Настройки Syncthing на вашем устройстве будут выглядеть примерно так.
Через пару минут после сохранения настроек в админском интерфейсе Syncthing на вашей VPS появится приглашение добавить устройство и дать ему права на папку. Далее идете в настройку папки, даете права только что добавленному устройству. На устройстве тоже через несколько минут появляется уведомление о том, что такая-то нода дает права на папку. Когда откроете, вам предложат выбрать место, где будете хранить синхронизируемые файлы. После этого какое-то время уйдет на синхронизацию. На этом настройка вашего частного облака закончена.
Настраивать Obsidian особо не потребуется. Нужно только указать, где лежат ваши заметки и поставить нужные модули. В ряде случаев удобнее заводить новые заметки прямо из Telegram. Для этого я написал небольшого бота, сохраняющего заметки из новых сообщений, в том числе с файлами. Вы тоже можете воспользоваться им, он удобный.
Заключение
Итак, мы разобрались, почему так важно вести заметки — они помогают нам не забывать важную информацию. Кроме того, их можно связывать между собой, строя собственную базу знаний или даже «нейросеть», ускоряющую поиск уже нарытых ранее сведений по нужной вам теме в несколько раз. Мы обсудили, чем отличается специальный менеджер заметок от того же Блокнота или похожей утилиты, встроенной в операционную систему. Разобрали, чем был хорош Evernote и почему он сейчас стал недоступным пользователям из России.
Самое главное — мы поняли, какие есть альтернативы Evernote, в чем разница между ними и почему Obsidian, по моему скромному мнению, — лучший менеджер заметок на сегодня. Мы подняли частное облако на базе Syncthing, попробовали Яндекс.Диск как резервное хранилище и отказались от него из-за выявленного критичного недостатка, состоящего в (не) сохранении хронологии заметок.
Надеюсь, эта статья поможет вам заменить ненадежные коммерческие решения, сохранить ценную информацию и в конечном итоге улучшить эффективность своей работы. Буду рад ответить на ваши вопросы в комментариях.