Files
nora/docs-ru/technical-spec.md
devitway 3b9b2ee0a0 chore: repo cleanup — remove dead crates from workspace, stale files, duplicate assets
- Remove nora-cli and nora-storage from workspace (stub crates, not used)
- Remove root install.sh (duplicate of dist/install.sh)
- Remove root logo.jpg (duplicate of ui/logo.jpg)
- Remove committed SBOM .cdx.json files (generated by CI in release)
- Remove stale .githooks/ (real hook is in .git/hooks/)
- Update version in docs-ru to 0.2.32
- Add *.cdx.json to .gitignore
2026-03-18 11:20:22 +00:00

8.0 KiB
Raw Permalink Blame History

Технические условия

Программа «NORA — Реестр артефактов»

Версия документа: 0.2.32 Дата: 2026-03-16 Правообладатель: ООО «ТАИАРС» (торговая марка АРТАИС)


1. Наименование и обозначение

Полное наименование: NORA — многопротокольный реестр артефактов.

Краткое наименование: NORA.

Обозначение: nora-registry.


2. Назначение

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

2.1. Область применения

  • Организация внутренних репозиториев программных компонентов.
  • Проксирование и кэширование общедоступных репозиториев (npmjs.org, PyPI, Maven Central, Docker Hub, crates.io).
  • Обеспечение доступности зависимостей в изолированных средах без доступа к сети Интернет (air-gapped).
  • Контроль целостности и безопасности цепочки поставки программного обеспечения.

2.2. Класс программного обеспечения

Инструментальное программное обеспечение для разработки и DevOps.

Код ОКПД2: 62.01 — Разработка компьютерного программного обеспечения.


3. Функциональные характеристики

3.1. Поддерживаемые протоколы

Протокол Стандарт Назначение
Docker / OCI OCI Distribution Spec v1.0 Контейнерные образы, Helm-чарты
npm npm Registry API Библиотеки JavaScript / TypeScript
Maven Maven Repository Layout Библиотеки Java / Kotlin
PyPI PEP 503 (Simple API) Библиотеки Python
Cargo Cargo Registry Protocol Библиотеки Rust
Raw HTTP PUT/GET Произвольные файлы

3.2. Режимы работы

  1. Хранилище (hosted): приём и хранение артефактов, опубликованных пользователями.
  2. Прокси-кэш (proxy): прозрачное проксирование запросов к внешним репозиториям с локальным кэшированием.
  3. Комбинированный: одновременная работа в режимах хранилища и прокси-кэша (поиск сначала в локальном хранилище, затем во внешнем репозитории).

3.3. Управление доступом

  • Аутентификация на основе htpasswd (bcrypt).
  • Ролевая модель: read (чтение), write (чтение и запись), admin (полный доступ).
  • Токены доступа с ограниченным сроком действия.

3.4. Безопасность

  • Контроль целостности кэшированных артефактов (SHA-256).
  • Защита от обхода каталогов (path traversal) при публикации.
  • Проверка соответствия имени пакета в URL и теле запроса.
  • Иммутабельность опубликованных версий.
  • Аудит всех операций в формате JSON Lines.
  • Поддержка TLS при размещении за обратным прокси-сервером.

3.5. Эксплуатация

  • Предварительное кэширование зависимостей (nora mirror) по файлам фиксации версий (lockfile).
  • Сборка мусора (nora gc) — удаление осиротевших блобов.
  • Резервное копирование и восстановление (nora backup, nora restore).
  • Миграция между локальным хранилищем и S3-совместимым объектным хранилищем.
  • Мониторинг: эндпоинты /health, /ready, /metrics (формат Prometheus).
  • Веб-интерфейс для просмотра содержимого реестра.
  • Документация API в формате OpenAPI 3.0.

4. Технические характеристики

4.1. Среда исполнения

Параметр Значение
Язык реализации Rust
Формат поставки Единый исполняемый файл (статическая линковка)
Поддерживаемые ОС Linux (ядро 4.15+)
Архитектуры x86_64 (amd64), aarch64 (arm64)
Контейнеризация Docker-образ на базе scratch
Системная интеграция systemd (файл сервиса в комплекте)

4.2. Хранение данных

Параметр Значение
Локальное хранилище Файловая система (ext4, XFS, ZFS)
Объектное хранилище S3-совместимое API (MinIO, Yandex Object Storage, Selectel S3)
Структура Иерархическая: {protocol}/{package}/{artifact}
Аудит Append-only JSONL файл

4.3. Конфигурация

Источник Приоритет
Переменные окружения (NORA_*) Высший
Файл config.toml Средний
Значения по умолчанию Низший

4.4. Производительность

Параметр Значение
Время запуска < 100 мс
Обслуживание из кэша < 2 мс (метаданные), < 10 мс (артефакты до 1 МБ)
Параллельная обработка Асинхронный ввод-вывод (tokio runtime)
Ограничение частоты Настраиваемое (по умолчанию 100 запросов/сек)

5. Лицензирование

Компонент Лицензия
NORA (core) MIT License
NORA Enterprise Проприетарная

Полный перечень лицензий включённых библиотек приведён в файле SBOM (формат CycloneDX).


6. Комплектность

Компонент Описание
nora Исполняемый файл
nora.service Файл systemd-сервиса
nora.env.example Шаблон конфигурации
install.sh Скрипт установки
nora.cdx.json SBOM в формате CycloneDX
Руководство администратора Настоящий комплект документации
Руководство пользователя Настоящий комплект документации
Технические условия Настоящий документ

7. Контактная информация

Правообладатель: ООО «ТАИАРС»

Торговая марка: АРТАИС

Сайт продукта: https://getnora.io

Документация: https://getnora.dev

Исходный код: https://github.com/getnora-io/nora

Поддержка: https://t.me/getnora