Возврат заметок домой на Obsidian и git

от автора

Сегодня в нашем кружке «оч.умелые клавиатурки» возврат блудных заметок домой. Долго пользовался платным Evernote, но оплатить его все труднее и дороже. Вернее даже так, сейчас я знаю всего один способ оплатить подписку через Билайн / МТС и Apple. Притом без оплаты подписки Evernote ужасен и порезан самым неприятным образом. Конечно есть ещё Notion, но кто знает как и когда он окуклиться как это случилось со временем с Evernote.

В качестве новой основы заметок я выбрал obsidian.md. Море документации, толпа плагинов, готовые сборки подо все используемые мной платформы, в общем, все как мы любим. Я верю что вы умеете ставить докер и не стал это добавлять отдельным пунктом и немного понимаете ansible сценарии, потому что пару ролей будет именно на нем

Синхронизация

В результате долгих раздумий в качестве синхронизации был выбран git. Реализуется такая синхронизация с помощью плагина. Он имеет некоторые особенности:

  1. Не умеет работать с ключами и ssh, удалось завести только с https и паролем

  2. Так как это плагин, а плагины в obsidian хранятся в директории с заметками, то при первом использовании возникает проблема курица и яйца, впрочем легко решаемая, расскажу об этом далее.

  3. Файл .obsidian/workspace.json часто вызывает конфликты при pull/push, поэтому его надо сразу добавить в.gitignore как описано тут.

  4. Как правильно сказал @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 

На что надо обратить внимание

  1. Volume caddy_config и caddy_data обязательно нужны, иначе при каждом рестарте caddy будет забывать что ssl сертификат запрошен и получен, он будет делать это снова и вас быстренько забанят на letsencrypt.org

  2. 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

Начало работы

Из за ограничений Рекомендую начинать работать на лаптопе или десктопе

  1. создаем новый каталог

  2. вручную создаем в нем .git через git init

  3. создаем .gitignore, как описано тут.

  4. Добавляем его и коммитим в git репу

  5. Открываем в Obisidian каталог как vault, ставим git плагин, настраиваем бекап через git

  6. Экспортируем заметки из Evernote, импортируем их в Obisidian

Добавление новых устройств

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

Бекапы

Ввиду того что это git в версионности бекапов особого смысла нет. На самом деле при большом количестве девайсов и в бекапах особо нет смысла. У меня, например, Obsidian живёт на iPad, MacOS, Android и Linux. То есть на 6 девайсах есть своя копия разной степени синканутости. Так что потеря сервера не выглядит чем-то критичным в свете потери данных. Но вполне можно запилить на сервере и бекап, ничего сложного.

Шаринг

Для шаринга отдельных заметок можно использовать, например, плагин. Нужно будет создать аккаунт в notion, получить api key и database id. Все описано в документации плагина, правда лично мне по началу не очень понятно, пришлось поморщить мозг. Но оно точно работает, клянусь соседским порoсенком. Возможно есть ещё плагины, но мне зашёл именно этот.


ссылка на оригинал статьи https://habr.com/ru/articles/814677/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *