Репозитории управляются на странице «Настройки» → «Репозитории». Типы репозиториев, форматы и кеширование описаны в разделах Репозитории и форматы и Проксирование и кеширование.

Список репозиториев

В списке видны репозитории, на администрирование которых у вас есть права. Колонки: «Имя», «Формат», «Тип», «URL», «В сети», «Источник».

  • «URL» — адрес для клиентов; для репозиториев Docker (OCI) показывается pull-референс с пометкой «pull ref».
  • «В сети» — обслуживается ли репозиторий клиентами. При значении no запросы к нему отклоняются, а содержимое остаётся на месте: так репозиторий выводят из обслуживания, не удаляя.
  • «Источник» — состояние соединения с внешним реестром (только proxy):
СостояниеЗначение
«Готов»Обращений к внешнему реестру ещё не было
«Доступен»Внешний реестр отвечает
«Автоблокировка»Обращения приостановлены автоматически: реестр недоступен; в подсказке — время следующей попытки
«Заблокирован»Обращения заблокированы вручную настройкой репозитория
«Недоступен»Реестр недоступен (автоблокировка выключена)

Под состоянием печатается причина, если она известна: unauthorized — реестр отклонил учётные данные; service unavailable, bad gateway, gateway timeout — ответ самого реестра; upstream connection failure — запрос до реестра не дошёл; background probe failed — не прошла фоновая проверка доступности. Причина у состояния «Доступен» означает особый случай: реестр отвечает, но отклоняет учётные данные, а автоблокировка выключена. Состояние в этом случае подсвечено жёлтым, а незакешированные запросы отвечают 502.

Автоблокировка снимается сама, когда внешний реестр отвечает снова. Чтобы снять её досрочно, когда реестр уже починили, а окно следующей попытки ещё не подошло, сохраните настройки репозитория кнопкой «Сохранить»: счётчик автоблокировки сбрасывается.

Создание

Нажмите «+ Новый репозиторий» и заполните форму:

  1. «Имя», «Формат», «Тип» и хранилище фиксируются при создании — изменить их позже нельзя.

  2. Чекбокс «в сети» оставляет репозиторий в обслуживании; сняв его, репозиторий можно создать заранее и открыть клиентам позже.

  3. writePolicy (только hosted) — что клиентам разрешено делать с содержимым:

    • ALLOW — публиковать, перезаписывать и удалять;
    • ALLOW_ONCE — публиковать и удалять, но не перезаписывать уже опубликованное. Удаление разрешено, поэтому «удалить и опубликовать заново» остаётся способом заменить версию: политика запрещает перезапись, а не гарантирует неизменяемость;
    • DENY — только чтение: отклоняются и публикация, и перезапись, и удаление.

    Политика действует на всех путях записи: и на клиентах форматов, включая docker push, и на удалении в веб-интерфейсе. Для npm, RubyGems, PyPI и Cargo форма предлагает ALLOW_ONCE — версии этих форматов принято делать неизменяемыми.

  4. Для proxy-репозитория заполните блок кеширования:

    • «Remote URL» — адрес внешнего реестра; плейсхолдер подсказывает стандартный адрес для каждого формата;
    • contentMaxAge (минут) и metadataMaxAge (минут) — сроки хранения кеша: положительное число задаёт минуты (по умолчанию 1440), 0 — проверять внешний реестр при каждом запросе, -1 — кешировать бессрочно. Что относится к контенту, а что к метаданным, описано в разделе Проксирование и кеширование;
    • negativeCache.enabled и negativeCache.timeToLive (минут) — кеш отказов (по умолчанию 15 минут).
  5. «Блокировать исходящие соединения» — ручная заморозка обращений к внешнему реестру: отдаётся только кеш, остальное отвечает 404.

  6. «Автоблокировка исходящих соединений» — автоматическая приостановка обращений, пока внешний реестр недоступен: кеш отдаётся, некешированные запросы отвечают 502. В форме включена по умолчанию.

  7. «Аутентификация» — учётные данные внешнего реестра: тип username (логин и пароль) или bearerToken (статический токен).

  8. «Параметры HTTP-запросов» — число повторных попыток (retries), тайм-аут и суффикс User-Agent исходящих запросов.

  9. «Политики очистки» — привязка политик автоудаления, доступны политики того же формата. Что они удаляют и как запускаются, описано в разделе Политики очистки.

  10. Формат-специфичные поля:

    • Maven — maven.versionPolicy (RELEASE / SNAPSHOT / MIXED);
    • raw — raw.contentDisposition (INLINE — браузер открывает файлы, ATTACHMENT — принудительное скачивание);
    • Cargo proxy — cargo.requireAuthentication (клиент cargo будет присылать учётные данные);
    • Docker proxy — insecureSkipTlsVerify (отключает проверку TLS-сертификата внешнего реестра — только для доверенных приватных реестров с самоподписанными сертификатами).

При создании репозитория автоматически появляется набор его привилегий (Управление доступом).

Редактирование и обслуживание

Кнопка «Изменить» открывает те же настройки, кроме зафиксированных при создании. Сохранённые секреты не отображаются: пустое поле пароля означает «оставить прежний» (подсказка «Оставьте пустым, чтобы сохранить текущий секрет»); при смене адреса реестра или типа аутентификации секрет нужно ввести заново.

Для любого proxy-репозитория в диалоге редактирования доступна кнопка «Сбросить кеш». Она не удаляет закешированное содержимое, а помечает его устаревшим: каждый следующий запрос сначала сверяется с внешним реестром и только потом отдаётся клиенту. Заодно сбрасывается кеш отказов, то есть запомненные ответы «не найдено». Операция требует привилегии на изменение репозитория; повторный вызов ничего не меняет.

Кнопка «Запустить очистку» выполняет привязанные политики очистки по этому репозиторию немедленно, не дожидаясь планового прохода. Запуск требует подтверждения: компоненты, подходящие под критерии этих политик, удаляются безвозвратно.

Удаление репозитория

Кнопка «Удалить» удаляет репозиторий вместе с артефактами. Репозиторий исчезает из каталога сразу: с этого момента запросы к нему получают ответ «не найдено». Место на диске освобождает последующая сборка мусора.

Если удаление docker-репозитория не довели до конца (например, сервер остановили в этот момент), создание репозитория под тем же именем отвечает ошибкой cleanup_in_progress. Доделывает удаление сборка мусора: запустите её кнопкой «Запустить» на странице «Настройки» → «Сборка мусора».

Стартовый набор

На пустой базе создаются восемь репозиториев:

РепозиторийФорматТипПолитика записиНазначение
maven-centralmaven2proxy—Зеркало Maven Central; контент кешируется бессрочно
maven-releasesmaven2hostedALLOW_ONCEРелизные Java-артефакты (неизменяемые)
maven-snapshotsmaven2hostedALLOWSnapshot-версии
go-proxygoproxy—Зеркало proxy.golang.org
go-hostedgohostedALLOWВнутренние Go-модули
go-sumdbrawproxy—База контрольных сумм Go (sum.golang.org)
docker-hosteddockerhostedALLOWВнутренние образы контейнеров (теги перезаписываемы)
docker-hub-proxydockerproxy—Зеркало Docker Hub, без учётных данных

У всех proxy-репозиториев набора включена автоблокировка. Роль anonymous заранее имеет привилегии чтения четырёх публичных зеркал — доступ активируется глобальным переключателем анонимного доступа.