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
- Вибрати версію Nexus (OSS або Pro).
- Розгорнути контейнер за допомогою Docker.
- Налаштувати транспорт: HTTP порти, TLS.
- Створити proxy-репозиторій для цільового пакетного реєстру.
- Створити hosted та group репозиторії.
- Налаштувати користувачів та ролі.
- Застосувати 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 дні. Вартість розраховується після аудиту інфраструктури.







