Фрибис — совместимый сервер автоматизации библиотек (по протоколу ИРБИС64) на Python с хранением данных в MongoDB. Реализует проводной TCP-протокол, позволяя штатным клиентам и АРМам работать с ним без каких-либо изменений.
- Полная совместимость по протоколу: Поддержка регистрации клиентов, полного CRUD для записей с версионированием и блокировками, чтение и запись текстовых и бинарных файлов, управление пользователями и БД.
- Современное хранилище (MongoDB): Отказ от файловой БД в пользу мощной, масштабируемой и надежной NoSQL базы данных. Инвертированный индекс, учетные записи и метаданные ресурсов хранятся в коллекциях MongoDB.
- Встроенная миграция: Прямое чтение бинарных MST/XRF файлов оригинального сервера для прозрачного импорта записей, ресурсов и пользователей.
- Python 3.11+
- MongoDB 7.0+
- Docker и Docker Compose (опционально, для быстрого разворачивания)
Самый простой способ запустить сервер и базу данных — использовать Docker Compose.
-
Склонируйте репозиторий:
git clone https://github.com/Venjer/Fribis.git cd freebis -
Запустите стек:
docker-compose up -d
Сервер будет доступен на порту 6666, а MongoDB на порту 27017.
В контейнере настроен постоянный volume для базы данных и хранения больших бинарных файлов (изображений, сканов и т.д.).
Пока коллекция пользователей пуста, сервер блокирует доступ. Для первого входа задайте временный bootstrap-пароль в файле docker-compose.yml, раскомментировав строку:
- IRBIS_BOOTSTRAP_PASSWORD=your_secure_passwordЕсли вы хотите запустить сервер без Docker:
-
Создайте виртуальное окружение и установите зависимости:
python -m venv .venv .\.venv\Scripts\python -m pip install -e ".[dev]"
-
Запустите сервер (убедитесь, что локально запущена MongoDB):
$env:IRBIS_BOOTSTRAP_PASSWORD = "your_secure_password" .\.venv\Scripts\irbis-server --host 0.0.0.0 --port 6666 --mongo-db irbis
Встроенная утилита позволяет напрямую читать файлы старого сервера (*.par, MST/XRF) и импортировать их в MongoDB.
# Пример импорта базы данных IBIS (укажите правильный путь к старой папке сервера)
.\.venv\Scripts\irbis-migrate --old-server C:\Path\To\Old\Server --db IBIS --reindexМигратор перенесет записи, текстовые/бинарные ресурсы и автоматически перестроит поисковый словарь.
Данные распределены по коллекциям MongoDB (база irbis):
| Коллекция | Описание |
|---|---|
catalog |
Список баз данных: максимальный MFN, флаги блокировки |
records |
Сами записи: сырая строка с ^-подполями (как в протоколе), статусы, версии |
postings |
Инвертированный индекс: термины, MFN, теги, вхождения |
resources |
Текстовые ресурсы (PFT/MNU/WS/FST/INI) |
blobs |
Метаданные бинарных ресурсов (сами файлы лежат на диске для оптимизации) |
users |
Учетные записи пользователей |
Большие бинарные файлы (сканы, обложки) сохраняются на файловой системе (в папке blobs), чтобы не перегружать БД, а в коллекции blobs остаются только метаданные и sha256 хеши.
По умолчанию корень бинарных ресурсов blobs/ создается в текущей директории (или определяется переменной IRBIS_BLOB_ROOT).
Для работы с ресурсами доступна отдельная CLI-утилита:
# сводка по файлам, проверка целостности, уборка осиротевших файлов
.\.venv\Scripts\irbis-blobs stat
.\.venv\Scripts\irbis-blobs verify --deep
.\.venv\Scripts\irbis-blobs gc # пробный прогон
.\.venv\Scripts\irbis-blobs gc --applyПроект распространяется под лицензией MIT.