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