Обо мне Блог Контакты

Izoldian App - Ваши знания под вашим контролем

Obsidian

Довольно давно я веду свою базу знаний в виде Markdown-заметок в программе Obsidian. Программа отличная: простая, быстрая и при этом очень удобная. Правда, если честно, большую часть её возможностей я так и не использовал — мне вполне хватало базового функционала.

Для тех, кто не в теме: Obsidian — это приложение, которое позволяет удобно работать с обычными Markdown-файлами, лежащими у вас на компьютере. По сути, сами заметки — это обычные *.md файлы в папках на диске. Теоретически можно вообще не пользоваться Obsidian и просто редактировать их любым текстовым редактором. Но Obsidian делает это гораздо приятнее: есть нормальный предпросмотр Markdown, навигация по заметкам, ссылки между ними и прочие удобные штуки для ведения личной базы знаний. Если интересно — на YouTube про него огромное количество обзоров.

Однако со временем вылез один заметный минус: Obsidian — это в первую очередь локальное приложение. То есть заметки лежат у тебя на компьютере. Если хочется открыть их с телефона или планшета — нужно настраивать синхронизацию. Я прекрасно понимаю, что для Obsidian уже существует куча решений: плагины, облачные сервисы, синхронизация через GitHub и так далее. Но мне совершенно не хотелось строить сложную систему из костылей и дополнительных сервисов. Поэтому я подумал: а что есть из self-hosted решений? Всё-таки домашний сервер у меня работает не просто так. :)

Поиск альтернатив

И тут началось самое интересное. Приложений, на самом деле, оказалось достаточно много на любой вкус. Многие я ставил и пробовал у себя. В одних не хватает нужных функций, в других, наоборот, навалено слишком много всего лишнего, что только засоряет интерфейс. Где-то нет многопользовательского режима, где-то нет SSO. В общем, так и не нашёл чего-то идеального для себя.

Vibe coding

И тут начинается самая спорная часть истории. (Ненавистники ИИ — можете на этом месте напрячься)

Я просто взял и "навайбкодил" своё приложение с помощью Claude Code. Причём самое забавное в том, что язык программирования Python, на котором оно написано, я вообще не знаю. Я никогда не программировал на Python. По сути я просто объяснял на русском языке, что именно мне нужно, а дальше постепенно допиливал результат. Буквально за пару дней получилось собрать рабочую штуку, в которой есть ровно тот функционал, который мне нужен, и нет ничего лишнего.

Гордиться конечно-же тут абсолютно нечем. Я не написал ни строчки кода, все за меня сделал Claude Code, я лишь поэтапно ему говорил что делать и что добавить. На выходе я получил реально на 100% то, что мне нужно. Кроме этого, если мне чего-то будет нехватать, я просто "доделаю".

По сути это self-hosted база знаний на Markdown-файлах. Я просто взял папку со своими заметками из Obsidian, скопировал её в новое приложение — и всё заработало. Все заметки лежат на моём сервере, а открывать и редактировать их теперь можно с любого устройства через браузер. Авторизация сделана через SSO Authelia (про неё, кстати, планирую написать отдельную статью).

Можно было бы вприцнипе использовать базу данных, но я подумал, что просто скопировать имеющуюся Vault папку из Obsidian гораздо удобнее, да и городить лишнего не нужно.

В текущем виде приложение получилось довольно простым. Но самое интересное — пока я даже не понимаю, чего ещё мне в нём не хватает.

Там есть всё, чем я пользовался в Obsidian. И нет ничего лишнего.

А как известно:

Всё гениальное — просто!

Izoldian

В какой-то момент мне стало интересно, может ли эта штука быть полезна ещё кому-то. Поэтому я зарегистрировал домен и сделал небольшой лендинг (который, конечно же, тоже сгенерировала нейросеть).

Что касается названия... Я являюсь одним из участников раллийной команды Izolda-Rally. А так как я пользовался Obsidian, то из названия Izolda вышло - Izoldian. Глупо наверно, но я на серьезность и не претендую.

Ссылка на сайт: https://izoldian.ru

Ссылка на GitHub репозиторий: https://github.com/roman-kvasnikov/izoldian

Установка максимально простая, через docker-compose.yml файл, как и большинство self-hosted приложений в сети:

services:
  izoldian:
    container_name: izoldian
    image: ghcr.io/roman-kvasnikov/izoldian:latest
    restart: unless-stopped
    environment:
      - CORS_ORIGINS=*

      # - HOST=0.0.0.0
      # - PORT=8000
      # - DATA_DIR=/app/data
      # - DB_PATH=/app/data/izoldian.db
      # - SESSION_MAX_AGE_DAYS=7

      # Authentication
      # - USER_SIGNUP=true
      # - DISABLE_INTERNAL_AUTH=false

      # OIDC (Authelia, Keycloak, etc.)
      # - OIDC_ENABLED=true
      # - OIDC_ISSUER=https://auth.example.com
      # - OIDC_CLIENT_ID=izoldian
      # - OIDC_CLIENT_SECRET=your-client-secret
      # - OIDC_REDIRECT_URI=http://localhost:8000/api/auth/oidc/callback
      # - OIDC_SCOPES=openid profile email
    volumes:
      - ./data:/app/data
    ports:
      - 8000:8000
mkdir izoldian && cd izoldian
curl -O https://raw.githubusercontent.com/roman-kvasnikov/izoldian/master/docker-compose.yml
docker compose up -d

Все переменные окружения опциональные.

Переменная Значение по умолчанию Описание
HOST 0.0.0.0 Адрес привязки сервера
PORT 8000 Порт сервера
DATA_DIR /app/data Директория пользовательских данных внутри контейнера
DB_PATH /app/data/izoldian.db Путь к базе данных SQLite
SESSION_MAX_AGE_DAYS 7 Срок действия сессии (в днях)
USER_SIGNUP true Разрешить регистрацию новым пользователям
DISABLE_INTERNAL_AUTH false Отключить вход по имени пользователя и паролю
OIDC_ENABLED false Включить аутентификацию через OpenID Connect
OIDC_ISSUER URL провайдера OIDC
OIDC_CLIENT_ID Идентификатор клиента OAuth2
OIDC_CLIENT_SECRET Секрет клиента OAuth2
OIDC_REDIRECT_URI URL обратного вызова (https://your-domain/api/auth/oidc/callback)
OIDC_SCOPES openid profile email Области доступа (scopes) OIDC
CORS_ORIGINS * Разрешённые источники CORS (через запятую)

Если вдруг кому-то такой инструмент тоже зайдёт — пользуйтесь на здоровье.

Заключение

На самом деле, текущая ситуация с ИИ меня одновременно и радует и напрягает.

С одной стороны у меня сейчас развязаны руки, я могу на обычном русском языке сделать любое не супер сложное приложение, на любой имеющийся у меня девайс, на любом стеке, даже о котором ни разу не слышал. Причем в совершенно короткие сроки. Это приложение я "написал" за два вечера в качестве пробы. До этого я ни разу подобным не занимался. И я могу сказать, что я получил ровно то, что мне нужно. И кроме того, любую функцию, которая мне понадобится, я могу "дописать" без проблем в любой момент.

С другой стороны напрягает то, что ИИ внедряется в нашу жизнь на столько сильно, что я реально ощущаю тот факт, что скоро в большинстве сфер где нужен был человек, теперь он не нужен, так как ИИ сделает эту работу за пару минут. Я даже гуглом пользоваться перестал, любой вопрос - зашел/спросил/сделал/настроил.