Налаштування Nexus для кешування артефактів та Docker Registry

Зовнішні репозиторії сповільнюють збірки, а Docker Hub обмежує запити — це гальмує розробку та збільшує витрати. Ми налаштовуємо Nexus Repository Manager, який кешує артефакти та створює приватний Docker Registry, прискорюючи CI/CD. Наша команда реалізує проєкт під ключ — від аудиту до підтримки, забезпечуючи стабільну роботу та масштабування разом із вашим бізнесом.
Часті запитання

CI-пайплайн витрачає 15 хвилин на завантаження Maven-залежностей із зовнішніх репозиторіїв. Docker Hub ріже rate limits, а npm registry падає під навантаженням. Знайомо? Nexus Repository Manager вирішує всі три проблеми одним інструментом. Він кешує артефакти після першого запиту, забезпечує приватний Docker Registry та єдину точку входу для всіх пакетних менеджерів. Економія на трафіку — до $200 на місяць для середньої команди, прискорення збірок — у 90 разів.

Зв'яжіться з нами для аудиту — оцінимо вашу інфраструктуру. Наші інженери мають 5+ років досвіду в адмініструванні Nexus у кластерах Kubernetes та на bare-metal.

Як Nexus прискорює збірку?

Nexus кешує залежності після першого завантаження. При повторній збірці артефакти віддаються з локального сховища. Затримка падає з 15 хвилин до 10 секунд. Це особливо помітно при частих перезапусках контейнерів у CI.

Типи репозиторіїв та що коли використовувати

Nexus працює з трьома видами репозиторіїв:

Тип Призначення Приклад URL
Proxy Дзеркалює зовнішнє джерело maven-central → https://repo1.maven.org/maven2/
Hosted Зберігає ваші артефакти maven-releases, docker-internal
Group Об'єднує proxy та hosted в один endpoint maven-public (включає releases, snapshots, central)

Типова конфігурація для Maven:

