Как запустить свою базу знаний?

База знаний — это структурированная система хранения и управления информацией, которая обеспечивает быстрый доступ к данным, их обновление и анализ.

Цель и необходимость

Предпосылки:

  1. Невозможно всё держать в «оперативной памяти», но очень хочется такую возможность иметь.

  2. Часто кажется, что мыслей новых много, а это не так и связано такое положение дел с работой мозга. Он часто возвращается к одним и тем же мыслям, но мы этого не запоминаем.

  3. Много действительно новых идей рождается после просмотра связанных и переработанных «мыслей».

Из предпосылок видно, что чтобы эффективно взаимодействовать с окружающим миром мы вынуждены выносить значительную часть информации на внешние «носители». Таким образом, мы уже подошли к необходимости создания базы знаний.

Требования к базе знаний:

  1. Хранение большей части информации локально, чтобы не зависеть от корпораций и наличия интернета.

  2. Наличие поиска и он должен работать за разумное время.

  3. База знаний должна быть доступна на всех устройствах.

В статье попытается максимально выполнить все наши требования.

Теория

Уверен в том, что теория нужна для эффективного взаимодействия с базой знаний, иначе велик риск бессмысленной траты ресурсов и прежде всего времени. Хочу отметить, что желательно прочитать эти книги самостоятельно. Нам нужны 2 книги:

  1. Как привести дела в порядок. Искусство продуктивности без стресса. Книга про необходимость создания быстрых списков и процедур для работы с этими списками.

  2. Как делать полезные заметки. Эффективная система организации идей по методу Zettelkasten. Книга про необходимость ведения каталога мыслей и связей между ними. Именно связи позволяют генерировать новые идеи.

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

Решения

Набор решений для меня такой:

  1. Obsidian - интерфейс взаимодействия с markdown. Я знаю, что программа имеет закрытый код, но для меня важно, что формат хранения заметок это markdown и эти заметки хранятся локально на устройствах. При необходимости можно перейти на другие решения и этот переход потребует минимум усилий. В этом программном продукте развивается механизм связей, а в других продуктах подобной работы не нашел. В частности можно всю базу знаний отобразить в виде графа. Ниже отображение в виде графа моей базы знаний.

  2. Nextcloud - сервер для хранения, отображения и взаимодействия с базой знаний. Под базой знаний в основном буду понимать заметки в markdown. Но когда начинаешь работать со свой личной информацией, то понимаешь что тебе нужно в заметки перенести всю свою доступную информацию. Именно поэтому я делаю в заметках ссылки на отдельные сервисы в своем облаке.

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

В первый запуск попросят задать логин и пароль для стандартной авторизации, нужно сделать: Действия -> настройки -> Интерфейс. Далее настраиваем доступ к конкретным папкам:

  1. На сервере «Добавляем папку» и прописываем поведение синхронизации.

  2. Передаем 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)

На смартфон устанавливаем:

  1. Obsidian

  2. Syncthing-Fork

Итоги

В итоги имеем механизм заведения списков и механизмы их синхронизации + механизмы поиска внутри нашего облака. Стоит развивать работу с процедурами эффективной работы с собственной базой знаний, но это уже находится за пределами данной статьи.

Ссылки:

  1. Зачем нужен собственный сервер в 2025?

  2. Как установить Proxmox?

  3. Как установить Docker?

  4. Как запустить прокси-сервер для сервисов?

  5. Как запустить сервис с собственным облаком?