Сегодня в нашем кружке «оч.умелые клавиатурки» возврат блудных заметок домой. Долго пользовался платным 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сенком. Возможно есть ещё плагины, но мне зашёл именно этот.
Комментарии (35)
gmtd
15.05.2024 23:46+4Можно было упомянуть, что на мобилах git плагин имеет большие проблемы
Для синхронизации между своими устройствами без промежуточных серверов (и иногда даже без интернета) удобно использовать Syncthing
А так Obsidian очень крут
sergeygals Автор
15.05.2024 23:46спасибо, раньше не сталкивался, читаю что за зверь, вроде интересный, но уже есть такие моменты
кажется он несколько избыточен для заметок которые ведёшь один, вполне достаточно что бы они синкались в момент их открытия / изменения, а не делали это постоянно кушая батарею и трафик
git это все - таки SCM со всеми вытекающими удобствами
-
из FAQ - Is there an iOS client? There are no plans by the current Syncthing team to officially support iOS in the foreseeable future.
exTvr
15.05.2024 23:46+1кажется он несколько избыточен для заметок которые ведёшь один, вполне достаточно что бы они синкались в момент их открытия / изменения, а не делали это постоянно кушая батарею и трафик
Пользуюсь Syncthing`ом несколько лет на постоянной основе,
В списке поедающх батарею его надо ещё поискать - там довольно гибко настраиваются сценарии синхронизации. Я остановился на синхронизации по вай-ваю с рабочей и домашней машиной.
vagon333
15.05.2024 23:46кажется он несколько избыточен для заметок которые ведёшь один ...
Посмотрите Joplin.
Позволяет вести заметки в html/markdown/txt на desktop и делать web clips (выбрать текст статьти и добавить в базу через browser extension).Kahelman
15.05.2024 23:46+1Использую Joplin. Раньше синхронизировался все через Dropbox, но решил заняться же-Dropbox-сизацикй и передал на pCloud.
Joplin с ним секстить не удалось хотя вроде тоже есть WebDAV
В арендовал сервер и поднял WebDAV на нем. Цена 1 евро в месяц. Все работает.
Заодно там же свои репозитарий Fossil храню.
Раньше тоже пользовался Evernote -платной версией, слез на Joplin так как они в Evernote стали GUI уродовать, да ещё он и жутко тормозной стал.
Заметки импортировал в Joplin в общем и целом нормально, были проблемы. Некоторыми заметками -но это терпимо.
Сейчас 1100 замёток,
1300 ресурсов,
1400 note tags.
Работает без особых тормозов.
sergeygals Автор
15.05.2024 23:46таки не нашёл больших проблем.
SSH authentication is not supported - решаемо, даже в этом руководстве есть решение
-
Repo size is limited, because of memory restrictions, с памятью на девайсах у меня проблем нет, и вот автор дальше пишет
Setup: iPad Pro M1 with a repo of 3000 files reduced from 10000 markdown files
The initial clone took 0m25s. After that, the most time consuming part is to check the whole working directory for file changes. On this setup, checking all files for changes to stage takes 03m40s. Other commands like pull, push and commit are very fast (1-5 seconds).
не знаю когда я до таких размеров вырасту и вырасту ли вообще
Rebase merge strategy is not supported - да тоже не сильно большая проблема, нет в планах работать командой и делать много веток
Submodules are not supported - а вот это прям очень расстроило. (на самом деле нет). вообще не очень представляю нафик в личных заметках делать субмодльную папку
gmtd
15.05.2024 23:462 У меня 11К+ файлов
4. Я бы не называл это "личными заметками", там может быть что угодно. В том числе, например, отдельный расшариваемый между несколькими людьми репозиторий, который хочется "встроить" в свое общее хранилище
Я пытался настроить GIT, но у меня не получилось связать Андроид и десктоп. Ну и использовать клиент на JS для этого, то еще веселье (память, скорость)sergeygals Автор
15.05.2024 23:46да ты прав, импортнул в Obsidian 409 файлов из Evernote на маке, пушнул успешно, а вот на андроиде с 12G Ram при pull он начал тупо падать :( пришлось идти в termux и делать git pull установленным там клиентам. Но похоже это проблема тока больших апдейтов и вполне решаемая или использованием git команды или тасканием всего каталога целиком. На обычной работе когда меняется 2-3 файла эо не стреляет
schebotar
15.05.2024 23:46+4Когда Obsidian стал open source?
sergeygals Автор
15.05.2024 23:46+3да, что то я тупанул, решил что раз я поставил на gentoo то он opensource. был не прав :)
itmind
15.05.2024 23:46Хорошая система для ведения заметок, но со смартфонами проблема. Прежде чем открыть Obsidian необходимо синхронизировать файлы через другое приложение (пользуюсь FolderSync). А автоматически синхронизация не проходит, то ли Android вырубает фоновые задачи, то ли еще что то.
Для ПК сами файлы у меня на Яндекс.Диск и синхронизируются между всеми компами автоматом.
ritorichesky_echpochmak
15.05.2024 23:46+1 к FolderSync. Немного настроил и с сервера синкает по расписанию, на сервер синкает по появлению изменений. Если у вас телефон "энергосберегает" фоновые задачи приложения, то это настраивается в общих настройках приложений (там же где и никогда не отзывать права у приложения). Сервер как раз NextCloud с WebDAV. Немного непонятно зачем автору при наличии готовой файлопомойки понадобилось рядом ещё что-то городить.
Git удобнее тащить через GitHub/GitLab с их CI если вам это потом разворачивать на какой-нибудь микробложик через Hugo, который и хостится где-нибудь на GitHub Pages. Если сугубо под транспорт... Syncting и FolderSync наше всё
sergeygals Автор
15.05.2024 23:46FolderSync у меня есть, но паттерн его работы несколько другой. им я скидываю фотки в nextcloud которые автоматом из него дома забираются в photoprism, но я это делаю в ручную по мере необходимости, потому что если фотка попадает в nexcloud она автоматом уедет в photoprism на одном сервере, а так же в NAS на другом. удалять будет долго. поэтому я сначала чищу фотки от не удачных и только потом запускаю вручную таску на FolderSync. Ну и опять же, фотки это не текстовые заметки, если для фоток использование SCM такое себе то для текстовых заметок SCM самое то
sergeygals Автор
15.05.2024 23:46ну вот нет у меня никаких проблем на двух смарфонах на андроиде и ipad :) при открытии все автоматически пулится и пушается, при изменении заметок - тоже самое, руками делать редко что то надо
sergeygals Автор
15.05.2024 23:46+1основная идея статьи - безоблачное хранение данных :) а вы тут про яндекс диск :) яндекс диск завтра: закроется / начнёт читать ваши заметки через ИИ (или обучаться на них) / нечаянно выложит их в общий доступ / случайно проиндексирует в поисковке / случайно удалит, а folder sync будет настроен на полную синхронизацию с удалением и тоже все удалит на девайсе. Возможных сценариев много
itmind
15.05.2024 23:46Так Git же тоже где-то в "облаке". Есть центральный сервер где лежат все файлы и они синхронизируются с устройствами, и этот сервер должен быть всегда включен. Если параноить, то нужно домой покупать сервер, обеспечивать ему бесперебойную работу, пару каналов от разных провайдеров, отдельный генератор на случай выключения электричества )
sergeygals Автор
15.05.2024 23:46Кажется что статью вы не читали:) но если, вдруг, прочитаете то узнаете что git живёт именно на таком сервере дома который представляет из себя raspberry pi 4. Семейное пользование вполне переживает пару часов его отсутствие в случае перебоев с электричеством и интернетом. Генератор дома для этого держать смысла никакого нет, во-первых ups на 700 хватает для малинки надолго, а во-вторых даже если у вас три канала заходят домой то у провайдеров ups нет, и если отрубят электричество то их сетевое оборудование тупо отключится. На самом деле у меня малинки, начиная со второй, уже лет 8 торчат наружу со всякими гитами, own/nextcloud ами, и прочими ssh через одного провайдера и тупа на ups с nuts и никаких особых проблем с большими простоями я не помню.
gudvinr
15.05.2024 23:46+1В качестве git рекомендую gerrit
В качестве git можно использовать...
git: https://git-scm.com/book/ru/v2/Git-на-сервере-Настраиваем-серверОбёртки типа gitlab, gogs (который был форкнут сначала в gitea, а потом в forgejo), gerrit, cgit и т.д. вообще не нужны, если вы пользуетесь git как VCS, а не для пулл-реквестов, багрепортов и просмотра файлов через веб.
GIT живёт там же где и nextcloud
Почему тогда не webdav?
sergeygals Автор
15.05.2024 23:46начну со второго вопроса :) webdav это просто синк, git же ещё хранит историю заметок, а так же в целом не удаляет файлы, их всегда можно достать. ну и опять же, в статье есть пункт `Не умеет работать с ключами и ssh, удалось завести только с https и паролем`
ну и если совсем откровенно, то gogs у меня стоял до этого и много где используется, я просто включил его установк в этот гайд, все равно все в плейбуках ансибла и копи-паст это не сложно
gudvinr
15.05.2024 23:46git же ещё хранит историю заметок, а так же в целом не удаляет файлы, их всегда можно достать
Мысль была в том, что уже nextcloud используется, а не абстрактный webdav:
https://docs.nextcloud.com/server/latest/user_manual/en/files/version_control.html
dartraiden
15.05.2024 23:46+2Оставлю здесь одно слово - Joplin.
Синхронизировать можно хоть через публичные облака, хоть через собственноручно поднятый сервер синхронизации.
gmtd
15.05.2024 23:46Долго использовал Joplin
Ощущение в плане UX - сделан через одно место
И десктоп, и мобильные варианты
Вроде open source, но всё организовано и сделано как-то странно и проприетарно
Ну и отстает он и по внешнему виду и функционалу от прогрессаСинхронизировать можно хоть через публичные облака, хоть через собственноручно поднятый сервер синхронизации.
А можно ли его синхронизировать без облаков и своих серверов, как можно Obsidian?
dartraiden
15.05.2024 23:46Currently, synchronisation is possible with Joplin Cloud, Nextcloud, S3, WebDAV, Dropbox, OneDrive or the local filesystem.
https://joplinapp.org/help/apps/sync/
У меня база зашифрована, поэтому спокойно синхронизирую через дропбокс.
sergeygals Автор
15.05.2024 23:46спасибо, посмотрю, как-то раньше не попадалось. выглядит очень интересно
Ogy4ig
15.05.2024 23:46+1По мне так joplin в этом плане удобней и не имеет проблем с синхронизацией.+ опенсорс
Ordinatus
15.05.2024 23:46+1Тоже начинал заметки на Evernote. Потом переехал на Joplin, потом на Notion и пару лет назад уже на Obsidian. Он прекрасен и лучше всех, если решить задачу синхронизации.
Git это один из вариантов, я бы все таки рекомендовал gitea или gitlab - они пофункциональнее и решат еще другие проблемы, если не только под синк заметок.
Еще есть такой проект плагина синхронизации https://github.com/vrtmrz/obsidian-livesync
dsoastro
15.05.2024 23:46Я уже давно ушел с Evernote. Долго думал как вести заметки и ограничился текстовыми файлами в папках и питоновским скриптом для работы с ними в cli (https://github.com/dsoastro/notes). Синхронизация через гит. На смартфоне заметки можно открывать с тем же скриптом в termux, либо просто смотреть их в obsidian.
Kahelman
15.05.2024 23:46На компьютере это может нормально работать. Вопрос как этим пользоваться на телефоне? Рекомендую Joplin. Если не заморачиваться с шифрованием, то он заметки захрапит на сервере для синхронизации в текстовых файлах. Или можно работать с SQLite напрямую где он хранит нешифрованные версии на локальном диске.
Плюс есть Rest API.
Stillgray
Технически, если в вашем хранилище нет ничего чувствительного, можно ограничиться github/gitlab etc.
Всё становится ещё проще.
sergeygals Автор
ну или заплатить 4500 рублей за год, и ещё месяц не парится. так то да. но статья немного не про это
sergeygals Автор
год :) а не месяц