maven-public (group)
├── maven-releases (hosted)
├── maven-snapshots (hosted)
└── maven-central (proxy → https://repo1.maven.org/maven2/)

У ~/.m2/settings.xml розробник прописує тільки http://nexus.company.com/repository/maven-public/.

Чому варто вибрати Nexus замість Artifactory?

Nexus Open Source — безкоштовний і не вимагає ліцензування. Він простіший у налаштуванні: для базового сценарію потрібно в 2 рази менше часу, ніж з Artifactory. При цьому функціоналу достатньо для більшості середніх компаній. Підтримує Maven, npm, Docker, PyPI та інші.

Порівняння ліцензій: Artifactory Pro коштує від $12,000 на рік за 5 користувачів, Nexus OSS — $0. Різниця в продуктивності незначна при однакових ресурсах.

Встановлення та мінімальна конфігурація

Nexus OSS поширюється як tar.gz та як Docker-образ. Для production рекомендуємо Docker з зовнішнім volume під дані:

version: "3" services: nexus: image: sonatype/nexus3:3.68.0 volumes: - nexus-data:/nexus-data ports: - "8081:8081" - "8082:8082" # Docker registry port environment: - INSTALL4J_ADD_VM_PARAMS=-Xms2703m -Xmx2703m -XX:MaxDirectMemorySize=2703m restart: unless-stopped volumes: nexus-data: 

Параметри JVM критичні. Згідно з документацією Sonatype, рекомендується виділяти Nexus не менше 2/3 доступної RAM — при 8 ГБ на хості ставимо -Xmx4g. Недостатньо пам'яті проявляється в OutOfMemoryError: Direct buffer memory при інтенсивній роботі з Docker registry.

Початковий пароль після першого запуску знаходиться в /nexus-data/admin.password.

Налаштування Docker Registry

Nexus може виступати як Docker registry — hosted для своїх образів та proxy для Docker Hub (обходимо rate limits):

docker-hub (proxy → https://registry-1.docker.io) → порт 8083
docker-internal (hosted) → порт 8082
docker-all (group) → порт 8084

Кожен Docker-репозиторій вимагає окремого HTTP-порту — це обмеження протоколу Docker Registry v2. У Nginx додаємо location для кожного порту або використовуємо піддомени.

Авторизація в CI:

docker login nexus.company.com:8082 -u ci-user -p $NEXUS_PASSWORD docker push nexus.company.com:8082/myapp:1.0.0 

Безпека та ролі

За замовчуванням Nexus створює ролі nx-admin, nx-anonymous, nx-deploy. Для production мінімально потрібно:

  • Відключити anonymous access (Administration → Security → Anonymous Access).
  • Створити окремі ролі для CI (nx-deploy-role з правами на конкретні репозиторії) та розробників (read-only на proxy-репозиторії).
  • Налаштувати LDAP-інтеграцію для корпоративної аутентифікації.

Права призначаються на рівні репозиторію через Repository Content Selectors — можна обмежити CI-користувача тільки певними групами пакетів.

Порівняння Nexus OSS та Pro

Функція OSS Pro
Ціна Безкоштовно Від $12,000/рік
Сховище артефактів Maven, npm, Docker, PyPI, NuGet Все, що в OSS + RAW, APT, YUM
Ролі та безпека LDAP, RBasic LDAP, SAML, SSO, Crowd
Cleanup Policies Вручну через UI Автоматичні політики + розклад
Storage Quotas Немає Є (ліміти на проєкт)

Для більшості компаній OSS-версії достатньо. Pro виправданий при строгих compliance-вимогах або необхідності інтеграції з SAML.

Очищення артефактів та Cleanup Policies

Без політик очищення Nexus необмежено зростає. Створюємо Cleanup Policy:

  • maven-snapshots-cleanup: видаляти SNAPSHOT-артефакти старші 30 днів, до яких не зверталися більше 7 днів.
  • docker-cleanup: видаляти Docker-образи без тегів (untagged) старші 7 днів.

Політики застосовуються до репозиторіїв у Administration → Repository → Cleanup Policies. Завдання Cleanup service запускається за розкладом (за замовчуванням — раз на добу).

Після cleanup обов'язково запускати Compact Blob Store — інакше диск не звільниться, дані просто позначаються як видалені.

План налаштування Nexus

  1. Вибрати версію Nexus (OSS або Pro).
  2. Розгорнути контейнер за допомогою Docker.
  3. Налаштувати транспорт: HTTP порти, TLS.
  4. Створити proxy-репозиторій для цільового пакетного реєстру.
  5. Створити hosted та group репозиторії.
  6. Налаштувати користувачів та ролі.
  7. Застосувати Cleanup Policies.

Що входить у налаштування під ключ

  • Встановлення та базова конфігурація Nexus (Docker, volume, JVM).
  • Налаштування proxy-репозиторіїв для Maven, npm, Docker, PyPI.
  • Налаштування hosted-репозиторіїв для ваших артефактів.
  • Налаштування групи для єдиного endpoint.
  • Docker Registry (hosted, proxy, group) з окремими портами.
  • Інтеграція LDAP для корпоративної аутентифікації.
  • Створення ролей та політик безпеки.
  • Cleanup policies та автоматичне очищення.
  • Документація та навчання команди (1–2 години).

Ми гарантуємо стабільну роботу та супровід після впровадження. Замовте налаштування Nexus — отримайте консультацію інженера.

Приклад `.m2/settings.xml` для Maven
<settings>
  <mirrors>
    <mirror>
      <id>nexus-maven-public</id>
      <mirrorOf>*</mirrorOf>
      <url>http://nexus.company.com/repository/maven-public/</url>
    </mirror>
  </mirrors>
</settings>

Терміни

Завдання Термін
Встановлення + базова конфігурація 4-8 годин
Налаштування Maven/npm proxy та hosted 4-8 годин
Docker registry з Nginx 4-8 годин
LDAP інтеграція + ролі півдня
Cleanup policies + моніторинг півдня

Повний setup під production — 1-3 дні. Вартість розраховується після аудиту інфраструктури.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142