Сегодня в нашем кружке «оч.умелые клавиатурки» возврат блудных заметок домой. Долго пользовался платным Evernote, но оплатить его все труднее и дороже. Вернее даже так, сейчас я знаю всего один способ оплатить подписку через Билайн / МТС и Apple. Притом без оплаты подписки Evernote ужасен и порезан самым неприятным образом. Конечно есть ещё Notion, но кто знает как и когда он окуклиться как это случилось со временем с Evernote.
В качестве новой основы заметок я выбрал obsidian.md. Море документации, толпа плагинов, готовые сборки подо все используемые мной платформы, в общем, все как мы любим. Я верю что вы умеете ставить докер и не стал это добавлять отдельным пунктом и немного понимаете ansible сценарии, потому что пару ролей будет именно на нем
Синхронизация
В результате долгих раздумий в качестве синхронизации был выбран git. Реализуется такая синхронизация с помощью плагина. Он имеет некоторые особенности:
Не умеет работать с ключами и ssh, удалось завести только с https и паролем
Так как это плагин, а плагины в obsidian хранятся в директории с заметками, то при первом использовании возникает проблема курица и яйца, впрочем легко решаемая, расскажу об этом далее.
Файл
.obsidian/workspace.jsonчасто вызывает конфликты при pull/push, поэтому его надо сразу добавить в.gitignore как описано тут.Как правильно сказал @gmtd в комментариях плагин имеет большие проблемы с производительностью, у меня это стрельнуло примерно на 400 файлах, с MacOS изменения залились но вот на телефоне с 12G RAM Oblivion сделать pull этим изменениями не смог, и тупо падал в процессе. Поэтому пришлось идти в каталог через termux и делать git pull установленным гитом. Поэтому рекомендуется делать импорт из Evernote и первый push делать на ноуте или десктопе. Там проще себе помочь нативным запуском git если что‑то пойдёт не так. А на новые девайсы лучше тащить весь каталог при начале работы, и потом уже push/pull обычной работы обычно небольшими изменениями.
GIT + HTTPS
Так как мы в нашем кружке бежим из облаков и становимся хозяевами своих данных, то git https мы тоже будем держать свой. Описанный ниже сетап отлично живёт на Raspberry PI 4, которая торчит в DMZ дома и открыта по 443 порту через DNAT. Немного схем сетапа есть в статье. GIT живёт там же где и nextcloud. В качестве https могу сильно порекомендовать caddyserver.com. C минимальной конфигурацией он будет сам делать let's encrypt сертификаты и реверсно проксировать наш git, о котором ниже. В нашем кружке мы немного девопсеры и поэтому описание деплоя будет на Ansible. Для простоты не будут приведены рестартующие хендлеры и прочая очевидная шняга. Caddy можно деплоить примерно такой ansible ролью:
tasks/main.yaml и files/Caddyfile
- name: Create /etc/caddy file: path: "{{ item }}" state: directory mode: 0755 loop: - /etc/caddy - /etc/caddy/sites/ - name: Create caddy docker volumes docker_volume: name: loop: - caddy_config - caddy_data - name: Start caddy docker_container: name: caddy image: caddy:latest network_mode: host restart_policy: always state: started volumes: - /etc/caddy:/etc/caddy - caddy_config:/config - caddy_data:/data - name: Copy Caddyfile copy: src: Caddyfile dest: /etc/caddy/Caddyfile mode: 0644 notify: - Restart caddy
{ email my@email.ru } import /etc/caddy/sites/*.caddy
На что надо обратить внимание
Volume caddy_config и caddy_data обязательно нужны, иначе при каждом рестарте caddy будет забывать что ssl сертификат запрошен и получен, он будет делать это снова и вас быстренько забанят на letsencrypt.org
email в file/Caddyfile тоже обязателен и может быть любой, это тоже для letsencrypt.org
После прогона роли у нас все готово для git. В качестве git рекомендую gerrit. Ахаха, испугались? Шучу. gogs.io. Эдакий гитхаб на минималках. Не скажу чем он лучше или хуже gitea.com, выглядит легковеснее и отлично работает на rasberry pi 4. Роль для него на Ansible выглядит примерно так:
tasks/main.yaml и files/Caddyfile
############## Caddy - name: Caddy include_role: name: caddy - name: Copy Caddyfile copy: src: caddy/Caddyfile dest: /etc/caddy/sites/git.caddy mode: '0644' notify: - Restart caddy - name: Create /var/gogs/ file: path: /var/gogs state: directory mode: '0755' - name: Start Gogs docker_container: name: gogs image: gogs/gogs:latest state: started restart_policy: always volumes: - /var/gogs:/data ports: - "18743:22" - "3003:3000" env: RUN_CROND: "true" BACKUP_INTERVAL: "1d" BACKUP_RETENTION: "6M"
git.example.com { reverse_proxy 127.0.0.1:3003 }
Собственно только после прогона этой роли https на caddy и заработает, потому что caddy поймет что сертификат надо будет делать для сайта git.example.com
Начало работы
Из за ограничений Рекомендую начинать работать на лаптопе или десктопе
создаем новый каталог
вручную создаем в нем .git через
git initсоздаем .gitignore, как описано тут.
Добавляем его и коммитим в git репу
Открываем в Obisidian каталог как vault, ставим git плагин, настраиваем бекап через git
Экспортируем заметки из Evernote, импортируем их в Obisidian
Добавление новых устройств
Ввиду проблемы курицы и яйца, а так же проблемы у гит плагина при большом количестве файлов при начале использования Obsidian на новом девайса рекомендую утащить каталог целиком с уже настроенного девайса и открыть его на новом девайсе как vault.
Бекапы
Ввиду того что это git в версионности бекапов особого смысла нет. На самом деле при большом количестве девайсов и в бекапах особо нет смысла. У меня, например, Obsidian живёт на iPad, MacOS, Android и Linux. То есть на 6 девайсах есть своя копия разной степени синканутости. Так что потеря сервера не выглядит чем-то критичным в свете потери данных. Но вполне можно запилить на сервере и бекап, ничего сложного.
Шаринг
Для шаринга отдельных заметок можно использовать, например, плагин. Нужно будет создать аккаунт в notion, получить api key и database id. Все описано в документации плагина, правда лично мне по началу не очень понятно, пришлось поморщить мозг. Но оно точно работает, клянусь соседским порoсенком. Возможно есть ещё плагины, но мне зашёл именно этот.
