Как стать автором
Обновить

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

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров8K

Сегодня в нашем кружке «оч.умелые клавиатурки» возврат блудных заметок домой. Долго пользовался платным 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сенком. Возможно есть ещё плагины, но мне зашёл именно этот.

Теги:
Хабы:
Всего голосов 11: ↑11 и ↓0+15
Комментарии39

Публикации

Истории

Работа

DevOps инженер
50 вакансий

Ближайшие события

AdIndex City Conference 2024
Дата26 июня
Время09:30
Место
Москва
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область