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 (через запятую) |
Если вдруг кому-то такой инструмент тоже зайдёт — пользуйтесь на здоровье.
Заключение
На самом деле, текущая ситуация с ИИ меня одновременно и радует и напрягает.
С одной стороны у меня сейчас развязаны руки, я могу на обычном русском языке сделать любое не супер сложное приложение, на любой имеющийся у меня девайс, на любом стеке, даже о котором ни разу не слышал. Причем в совершенно короткие сроки. Это приложение я "написал" за два вечера в качестве пробы. До этого я ни разу подобным не занимался. И я могу сказать, что я получил ровно то, что мне нужно. И кроме того, любую функцию, которая мне понадобится, я могу "дописать" без проблем в любой момент.
С другой стороны напрягает то, что ИИ внедряется в нашу жизнь на столько сильно, что я реально ощущаю тот факт, что скоро в большинстве сфер где нужен был человек, теперь он не нужен, так как ИИ сделает эту работу за пару минут. Я даже гуглом пользоваться перестал, любой вопрос - зашел/спросил/сделал/настроил.