Как запустить свою базу знаний?
База знаний — это структурированная система хранения и управления информацией, которая обеспечивает быстрый доступ к данным, их обновление и анализ.
Цель и необходимость
Предпосылки:
Невозможно всё держать в «оперативной памяти», но очень хочется такую возможность иметь.
Часто кажется, что мыслей новых много, а это не так и связано такое положение дел с работой мозга. Он часто возвращается к одним и тем же мыслям, но мы этого не запоминаем.
Много действительно новых идей рождается после просмотра связанных и переработанных «мыслей».
Из предпосылок видно, что чтобы эффективно взаимодействовать с окружающим миром мы вынуждены выносить значительную часть информации на внешние «носители». Таким образом, мы уже подошли к необходимости создания базы знаний.
Требования к базе знаний:
Хранение большей части информации локально, чтобы не зависеть от корпораций и наличия интернета.
Наличие поиска и он должен работать за разумное время.
База знаний должна быть доступна на всех устройствах.
В статье попытается максимально выполнить все наши требования.
Теория
Уверен в том, что теория нужна для эффективного взаимодействия с базой знаний, иначе велик риск бессмысленной траты ресурсов и прежде всего времени. Хочу отметить, что желательно прочитать эти книги самостоятельно. Нам нужны 2 книги:
Как привести дела в порядок. Искусство продуктивности без стресса. Книга про необходимость создания быстрых списков и процедур для работы с этими списками.
Как делать полезные заметки. Эффективная система организации идей по методу Zettelkasten. Книга про необходимость ведения каталога мыслей и связей между ними. Именно связи позволяют генерировать новые идеи.
Вывод по теории такой - нужно иметь возможность быстро создавать списки и связывать их между собой. Должны быть определенные процедуры вокруг этих списков, но это уже другой вопрос, а наша основная цель запустить базу знаний.
Решения
Набор решений для меня такой:
Obsidian - интерфейс взаимодействия с markdown. Я знаю, что программа имеет закрытый код, но для меня важно, что формат хранения заметок это markdown и эти заметки хранятся локально на устройствах. При необходимости можно перейти на другие решения и этот переход потребует минимум усилий. В этом программном продукте развивается механизм связей, а в других продуктах подобной работы не нашел. В частности можно всю базу знаний отобразить в виде графа. Ниже отображение в виде графа моей базы знаний.
Nextcloud - сервер для хранения, отображения и взаимодействия с базой знаний. Под базой знаний в основном буду понимать заметки в markdown. Но когда начинаешь работать со свой личной информацией, то понимаешь что тебе нужно в заметки перенести всю свою доступную информацию. Именно поэтому я делаю в заметках ссылки на отдельные сервисы в своем облаке.
Syncthing - сервер для синхронизации данных между сервером и устройствами. Через этот сервис синхронизирую на текущий момент: фото/видео, рабочие каталоги, базу знаний.
docker-compose
syncthing:
image: lscr.io/linuxserver/syncthing:latest
container_name: syncthing
hostname: syncthing
environment:
- PUID=33 # Это пользователь www-data и он нужен для отсутствия конфликтов с nextcloud. Можно заменить на 1000 и тогда будет работать от текущего пользователя
- PGID=33 # Это группа www-data и он нужен для отсутствия конфликтов с nextcloud. Можно заменить на 1000 и тогда будет работать от текущего пользователя
volumes:
- ./config_syncthing:/config # Основной конфиг
- /mnt/private_media:/mnt/private_media # Мои фото/видео для синхронизации смартфонов
- /mnt/documents:/mnt/documents # Тут хранится база знаний
ports:
- 8384:8384
- 22000:22000/tcp
- 22000:22000/udp
- 21027:21027/udp
restart: unless-stopped
networks:
- default
В первый запуск попросят задать логин и пароль для стандартной авторизации, нужно сделать: Действия -> настройки -> Интерфейс. Далее настраиваем доступ к конкретным папкам:
На сервере «Добавляем папку» и прописываем поведение синхронизации.
Передаем ID сервера на устройства через Действия -> Показать ID. Рекомендую задать пароль для каждой папки-устройства, чтобы точечно контролировать получателя и отправителя.
ПК (Linux)
Для Arch Linux установка выглядит следующим образом:
# Установка obsidian
sudo pacman -S obsidian
# Установка syncthing
sudo pacman -S syncthing
Основное место взаимодействия с базой знаний для меня ПК, поэтому стараюсь сделать максимально эффективное взаимодействие именно тут.
В автозапуске прописываем (Linux): /usr/bin/syncthing --no-browser
. Заходить можно по адресу: http://127.0.0.1:8384
Смартфон (Android)
На смартфон устанавливаем:
Итоги
В итоги имеем механизм заведения списков и механизмы их синхронизации + механизмы поиска внутри нашего облака. Стоит развивать работу с процедурами эффективной работы с собственной базой знаний, но это уже находится за пределами данной статьи.
Ссылки: