Установка и настройка Nexus Sonatype используя подход infrastructure as code
Sonatype Nexus – платформа, с помощью которой разработчики могут проксировать, хранить и управлять зависимостями Java (Maven), образами Docker, Python, Ruby, NPM, Bower, RPM-пакетами, gitlfs, Apt, Go, Nuget, а также распространять свое программное обеспечение.
Зачем нужен Sonatype Nexus?
- Для хранения приватных артефактов;
- Для кеширования артефактов, которые скачиваются из интернета;
Артефакты поддерживаемые в базовой поставке Sonatype Nexus:
- Java, Maven (jar)
- Docker
- Python (pip)
- Ruby (gem)
- NPM
- Bower
- Yum (rpm)
- gitlfs
- Raw
- Apt (deb)
- Go
- Nuget
Артефакты поддерживаемые сообществом:
Установка Sonatype Nexus используя https://github.com/ansible-ThoTeam/nexus3-oss
Требования
- Прочитайте про использование ansible в интернете.
- Установите ansible pip install ansible на рабочей станции где запускается playbook.
- Установите geerlingguy.java на рабочей станции где запускается playbook ansible-galaxy install geerlingguy.java .
- Установите geerlingguy.apache на рабочей станции где запускается playbook ansible-galaxy install geerlingguy.apache .
- Склонируйте git репозиторий git clone https://github.com/ansible-ThoTeam/nexus3-oss.git
- Эта роль протестирована на CentOS 7, Ubuntu Xenial (16.04) and Bionic (18.04), Debian Jessie and Stretch
- jmespath библиотека должна быть установлена на рабочей станции где запускается playbook. Для установки выполните sudo pip install -r requirements.txt
- Сохраните файл playbook (пример ниже) в файл nexus.yml
- Запустите установку nexus ansible-playbook -i host nexus.yml
Пример ansible-playbook для установки nexus без LDAP с репозиториями Maven (java), Docker, Python, Ruby, NPM, Bower, RPM и gitlfs.
--- - name: Nexus hosts: nexus become: yes vars: nexus_timezone: 'Asia/Omsk' nexus_admin_password: "admin123" nexus_public_hostname: 'apatsev-nexus-playbook' httpd_setup_enable: false nexus_privileges: - name: all-repos-read description: 'Read & Browse access to all repos' repository: '*' actions: - read - browse - name: company-project-deploy description: 'Deployments to company-project' repository: company-project actions: - add - edit nexus_roles: - id: Developpers # maps to the LDAP group name: developers description: All developers privileges: - nx-search-read - all-repos-read - company-project-deploy roles: [] nexus_local_users: - username: jenkins # used as key to update first_name: Jenkins last_name: CI email: support@company.com password: "s3cr3t" roles: - Developpers # role ID here nexus_blobstores: - name: company-artifacts path: /var/nexus/blobs/company-artifacts nexus_scheduled_tasks: - name: compact-blobstore cron: '0 0 22 * * ?' typeId: blobstore.compact taskProperties: blobstoreName: 'company-artifacts' nexus_repos_maven_proxy: - name: central remote_url: 'https://repo1.maven.org/maven2/' layout_policy: permissive - name: jboss remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/' - name: vaadin-addons remote_url: 'https://maven.vaadin.com/vaadin-addons/' - name: jaspersoft remote_url: 'https://jaspersoft.artifactoryonline.com/jaspersoft/jaspersoft-repo/' version_policy: mixed nexus_repos_maven_hosted: - name: company-project version_policy: mixed write_policy: allow blob_store: company-artifacts nexus_repos_maven_group: - name: public member_repos: - central - jboss - vaadin-addons - jaspersoft # Yum. Change nexus_config_yum to true for create yum repository nexus_config_yum: true nexus_repos_yum_hosted: - name: private_yum_centos_7 repodata_depth: 1 nexus_repos_yum_proxy: - name: epel_centos_7_x86_64 remote_url: http://download.fedoraproject.org/pub/epel/7/x86_64 maximum_component_age: -1 maximum_metadata_age: -1 negative_cache_ttl: 60 - name: centos-7-os-x86_64 remote_url: http://mirror.centos.org/centos/7/os/x86_64/ maximum_component_age: -1 maximum_metadata_age: -1 negative_cache_ttl: 60 nexus_repos_yum_group: - name: yum_all member_repos: - private_yum_centos_7 - epel_centos_7_x86_64 # NPM. Change nexus_config_npm to true for create npm repository nexus_config_npm: true nexus_repos_npm_hosted: [] nexus_repos_npm_group: - name: npm-public member_repos: - npm-registry nexus_repos_npm_proxy: - name: npm-registry remote_url: https://registry.npmjs.org/ negative_cache_enabled: false # Docker. Change nexus_config_docker to true for create docker repository nexus_config_docker: true nexus_repos_docker_hosted: - name: docker-hosted http_port: ">" v1_enabled: True nexus_repos_docker_proxy: - name: docker-proxy http_port: ">" v1_enabled: True index_type: "HUB" remote_url: "https://registry-1.docker.io" use_nexus_certificates_to_access_index: false maximum_component_age: 1440 maximum_metadata_age: 1440 negative_cache_enabled: true negative_cache_ttl: 1440 nexus_repos_docker_group: - name: docker-group http_port: ">" v1_enabled: True member_repos: - docker-hosted - docker-proxy # Bower. Change nexus_config_bower to true for create bower repository nexus_config_bower: true nexus_repos_bower_hosted: - name: bower-hosted nexus_repos_bower_proxy: - name: bower-proxy index_type: "proxy" remote_url: "https://registry.bower.io" use_nexus_certificates_to_access_index: false maximum_component_age: 1440 maximum_metadata_age: 1440 negative_cache_enabled: true negative_cache_ttl: 1440 nexus_repos_bower_group: - name: bower-group member_repos: - bower-hosted - bower-proxy # Pypi. Change nexus_config_pypi to true for create pypi repository nexus_config_pypi: true nexus_repos_pypi_hosted: - name: pypi-hosted nexus_repos_pypi_proxy: - name: pypi-proxy index_type: "proxy" remote_url: "https://pypi.org/" use_nexus_certificates_to_access_index: false maximum_component_age: 1440 maximum_metadata_age: 1440 negative_cache_enabled: true negative_cache_ttl: 1440 nexus_repos_pypi_group: - name: pypi-group member_repos: - pypi-hosted - pypi-proxy # rubygems. Change nexus_config_rubygems to true for create rubygems repository nexus_config_rubygems: true nexus_repos_rubygems_hosted: - name: rubygems-hosted nexus_repos_rubygems_proxy: - name: rubygems-proxy index_type: "proxy" remote_url: "https://rubygems.org" use_nexus_certificates_to_access_index: false maximum_component_age: 1440 maximum_metadata_age: 1440 negative_cache_enabled: true negative_cache_ttl: 1440 nexus_repos_rubygems_group: - name: rubygems-group member_repos: - rubygems-hosted - rubygems-proxy # gitlfs. Change nexus_config_gitlfs to true for create gitlfs repository nexus_config_gitlfs: true nexus_repos_gitlfs_hosted: - name: gitlfs-hosted roles: - < role: geerlingguy.java ># Debian/Ubuntu only # - < role: geerlingguy.apache, apache_create_vhosts: no, apache_mods_enabled: ["proxy_http.load", "headers.load"], apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] ># RedHat/CentOS only - < role: geerlingguy.apache, apache_create_vhosts: no, apache_remove_default_vhost: true, tags: ["geerlingguy.apache"] >-
Скриншоты:


Переменные роли
Role Variables
Переменные со значениями по умолчанию (см. default/main.yml ):
General variables
nexus_version: '' nexus_timezone: 'UTC'
По умолчанию роль установит последнюю доступную версию Nexus. Вы можете исправить версию, изменив переменную nexus_version . Смотрите доступные версии на https://www.sonatype.com/download-oss-sonatype.
Если вы измените версию на более новую, то роль попытается обновить ваш установленный Nexus.
Если вы используете более старую версию Nexus, чем последняя, вы должны убедиться, что не используете функции, которые недоступны в установленном выпуске (например, размещенние yum репозиториев доступно для nexus больше чем 3.8.0, git lfs repo для nexus больше чем 3.3.0 и т. д.)
nexus timezone — это имя часового пояса Java, которое может быть полезно в сочетании с приведенными ниже выражениями cron для nexus_scheduled tasks.
Порт Nexus и контекстный путь
nexus_default_port: 8081 nexus_default_context_path: '/'
Порт и контекстный путь процесса Java-соединения. nexus_default_context_path должен содержать косую черту, когда он установлен, например.: nexus_default_context_path: ‘/nexus/’ .
Пользователь и группа ОС Nexus
nexus_os_group: 'nexus' nexus_os_user: 'nexus'
Пользователь и группа, используемые для владения файлами Nexus и запуска службы, будут созданы ролью, если она отсутствует.
nexus_os_user_home_dir: '/home/nexus'
Разрешить изменять домашний каталог по умолчанию для пользователя nexus
Каталоги экземпляров Nexus
nexus_installation_dir: '/opt' nexus_data_dir: '/var/nexus' nexus_tmp_dir: ">"
- nexus_installation_dir содержит установленные исполняемые файлы
- nexus_data_dir содержит всю конфигурацию, репозитории и загруженные артефакты. Кастомные пути blobstores nexus_data_dir могут быть настроены, смотрите ниже nexus_blobstores .
- nexus_tmp_dir содержит все временные файлы. Путь по умолчанию для redhat был перемещен из /tmp для преодоления потенциальные проблемы с автоматическими процедурами очистки. Смотрите #168.
Настройка использование памяти Nexus JVM
nexus_min_heap_size: "1200M" nexus_max_heap_size: ">" nexus_max_direct_memory: "2G"
Это настройки по умолчанию для Nexus. Пожалуйста, не изменяйте эти значения Если вы не прочитали раздел памяти системных требований nexus и не понимаете, что они делают.
Как второе предупреждение, вот выдержка из вышеупомянутого документа:
Не рекомендуется увеличивать память JVM heap больше рекомендуемых значений в попытке повысить производительность. Это на самом деле может иметь противоположный эффект, приводя к ненужной работе операционной системы.
Пароль администратора
nexus_admin_password: 'changeme'
Пароль учетной записи «admin» для настройки. Это работает только при первой установке по умолчанию. Пожалуйста, смотрите [Изменить пароль администратора после первой установки](# change-admin-password-after-first-install), если вы хотите изменить его позже с помощью роли.
Настоятельно не рекомендуется хранить свой пароль в виде открытого текста в playbook, а использовать [шифрование ansible-vault] (https://docs.ansible.com/ansible/latest/user_guide/vault.html) (либо встроенный или в отдельный файл, загруженный, например, с помощью include_vars)
Анонимный доступ по умолчанию
nexus_anonymous_access: false
Анонимный доступ по умолчанию вылючен. Подробнее про анонимный доступ.
Публичное имя хоста
nexus_public_hostname: 'nexus.vm' nexus_public_scheme: https
Полное доменное имя и схема (https или http), по которой экземпляр Nexus будет доступен для его клиентов.
Доступ API для этой роли
nexus_api_hostname: localhost nexus_api_scheme: http nexus_api_validate_certs: ">" nexus_api_context_path: ">" nexus_api_port: ">"
Эти переменные контролируют, как роль подключается к API Nexus для предоставления.
Только для продвинутых пользователей. Скорее всего, вы не хотите изменять эти настройки по умолчанию
Настройка обратного прокси
httpd_setup_enable: false httpd_server_name: ">" httpd_default_admin_email: "admin@example.com" httpd_ssl_certificate_file: 'files/nexus.vm.crt' httpd_ssl_certificate_key_file: 'files/nexus.vm.key' # httpd_ssl_certificate_chain_file: ">" httpd_copy_ssl_files: true
Установите Обратный прокси-сервер SSL.
Для этого нужно установить httpd. Примечание: когда для httpd_setup_enable установлено значение true , nexus связывается с 127.0.0.1:8081, таким образом не будучи напрямую доступным через HTTP-порт 8081 с внешнего IP-адреса.
Используемое имя хоста по умолчанию — nexus_public_hostname . Если вам нужны разные имена по какой-либо причине, вы можете установить httpd_server_name с другим значением.
С httpd_copy_ssl_files: true (по умолчанию) вышеупомянутые сертификаты должны существовать в вашей директории playbook и будут скопированы на сервер и настроены в apache.
Если вы хотите использовать существующие сертификаты на сервере, установите httpd_copy_ssl_files: false и предоставьте следующие переменные:
# These specifies to the vhost where to find on the remote server file # system the certificate files. httpd_ssl_cert_file_location: "/etc/pki/tls/certs/wildcard.vm.crt" httpd_ssl_cert_key_location: "/etc/pki/tls/private/wildcard.vm.key" # httpd_ssl_cert_chain_file_location: ">"
httpd_ssl_cert_chain_file_location является необязательным и должен быть оставлен неустановленным, если вы не хотите настраивать файл цепочки
httpd_default_admin_email: "admin@example.com"
Установить адрес электронной почты администратора по умолчанию
Конфигурация LDAP
Соединения LDAP и область безопасности по умолчанию отключены
nexus_ldap_realm: false ldap_connections: []
Соединения LDAP, каждый элемент выглядит следующим образом:
nexus_ldap_realm: true ldap_connections: - ldap_name: 'My Company LDAP' # used as a key to update the ldap config ldap_protocol: 'ldaps' # ldap or ldaps ldap_hostname: 'ldap.mycompany.com' ldap_port: 636 ldap_use_trust_store: false # Wether or not to use certs in the nexus trust store ldap_search_base: 'dc=mycompany,dc=net' ldap_auth: 'none' # or simple ldap_auth_username: 'username' # if auth = simple ldap_auth_password: 'password' # if auth = simple ldap_user_base_dn: 'ou=users' ldap_user_filter: '(cn=*)' # (optional) ldap_user_object_class: 'inetOrgPerson' ldap_user_id_attribute: 'uid' ldap_user_real_name_attribute: 'cn' ldap_user_email_attribute: 'mail' ldap_user_subtree: false ldap_map_groups_as_roles: false ldap_group_base_dn: 'ou=groups' ldap_group_object_class: 'posixGroup' ldap_group_id_attribute: 'cn' ldap_group_member_attribute: 'memberUid' ldap_group_member_format: '$' ldap_group_subtree: false
Пример конфигурации LDAP для анонимной аутентификации (анонимная привязка), это также «минимальная» конфигурация:
nexus_ldap_realm: true ldap_connection: - ldap_name: 'Simplest LDAP config' ldap_protocol: 'ldaps' ldap_hostname: 'annuaire.mycompany.com' ldap_search_base: 'dc=mycompany,dc=net' ldap_port: 636 ldap_use_trust_store: false ldap_user_id_attribute: 'uid' ldap_user_real_name_attribute: 'cn' ldap_user_email_attribute: 'mail' ldap_user_object_class: 'inetOrgPerson'
Пример конфигурации LDAP для простой аутентификации (с использованием учетной записи DSA):
nexus_ldap_realm: true ldap_connections: - ldap_name: 'LDAP config with DSA' ldap_protocol: 'ldaps' ldap_hostname: 'annuaire.mycompany.com' ldap_port: 636 ldap_use_trust_store: false ldap_auth: 'simple' ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net' ldap_auth_password: ">" # better keep passwords in an ansible vault ldap_search_base: 'dc=mycompany,dc=net' ldap_user_base_dn: 'ou=users' ldap_user_object_class: 'inetOrgPerson' ldap_user_id_attribute: 'uid' ldap_user_real_name_attribute: 'cn' ldap_user_email_attribute: 'mail' ldap_user_subtree: false
Пример конфигурации LDAP для простой аутентификации (с использованием учетной записи DSA) + группы, сопоставленные как роли:
nexus_ldap_realm: true ldap_connections - ldap_name: 'LDAP config with DSA' ldap_protocol: 'ldaps' ldap_hostname: 'annuaire.mycompany.com' ldap_port: 636 ldap_use_trust_store: false ldap_auth: 'simple' ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net' ldap_auth_password: ">" # better keep passwords in an ansible vault ldap_search_base: 'dc=mycompany,dc=net' ldap_user_base_dn: 'ou=users' ldap_user_object_class: 'inetOrgPerson' ldap_user_id_attribute: 'uid' ldap_user_real_name_attribute: 'cn' ldap_user_email_attribute: 'mail' ldap_map_groups_as_roles: true ldap_group_base_dn: 'ou=groups' ldap_group_object_class: 'groupOfNames' ldap_group_id_attribute: 'cn' ldap_group_member_attribute: 'member' ldap_group_member_format: 'uid=$,ou=users,dc=mycompany,dc=net' ldap_group_subtree: false
Пример конфигурации LDAP для простой аутентификации (с использованием учетной записи DSA) + группы, динамически сопоставленные как роли:
nexus_ldap_realm: true ldap_connections: - ldap_name: 'LDAP config with DSA' ldap_protocol: 'ldaps' ldap_hostname: 'annuaire.mycompany.com' ldap_port: 636 ldap_use_trust_store: false ldap_auth: 'simple' ldap_auth_username: 'cn=mynexus,ou=dsa,dc=mycompany,dc=net' ldap_auth_password: ">" # better keep passwords in an ansible vault ldap_search_base: 'dc=mycompany,dc=net' ldap_user_base_dn: 'ou=users' ldap_user_object_class: 'inetOrgPerson' ldap_user_id_attribute: 'uid' ldap_user_real_name_attribute: 'cn' ldap_user_email_attribute: 'mail' ldap_map_groups_as_roles: true ldap_map_groups_as_roles_type: 'dynamic' ldap_user_memberof_attribute: 'memberOf'
Привилегии
nexus_privileges: - name: all-repos-read # used as key to update a privilege # type: description: 'Read & Browse access to all repos' repository: '*' actions: # can be add, browse, create, delete, edit, read or * (all) - read - browse # pattern: pattern # domain: domain # script_name: name
Список привилегий для настройки. Посмотрите документацию и графический интерфейс, чтобы проверить, какие переменные должны быть установлены в зависимости от типа привилегии.
Эти элементы объединяются со следующими значениями по умолчанию:
_nexus_privilege_defaults: type: repository-view format: maven2 actions: - read
Роли (внутри Nexus имеется виду)
nexus_roles: - id: Developpers # can map to a LDAP group id, also used as a key to update a role name: developers description: All developers privileges: - nx-search-read - all-repos-read roles: [] # references to other role names
Список ролей для настройки.
Пользователи
nexus_local_users: [] # - username: jenkins # used as key to update # state: present # default value if ommited, use 'absent' to remove user # first_name: Jenkins # last_name: CI # email: support@company.com # password: "s3cr3t" # roles: # - developers # role ID
Local (non-LDAP) users/accounts list to create in nexus.
Список локальных (не LDAP) пользователей/учетных записей для создания в Nexus.
nexus_ldap_users: [] # - username: j.doe # state: present # roles: # - "nx-admin"
Маппинг Ldap пользователей/ролей. Состояние absent удалит роли из существующего пользователя, если он уже существует.
Пользователи Ldap не удаляются. Попытка установить роль для несуществующего пользователя приведет к ошибке.
Селекторы контента
nexus_content_selectors: - name: docker-login description: Selector for docker login privilege search_expression: format=="docker" and path=~"/v2/"
Для получения дополнительной информации о селекторе контента см. Документацию.
Чтобы использовать селектор контента, добавьте новую привилегию с type: repository-content-selector и соответствующим contentSelector
- name: docker-login-privilege type: repository-content-selector contentSelector: docker-login description: 'Login to Docker registry' repository: '*' actions: - read - browse
Blobstores и репозитории
nexus_delete_default_repos: false
Delete the repositories from the nexus install initial default configuration. This step is only executed on first-time install (when nexus_data_dir has been detected empty).
Удаление репозиториев из исходной конфигурации по умолчанию для Nexus. Этот шаг выполняется только при первой установке (когда nexus_data_dir пустой).
nexus_delete_default_blobstore: false
Delete the default blobstore from the nexus install initial default configuration. This can be done only if nexus_delete_default_repos: true and all configured repositories (see below) have an explicit blob_store: custom . This step is only executed on first-time install (when nexus_data_dir has been detected empty).
Удаление хранилища блобов (бинарных артефактов) выключено по умолчанию из исходной конфигурации. Для удаления хранилища блобов (бинарных артефактов) выключите nexus_delete_default_repos: true . Этот шаг выполняется только при первой установке (когда nexus_data_dir пустой).
nexus_blobstores: [] # example blobstore item : # - name: separate-storage # type: file # path: /mnt/custom/path # - name: s3-blobstore # type: S3 # config: # bucket: s3-blobstore # accessKeyId: ">" # secretAccessKey: ">"
Blobstores to create. A blobstore path and a repository blobstore cannot be updated after initial creation (any update here will be ignored on re-provisionning).
Configuring blobstore on S3 is provided as a convenience and is not part of the automated tests we run on travis. Please note that storing on S3 is only recommended for instances deployed on AWS.
Cоздание Blobstores. Путь к хранилищу и репозиторию хранилищ не могут быть обновлены после первоначального создания (любое обновление здесь будет игнорироваться при повторной установке).
Настройка хранилища BLOB-объектов на S3 предоставляется для удобства. Обратите внимание, что хранение на S3 рекомендуется только для экземпляров, развернутых на AWS.
nexus_repos_maven_proxy: - name: central remote_url: 'https://repo1.maven.org/maven2/' layout_policy: permissive # maximum_component_age: -1 # maximum_metadata_age: 1440 # negative_cache_enabled: true # negative_cache_ttl: 1440 - name: jboss remote_url: 'https://repository.jboss.org/nexus/content/groups/public-jboss/' # maximum_component_age: -1 # maximum_metadata_age: 1440 # negative_cache_enabled: true # negative_cache_ttl: 1440 # example with a login/password : # - name: secret-remote-repo # remote_url: 'https://company.com/repo/secure/private/go/away' # remote_username: 'username' # remote_password: 'secret' # # maximum_component_age: -1 # # maximum_metadata_age: 1440 # # negative_cache_enabled: true # # negative_cache_ttl: 1440
Выше пример конфигурации прокси-сервер Maven.
nexus_repos_maven_hosted: - name: private-release version_policy: release write_policy: allow_once # one of "allow", "allow_once" or "deny"
Maven hosted repositories configuration. Negative cache config is optionnal and will default to the above values if omitted.
Конфигурация размещенных (hosted) репозиториев Maven. Конфигурация отрицательного кэша (-1) является необязательной и будет по умолчанию использовать вышеуказанные значения, если не указана.
nexus_repos_maven_group: - name: public member_repos: - central - jboss
Все три типа репозитория объединяются со следующими значениями по умолчанию:
_nexus_repos_maven_defaults: blob_store: default # Note : cannot be updated once the repo has been created strict_content_validation: true version_policy: release # release, snapshot or mixed layout_policy: strict # strict or permissive write_policy: allow_once # one of "allow", "allow_once" or "deny" maximum_component_age: -1 # Nexus gui default. For proxies only maximum_metadata_age: 1440 # Nexus gui default. For proxies only negative_cache_enabled: true # Nexus gui default. For proxies only negative_cache_ttl: 1440 # Nexus gui default. For proxies only
Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS and yum repository types:
see defaults/main.yml for these options:
Хранилища Docker, Pypi, Raw, Rubygems, Bower, NPM, Git-LFS и yum по умолчанию выключены:
Смотрите defaults/main.yml для этих опций:
nexus_config_pypi: false nexus_config_docker: false nexus_config_raw: false nexus_config_rubygems: false nexus_config_bower: false nexus_config_npm: false nexus_config_gitlfs: false nexus_config_yum: false
Обратите внимание, что вам может потребоваться включить определенные области безопасности, если вы хотите использовать другие типы репозиториев, кроме maven. Это по умолчанию false
nexus_nuget_api_key_realm: false nexus_npm_bearer_token_realm: false nexus_docker_bearer_token_realm: false # required for docker anonymous access
Remote User Realm также может быть включена с помощью
nexus_rut_auth_realm: true
и заголовок может быть настроен путем определения
nexus_rut_auth_header: "CUSTOM_HEADER"
Запланированные задачи
nexus_scheduled_tasks: [] # # Example task to compact blobstore : # - name: compact-docker-blobstore # cron: '0 0 22 * * ?' # typeId: blobstore.compact # task_alert_email: alerts@example.org # optional # taskProperties: # blobstoreName: > # all task attributes are stored as strings by nexus internally # # Example task to purge maven snapshots # - name: Purge-maven-snapshots # cron: '0 50 23 * * ?' # typeId: repository.maven.remove-snapshots # task_alert_email: alerts@example.org # optional # taskProperties: # repositoryName: "*" # * for all repos. Change to a repository name if you only want a specific one # minimumRetained: "2" # snapshotRetentionDays: "2" # gracePeriodInDays: "2" # booleanTaskProperties: # removeIfReleased: true # # Example task to purge unused docker manifest and images # - name: Purge unused docker manifests and images # cron: '0 55 23 * * ?' # typeId: "repository.docker.gc" # task_alert_email: alerts@example.org # optional # taskProperties: # repositoryName: "*" # * for all repos. Change to a repository name if you only want a specific one # # Example task to purge incomplete docker uploads # - name: Purge incomplete docker uploads # cron: '0 0 0 * * ?' # typeId: "repository.docker.upload-purge" # task_alert_email: alerts@example.org # optional # taskProperties: # age: "24"
Запланированные задачи для настройки. typeId и специфичные для задачи taskProperties / booleanTaskProperties можно угадать либо:
- из иерархии типов Java org.sonatype.nexus.scheduling.TaskDescriptorSupport
- проверяя HTML-форму создания задачи в вашем браузере
- от просмотра запросов AJAX в браузере при ручной настройке задачи.
Свойства задачи должны быть объявлены в правильном блоке yaml в зависимости от их типа:
- taskProperties для всех строковых свойств (т. е. имен репозиториев, имен хранилищ, периодов времени . ).
- booleanTaskProperties для всех логических свойств (т. е. в основном чекбоксы в графическом интерфейсе задачи создания нексуса).
Резервные копии
nexus_backup_configure: false nexus_backup_cron: '0 0 21 * * ?' # See cron expressions definition in nexus create task gui nexus_backup_dir: '/var/nexus-backup' nexus_restore_log: '>/nexus-restore.log' nexus_backup_rotate: false nexus_backup_rotate_first: false nexus_backup_keep_rotations: 4 # Keep 4 backup rotation by default (current + last 3)
Резервное копирование не будет настроено, пока вы не переключите nexus_backup_configure в true .
В этом случае запланированная задача сценария будет настроена для запуска в Nexus
с интервалом, указанным в nexus_backup_cron (по умолчанию 21:00 каждый день).
См. [Шаблон groovy для этой задачи](templates / backup.groovy.j2) для получения подробной информации.
Это запланированное задание не зависит от других nexus_scheduled_tasks , которые вы
объявить в своем playbook.
Если вы хотите ротировать/удалять резервные копии, установите nexus_backup_rotate: true и настройте количество бекапов, которое вы хотели бы сохранить с помощью nexus_backup_keep_rotations (по умолчанию 4).
При использовании ротации, если вы хотите сэкономить дополнительное дисковое пространство во время процесса резервного копирования,
Вы можете установить nexus_backup_rotate_first: true . Это настроит предварительное ротирование/удаление перед бекапом. По умолчанию ротиция происходит после создания резервной копии. Обратите внимание, чем в этом случае старые резервные копии
удалятся до того, как текущий бекап будет сделан.
Процедура восстановления
Запустите playbook с параметром -e nexus_restore_point=
(например, 2017-12-17-21-00-00 для 17 декабря 2017 в 21:00
Удаление nexus
Предупреждение: это полностью удалит текущие данные. Обязательно сделайте резервную копию ранее, если это необходимо
Используйте переменную nexus_purge , если вам нужно перезапустить с нуля и переустановить экземпляр nexus с удалением всех данных.
ansible-playbook -i your/inventory.ini your_nexus_playbook.yml -e nexus_purge=true
Изменить пароль администратора после первой установки
nexus_default_admin_password: 'admin123'
Это не должно быть изменено в вашем playbook. Эта переменная заполняется стандартным паролем администратора Nexus при первой установке и гарантирует, что мы можем изменить пароль администратора на nexus_admin_password .
Если вы хотите изменить пароль администратора после первой установки, вы можете временно изменить его на старый пароль из командной строки. После изменения nexus_admin_password в вашей игровой книге вы можете запустить:
ansible-playbook -i your/inventory.ini your_playbook.yml -e nexus_default_admin_password=oldPassword
reFX Nexus (1 онлайн
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.
Статус В этой теме нельзя размещать новые ответы.
Deep Sound
New Member
13 Сен 2009 3 3 0 Новороссийск deepsound.pdj.ru
Благодагю за ответ. В следующий раз буду внимательнее искать хелпы по софту. :bb:
FeelGood
Active Member
15 Сен 2007 380 84 28 39 Saratov Посетить сайт
А что за болтик над кнопкой Library? Че он делает?
P00H
New Member
12 Мар 2004 8.192 2.789 0 57 Moscow
А что за болтик над кнопкой Library? Че он делает?
яркость подсветки дисплея меняет
kutuz
SongWriter
2 Дек 2006 873 323 83 Москва
у мну волшебство происходит)).
с какого-то перепугу Нексус 2 начал сканировать весь контент. Уже минут 15 как сканирует. Но играет в выставленном ранее пресете. другой выставить невозможно, ибо неактивны все кнопульки. У кого такая же фигня, ребзя.
чот я очкую.:superstition:
прально очковал. теперь звуг пропал.
P00H
New Member
12 Мар 2004 8.192 2.789 0 57 Moscow
с какого-то перепугу Нексус 2 начал сканировать весь контент. Уже минут 15 как сканирует
пока все диски не просканирует в поиске библиотек — нормально работать не будет, дабы избежать сканирования, в реестре надо вручную прописать путь к папке с библами.
kutuz
SongWriter
2 Дек 2006 873 323 83 Москва
P00H, но до этого же работал. и работал ноормально, без глюков и сканирований.
кстати, отсканировал. и все снова заработало. от так от)
vax
Чукча-писатель
13 Ноя 2002 7.397 4.619 113 44 Kiev/UA www.andivaxmastering.com
у меня сканировал 3 винта минут 20. все запахало. все пресеты из старых проектов грузит корректно. вот только заводской банк танцевальный он не нашел
P00H
New Member
12 Мар 2004 8.192 2.789 0 57 Moscow
вот только заводской банк танцевальный он не нашел
а ты его на винт скопировал?
vax
Чукча-писатель
13 Ноя 2002 7.397 4.619 113 44 Kiev/UA www.andivaxmastering.com
а ты его на винт скопировал?
не издевайся конечно скопировал
P00H
New Member
12 Мар 2004 8.192 2.789 0 57 Moscow
странно, должен видеть :scaut:
а эти папки у тебя есть?
\Nexus\Content\Presets\XP Dance Vol.2
\Nexus\Content\Samples\XpDnc2
vax
Чукча-писатель
13 Ноя 2002 7.397 4.619 113 44 Kiev/UA www.andivaxmastering.com
странно, должен видеть :scaut:
а эти папки у тебя есть?
\Nexus\Content\Presets\XP Dance Vol.2
\Nexus\Content\Samples\XpDnc2
samples/xpdnc2 точно есть
а вот пресеты — надо будет проверить.
спасибо за наводку!
Technomax
Moderator
26 Дек 2002 3.089 710 113 Питер forums.somethingawful.com
У меня все с ходу заработало . я ему в самом начале указал . где все добро лежит . и он за раз все и приходнул . и денс2 тоже . я его предварительно туда скопировал
kseile
Well-Known Member
24 Фев 2007 1.258 148 63 40 Санкт-Петербург vk.com
господа, а не подскажите где у нексуса лежит favorites?то есть список тембров, добавленных в «папку» избранное
Сусанин
Well-Known Member
27 Фев 2003 2.007 199 63 44 Оренбург vk.com
пока все диски не просканирует в поиске библиотек — нормально работать не будет, дабы избежать сканирования, в реестре надо вручную прописать путь к папке с библами.
Подскажите, а где именно в реестре находится? Как правильно выглядит?
P00H
New Member
12 Мар 2004 8.192 2.789 0 57 Moscow
Подскажите, а где именно в реестре находится? Как правильно выглядит?
[HKEY_CURRENT_USER\Software\reFX\Nexus]
«ContentPath»
там прописываем путь к вашей папке \Nexus\Content\
Dex Haer
Well-Known Member
10 Янв 2008 4.684 1.283 113 36 Москва dex-haer.ru
Обратите внимание, пользователь заблокирован на форуме.
У меня просканировал бысто и все отлично работает! (Windows 7)
Это самая ожидаемая мною синта!! Абажаю Нексус, а второй прям очень.
Андрей Гераськин
Banned
1 Июн 2008 2.173 254 0 41 Moscow
Обратите внимание, пользователь заблокирован на форуме.
а второй прям очень.
помоему он от первого не отличается вообще. ничем
Dex Haer
Well-Known Member
10 Янв 2008 4.684 1.283 113 36 Москва dex-haer.ru
Обратите внимание, пользователь заблокирован на форуме.
помоему он от первого не отличается вообще. ничем
Я не уверен, но помоему, они системой защиты отличаются.
Андрей Гераськин
Banned
1 Июн 2008 2.173 254 0 41 Moscow
Обратите внимание, пользователь заблокирован на форуме.
Dex Haer, это главная фича второго? n_the_quiet2:
Points
Active Member
11 Ноя 2007 314 176 43
Андрей Гераськин,
Главное отличие — во втором можно редактировать многослойные звуки,а также добавилось встроенных эффектов.
kutuz
SongWriter
2 Дек 2006 873 323 83 Москва
Ребзя. кто знает — есть поддержка 64 бит у Нексуса 2. на офсайте смотрел. не нашел. в этой ветке тоже. Может, кто в курсе. имеется ввиду лицензия, есессна.
Mile
New Member
17 Янв 2010 1 0 0
блин подскажите если нетрудно. банки установил. оно их видит. но при запуски любого семпла ну или как это там называеться. выдаёт ошибку!что делать?
PogoN
New Member
17 Янв 2010 7 1 0
Обратите внимание, пользователь заблокирован на форуме.
Mile,
Возможно это проблема самой библиотеки.
Потому как какие то звуки из библиотеки грузятся, а какие то нет.
Такая же проблема есть, но я так понял что при загрузке не находится каких то отдельных параметров.
velehentor
Кошачий Отец
16 Фев 2009 3.263 1.892 113 52 textarget.ru
банки установил. оно их видит
Ни черта оно не видит, стало быть.
По умолчанию все аддоны (даже те, которых в системе никогда не было) отображаются в списке пресетов. Но при попытке их загрузить «Нексус» естественно выдаст ошибку.
Читай внимательно руководства по установке и информацию по регистрации дополнительных банков в системе, там всё это есть.
Установка и использование Nexus Repository для хранения артефактов
При разработке программного обеспечения разработчики оперируют таким понятием как «артефакт». Артефакт представляет собой элемент (часть) разрабатываемого программного продукта. К артефактам относятся исполняемые и бинарные файлы, пакеты программ и т.д.
С расширением архитектуры и функционала разрабатываемого продукта количество артефактов начинает неуклонно расти. Появляется потребность в хранение большого количества артефактов. Для решения данной проблемы существует специальный класс программ — менеджеры репозиториев, которые позволяют эффективно хранить и управлять артефактами.
Одним из таких решений является продукт от американской компании Sonatype под названием Nexus Repository. Nexus поддерживает более 15 различных форматов артефактов среди которых можно выделить APT, Docker, Go, Helm, Maven, npm, PyPi и другие. С полным списком поддерживаемых артефактов можно ознакомиться в документации Nexus .
Существует 2 версии Nexus Repository: бесплатная и коммерческая. Отличие коммерческой от бесплатной версии заключается в наличии клиентской поддержки, а также большего числа поддерживаемых артефактов.
В этой статье мы будем устанавливать бесплатную версию.
Предварительные требования
- Сервер с любым дистрибутивом и версией Linux, который поддерживает Java 8 версии. Помимо Linux, Nexus также поддерживает установку на ОС семейства Windows и MacOS.
- Минимум 4-ядерный процессор. Рекомендуется использовать 8-ядерный и более.
- Оперативная память желательно не менее 8 ГБ.
- Наличие минимум 50 ГБ свободного места на жестком диске. В данный минимум не включено место, которое занимает операционная система и сторонние установленные программы. Если места будет недостаточно, Nexus не запустится.
- Наличие предустановленной Java 8 версии. В инструкции мы также опишем этот процесс.
На официальном сайте Sonatype также приведены примеры системных требований для определенного количества репозиториев и хранящихся в них артефактов.
Установка Nexus Repository
1. Первым делом установим Java. Для этого сначала обновляем списки пакетов:
sudo apt update
2. Далее переходим к установке Java 8 версии, используя пакет OpenJDK :
sudo apt -y install openjdk-8-jre-headless
После установки проверяем, что Java установилась корректно, используя команду для вывода версии Java:
java -version
Если у вас установлено несколько версий Java, то необходимо переключиться на 8 версию. На сервере возможно присутствие двух и более версий Java, но использовать можно только одну. Для того чтобы переключиться на 8 версию Java, необходимо выполнить команду:
sudo update-alternatives --config java
В открывшемся интерактивном меню необходимо выбрать нужную версию Java при помощи клавиши TAB, далее подтвердить выбор, нажав Enter.
Следующие шаги относятся непосредственно к установке самого Nexus. Установка будет произведена в директорию /opt .
3. Скачиваем архив с программой из официального сайта при помощи утилиты wget :
sudo wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz
4. Разархивируем скачанный архив в директорию /opt :
sudo tar -zxvf latest-unix.tar.gz -C /opt
5. На выходе будет создано 2 директории: sonatype-work и nexus-3.61.0-02 , где 3.61.0-02 — это текущая версия Nexus. Архив с именем latest-unix всегда содержит последнюю актуальную версию. Со временем версия будет изменяться. В директории sonatype-work содержатся временные файлы, кэш-файлы и лог-файлы. Для удобства, изменяем название директории nexus-3.61.0-02 на nexus :
sudo mv nexus-3.61.0-02/ nexus/
6. Для безопасной работы Nexus необходимо создать пользователя с именем nexus :
sudo adduser nexus
Далее необходимо отключить возможность входа на сервер под этим пользователем. Для этого выполните команду:
usermod nexus -s
Также для пользователя nexus необходимо отключить вход по паролю. Открываем файл sudoers при помощи команды:
sudo visudo
Находим строку с комментарием # User privilege specification и добавляем следующую запись:
nexus ALL=(ALL) NOPASSWD: ALL
Сохраняем файл и выходим из него.
7. Назначаем владельца и группу для директорий /opt/nexus и /opt/sonatype-work , задав в качестве владельца ранее созданного пользователя nexus :
sudo chown -R nexus:nexus nexus/ sonatype-work/
8. Открываем конфигурационный файл nexus.rc , который располагается в /opt/nexus/bin/ , при помощи любого текстового редактора.
sudo nano /opt/nexus/bin/nexus.rc
Удаляем символ # (символ комментария) и указываем пользователя с именем nexus .
Сохраняем файл и выходим из него.
9. Чтобы запускать, останавливать и перезапускать Nexus, необходимо создать systemd unit-файл. Создаем файл с именем nexus.service :
sudo nano /etc/systemd/system/nexus.service
Со следующим содержимым:
[Unit]
Description=nexus service
After=network.target
[Service]
Type=forking
LimitNOFILE=65536
ExecStart=/opt/nexus/bin/nexus start
ExecStop=/opt/nexus/bin/nexus stop
User=nexus
Restart=on-abort
[Install]
WantedBy=multi-user.target
Сохраняем файл и выходим из него.
10. Запускаем nexus :
sudo systemctl start nexus
И проверяем его статус:
systemctl status nexus
Если в статусе отображается active , значит, Nexus успешно запущен.
11. Далее добавляем Nexus в автозагрузку:
sudo systemctl enable nexus
Полный запуск Nexus занимает в среднем 2-3 минуты. Готовность программы можно проверить в файле nexus.log :
tail -f /opt/sonatype-work/nexus3/log/nexus.log
Started Sonatype Nexus OSS
По умолчанию веб интерфейс Nexus доступен с любых IP-адресов ( 0.0.0.0 ) и слушает порт 8081 :
Главное меню веб-интерфейса Nexus:
Первичная настройка Nexus
При первом входе в веб-интерфейс Nexus нам предложат настроить несколько параметров. Для авторизации необходимо нажать на кнопку « Sign in», которая находится справа сверху.
По умолчанию в Nexus присутствует один пользователь с именем admin , который обладает полномочиями администратора. При первом входе необходимо получить пароль:
Для этого на сервере, где установлен Nexus, необходимо выполнить команду:
cat /opt/sonatype-work/nexus3/admin.password
Полученный пароль используем для входа и нажимаем на кнопку « Sign in» .
Далее необходимо произвести первичную настройку Nexus:
Придумываем новый пароль для пользователя admin:
Далее нам предложат включить или отключить анонимный доступ. При включенном анонимном доступе каждый пользователь, имеющий адрес репозитория, сможет искать, просматривать и скачивать артефакты без аутентификации. Если же анонимный доступ выключить, то для работы с репозиториями потребуется аутентификация при помощи логина и пароля:
На последнем шаге программа уведомляет, что настройка успешно выполнена и можно начать использовать Nexus Repository:
Создание репозитория для хранения Docker-образов
Для того чтобы создать репозиторий для Docker-образов, необходимо перейти в веб-интерфейс Nexus и авторизоваться под учетной записью администратора.
Далее в главном меню нажать на кнопку Server administration and configuration (значок шестеренки):
В левом меню выбрать пункт Repositories :
Далее нажать на кнопку Create repository :
Выбрать из списка репозиторий с именем docker (hosted) :
Nexus поддерживает 3 различных типа репозиториев:
- hosted — тип репозитория, в котором артефакты хранятся напрямую в Nexus;
- proxy — тип репозитория, который проксирует запросы на удаленный репозиторий. Перед отправкой запроса на наличие требуемого артефакта Nexus проверяет локальное содержимое репозитория, и, если артефакт не найден, запрос перенаправляется в удаленный репозиторий. В качестве примера можно привести репозитории APT.
- group — тип репозитория, который объединяет несколько репозиториев одного и того же формата в одну общую группу. Эта общая группа и связанный с ней URL-адрес могут использоваться в качестве единой точки доступа ко всем компонентам в определенном формате, полученным из нескольких репозиториев.
Придумываем имя для репозитория, например docker-images . Напротив параметра HTTP ставим чекбокс и задаем любой порт, который не занят на сервере, где установлен Nexus, например, 8083:
Для взаимодействия с репозиториями Docker Nexus использует коннекторы (connectors), которые позволяют задать порт, тем самым открывая доступ к репозиторию по протоколу HTTP или HTTPS. Однако по умолчанию Nexus доступен только по протоколу HTTP. Если попытаться выполнить команду docker login на хосте, указав адрес реестра и порт репозитория и используя при этом протокол HTTP, то Docker отобразит ошибку http: server gave HTTP response to HTTPS client .
По умолчанию Docker не поддерживает работу с репозиториями, которые используют самоподписанные сертификаты, а также репозитории по протоколу HTTP. Для того чтобы разрешить работу с репозиториями по протоколу HTTP, необходимо создать (если отсутствует) файл daemon.json , который располагается в /etc/docker/ .
sudo nano /etc/docker/daemon.json
И прописать следующий блок:
"insecure-registries" : ["91.100.100.1000:8083"]
>
Где 91.100.100.1000:8083 — адрес, на котором располагается Nexus, и HTTP порт от репозитория Docker, который был задан ранее в веб-интерфейсе.
Сохраняем файл и выходим из него.
После этого необходимо перезапустить демон Docker:
sudo systemctl restart docker
Будьте внимательны, так как перезапуск агента Docker затронет работающие контейнеры. Часть из них не будет запущена автоматически, при условии, что контейнер не был ранее запущен с опцией —restart=always .
Далее выполняем команду docker login , указав в качестве адреса репозитория адрес, на котором находится Nexus, и порт от репозитория:
docker login 91.100.100.1000:8083
В качестве логина можно воспользоваться учетной записью администратора — admin .
Проверим, сможем ли мы сделать push (отправить образ в репозиторий). Для этого возьмем образ с alpine :
Присвоим образу тег. Формат тега для Docker образов имеет следующий вид:
образ:тег адрес реестра:порт репозитория/имя_образа
docker tag alpine:latest 91.100.100.1000:8083/alpine-test
Проверяем, что у нас появился новый образ:
Для того чтобы выполнить push в репозиторий, воспользуемся командой:
docker push 91.100.100.1000:8083/alpine-test
Переходим в веб-интерфейс Nexus, далее в созданный ранее репозиторий и видим, что образ успешно появился:
Настройка HTTPS
Правильным решением при работе с репозиториями Docker является использование протокола HTTPS. Для настройки HTTPS в Nexus выполняем следующие шаги:
1. Переходим в директорию /opt/nexus/etc/ssl :
cd /opt/nexus/etc/ssl
2) Для генерации самоподписанного сертификата воспользуемся утилитой keytool .
keytool представляет собой утилиту командной строки для создания ключей и сертификатов. Также является хранилищем ключей для Java. Воспользуемся следующей командой для создания сертификата:
sudo keytool -genkeypair -keystore keystore.jks -storepass test12345 -keypass test12345 -alias jetty -keyalg RSA -keysize 2048 -validity 1000 -dname "CN=*.$, OU=test, O=test1, L=Unspecified, ST=Unspecified, C=RU" -ext "SAN=DNS:nexus-repo.com,IP:91.10.10.00" -ext "BC=ca:true"
Значения, выделенные красным цветом, необходимо заменить на свои:
- -keystore keystore.jks — имя файла, в котором будет сохранен ключ. Используется формат .jks ;
- -storepass test12345 — задается пароль для доступа к хранилищу ключей;
- -keypass test12345 — задается пароль для доступа к закрытому ключу;
- -ext «SAN=DNS: nexus-repo.com ,IP: 91.10.10.00 » — задается доменное имя и IP-адрес сервера, на котором находится Nexus.
Если в качестве доменного имени будет использоваться локальный домен, то его необходимо прописать в файле /etc/hosts (для Linux) и C:\Windows\System32\drivers\etc\hosts в Windows.
3. Далее извлекаем сертификат сервера из созданного файла с именем keystore.jks при помощи команды:
sudo keytool -export -alias jetty -keystore keystore.jks -rfc -file nexus.cert
nexus.cert — имя файла с сертификатом, которое будет получено на выходе.
4. Далее переходим к редактированию конфигурационного файла nexus-default.properties , который находится в /opt/nexus/etc :
sudo nano /opt/nexus/etc/nexus-default.properties
Находим блок, содержащий строку с комментарием # Jetty section , и прописываем следующий параметр:
application-port-ssl=8443
Так мы задаем порт, на котором будет доступен HTTPS.
В этом же блоке прописываем следующую строчку с параметром:
nexus-args=$/jetty.xml,$/jetty-http.xml,$/jetty-https.xml,$/jetty-requestlog.xml
5. Далее редактируем файл jetty-https.xml , который находится в /opt/nexus/etc/jetty :
sudo nano /opt/nexus/etc/jetty/jetty-https.xml
Находим блок с именем sslContextFactory .
В строках KeyStorePassword , KeyManagerPassword , TrustStorePassword прописываем пароль, который был задан на этапе генерации сертификата. В нашем примере пароль — test12345 .
Также в параметрах KeyStorePath и TrustStorePath можно задать имя сгенерированного сертификата:
6. После внесения всех изменений перезапускаем сервис nexus :
sudo systemctl restart nexus
В ОС Linux сертификат должен быть установлен на уровне ОС, иначе при попытке авторизоваться в репозитории при помощи команды docker login появится ошибка:
x509: certificate signed by unknown authority
Для установки сертификата в системах Ubuntu/Debian выполняем следующие шаги:
1. Устанавливаем пакет ca-certificates :
sudo apt -y install ca-certificates
2. Установить сертификат можно только в формате .crt Другие форматы не поддерживаются. Так как на выходе файл сертификата был с расширением .cert , необходимо изменить расширение на .crt .
Для этого выполняем команду:
sudo mv nexus.cert nexus.crt
Копируем сертификат в директорию /usr/local/share/ca-certificates :
sudo cp nexus.crt /usr/local/share/ca-certificates
3. Установка сертификата выполняется при помощи команды:
sudo update-ca-certificates
Для того чтобы настроить HTTPS в репозитории, необходимо перейти в веб-интерфейс Nexus, авторизоваться под учетной записью администратора. Далее в главном меню нажать на кнопку Server administration and configuration (значок шестеренки). В левом меню выбрать пункт Repositories , далее найти необходимый репозиторий. Напротив параметра HTTPS ставим чекбокс и задаем любой порт, который не занят на сервере, где установлен Nexus, например 8344:
Сохраняем изменения. На сервере выполняем команду docker login , указав в качестве адреса репозитория адрес, на котором находится Nexus, и порт HTTPS от репозитория:
docker login nexus-repo.com:8344
В качестве логина можно воспользоваться учетной записью администратора — admin .
Проверим, сможем ли мы сделать push (отправить образ в репозиторий). Для этого возьмем образ с nginx :
Присвоим образу тег. Формат тега для Docker образов имеет следующий вид:
образ:тег адрес реестра:порт репозитория/имя_образа
docker tag nginx:latest nexus-repo.com:8344/nginx-test
Проверяем, что у нас появился новый образ:
Для того чтобы выполнить push в репозиторий, воспользуемся командой:
docker push nexus-repo.com:8344/nginx-test
Переходим в веб-интерфейс Nexus, далее в созданный ранее репозиторий и видим, что образ успешно появился:
Заключение
Nexus Repository является отличным решением для хранения и управления артефактами. Благодаря поддержке большого количества различных форматов артефактов данный продукт подойдет как небольшим командам разработки, так и более крупным.
Requirements and Installation

Какой менеджер модов лучше использовать?
Mod Organizer 2 является лучшим вариантом для установки и удаления модов, которые зависят от правильного порядка загрузки.
Vortex тоже работает, но для достижения того же результата требуется больше усилий.
Имейте в виду, что некоторые пользователи сообщают, что Vortex автоматически обновляет Skyrim. Это сломает ваш список модов.
Не устанавливайте моды вручную и не используйте устаревший Nexus Mod Manager.
Хочу смотреть видосики, а не читать «многа букафф»!
Видео на английском.
Видео на русском (пока недоступно).
КРАЙНЕ ВАЖНО: ВАША ВЕРСИЯ СКАЙРИМА
Skyrim SE из GOG – это версия 1.6.659, известная просто как «версия GOG».
Skyrim SE из Steam, версия 1.6.640 известна как «последняя версия AE».
Если вы только что установили Skyrim SE из Steam, у вас будет эта
версия.
Skyrim SE из Steam, версия 1.6.353 известна как «AE».
Skyrim SE из Steam, версия 1.5.97 известна как «SE».
Skyrim: Special Edition из Epic Games Store и Windows Store/Game Pass не поддерживают SKSE. OStim NG не может быть
установлен для этих версий.
Если вы поставили требуемый мод неправильной версии, ничего не будет работать.
Убедитесь, что вы скачали моды из требований для ВАШЕЙ ВЕРСИИ Skyrim.
Чтобы узнать версию, перейдите в корневую папку игры. ПКМ по SkyrimSE —> Свойства —> Подробно

Если у вас игра в Steam, вы запускаете клиент через MO2, но все равно боитесь, что когда-нибудь что-нибудь пойдет не так, и вы случайно или
специально обновитесь. Мне посоветовали сохранить три файла, чтобы в будущем поставить «яррррр и бутылка рома» клиент, купленный на
рутрекере. И просто заменить его тем, что у вас в стиме, не забыв заменить три сохраненных файла. Что именно зарезервировать:

В ЧЕМ РАЗНИЦА МЕЖДУ ВЕРСИЯМИ?
Некоторые моды для 1.5.97 еще не были перенесены на 1.6.x. Однако большинство из них уже адаптировали.
Если вы не хотите использовать какой-то очень специфический мод для SE, то у вас не возникнет проблем, если вы будете играть на 1.6.x (AE).
Как мне откатить версию игры до более старой?
Инструмент называется Unofficial Skyrim Special Edition Downgrade Patcher.
С 1.6.640 до 1.5.97: ссылка.
С 1.6.640 до 1.6.353: ссылка. Выберите Best of Both Worlds , чтобы можно было использовать USEEP последней версии.
Установка OStim: требуемые моды
Убедитесь, что вы прочитали и поняли вышеизложенное, прежде чем пытаться установить OStim.
Если вы установите неправильные версии зависимостей, OStim работать не будет.
При загрузке модов, перечисленных ниже, игнорируйте любые другие появляющиеся требования, некоторая информация устарела.
1. SKSE.
Плагин должен быть установлен в корневую папку игры. НЕ УСТАНАВЛИВАЙТЕ его через менеджер модов. Официальный сайт SKSE.
Для Skyrim 1.5.97 (SE) требуется 2.0.20.
Для Skyrim 1.6.353 (AE) требуется 2.1.5.
Для Skyrim 1.6.640 (AE) требуется 2.2.3.
Для Skyrim GOG требуется GOG версия.
2. Nemesis или FNIS.
Видео (на англ.) установки Nemesis через MO2.
Видео (на англ.) установки Nemesis через Vortex.
При первом запуске Nemesis вы можете столкнуться с ошибкой 6002. Обычно это Защитник Windows не позволяет Nemesis создавать файлы. Решение этой проблемы простое, вы должны найти его. Если все еще пользуетесь FNIS, то его тоже можно использовать.
3. Address Library.
Для 1.5.97 (SE) требуется версия «2».
Для 1.6.x (AE) требуется версия «8».
4. ConsoleUtilSSE NG.
Подходит для любой версии игры.
5. JContainers SE.
Для 1.5.97 (SE) требуется версия 4.1.13.
Для 1.6.353 (AE) требуется версия 4.2.2 в разделе «Old files».
Для 1.6.640 (AE)требуется версия 4.2.3.
6. Mfg Fix.
Для 1.5.97 (SE) требуется версия 1.5.4.
Для 1.6.353 (AE) требуется версия 1.6.0.
Для 1.6.640 (AE) требуется версия 1.6.1.
7. PapyrusUtil SE.
Для 1.5.97 (SE) требуется версия 3.9.
Для 1.6.353 (AE) требуется версия 4.3.
Для 1.6.640 (AE) требуется версия 4.4.
8. RaceMenu.
Для 1.5.97 (SE) требуется версия 0.4.16.
Для 1.6.353 (AE) требуется версия 0.4.19.11 (Nexus) или 0.4.19.12 у нас.
Для 1.6.640 (AE) требуется версия 0.4.19.13.
9. Другие требуемые моды.
1) SkyUI;
2) SkyUI Flashing Savegames Fix;
3) XP32 Maximum Skeleton Special Extended — XPMSSE. Полная версия или легкая. Автор гайда советую легкую, поэтому решайте сами.
10. Требуемые моды для OStim.
Эти плагины не требуются для самого OStim, но требуются для некоторых дополнений OStim.
В их установке нет ничего страшного, даже если вы не планируете использовать аддоны.
1) UIExtensions;
2) iWant Widgets;
3) NL_MCM — A Modular MCM Framework;
4) Papyrus Extender;
5) Fuz Ro D-oh.
Установка OStim: OStim и OpenSex
OSA
Обновленная OSA for Ostim 1.3 RUS. Доработанная версия специально для OStim. Сам не тестил, поэтому пока без перевода (но сделаю). Работает на любой версии игры.
Обычная версия OSA 2-023 (ищите в сети), проверена временем. Использую ее на данный момент. Только для SE. БОЛЕЕ НЕ РАБОТАЕТ!
Нет, вариант с нексуса не подойдет, как и с оф. сайта CEO.
OStim NG
Переведенная версия. Подходит для любой игры.
OpenSex
Рекомендуемое ядро анимаций для OStim. Включает в себя большое количество анимаций для мужчин и женщин (и для одного мужчины с двумя
женщинами). Лесбийские анимации можно скачать тут.
OpenSex Standalone — Open alternative to OSex. Пока без перевода, но скоро сделаю.
Установка OStim: установка модов
Если вы еще не установили моды, то пора.

Если PapyrusUtil конфликтует с каким-либо модом, удостоверьтесь, что он перезаписывает его.
Для MO2 убедитесь, что вы сортируете список модов в левой части экрана по приоритету. Переместите PapyrusUtil на более высокий приоритет.
Для Vortex перейдите на экран «Manage Rules», найдите PapyrusUtil и выберите «After all».
Запуск Nemesis/FNIS для генерации анимаций.
Если вы используете FNIS, он выдаст предупреждение об игнорировании незавершенного мода. Это нормально, и вы игнорируйте.
Как пользоваться модом
Важно : если вы используете 3BA или BHUNP тела, то обязательно измените кнопки в их MCM, потому что они совпадают с
OStim (Num 9). Автор почему-то рекомендует изменить на Esc.
Для большего погружения в игру рекомендуется запускать сцену через аддоны на геймплей. Например, OPrivacy. Но сцену можно начать по нажатию стрелочки Вверх. Если будете запускать через библиотеку OSA, то все функции OStim не будут доступны до конца сцены.
Управление по умолчанию:
1. Nump 8 — вверх.
2. Num 2 — вниз.
3. Num 4 — влево.
4. Num 6 — вправо.
5. Num 7 — да.
6. Num 1 — нет.
7. Num 9 — смена актера.
8. Num Del — завершить сцену.
Важный мод для игроков с NumPad.
No Numpad Hotkeys не даст экипировать/убрать предметы из Избранного.
Установка OStim: Improved Camera
Если вы хотите погрузиться в процесс от 1-го лица, то установите мод Improved Camera.
Далее скачайте ini файл с настройками со страницы OStim NG.
На данный момент камера работает на версиях 1.5.97 и 1.6.353.
Настроить ее можно прямо в игре по нажатию Left Shift + Home.
Дополнительные наборы анимаций для OStim
Сначала запустить игру и убедитесь, что мод вообще работает при наличии OpenSex.
Не ставьте наборы анимаций, которые были созданы для OSex, за исключением L’amour Rose. Этот мод совместим.
OpenSex compatibility patch
Патч OpenSex совмещает портированные пакеты анимации с OpenSex.
Правильный порядок загрузки:
1. Портированные пакеты анимаций.
2. OpenSex.
3. OpenSex compatibility patch.
С появлением OpenSex Addon Hub заметка выше перестала иметь смысл.
Рекомендуемый список загрузки анимаций
Billy Lesbian 3P animation pack for OStim NG
Billy Threesome animation pack for OStim NG
Billyy Animations Pack Ostim Port
Lesbian Animation Pack for OStim NG
Nibbles Animation pack for OStim NG
OSex L’amour Rose Animation Pack
OStim Feet Animation Pack
Billyy Group Animations OStim Port
NCK30 Animations Pack OStim Port
OpenSex Standalone — Adult Animations for OStim NG
OpenSex Addon Hub
OpenSex Anal Animations Add On
Drago Foot Animation Add on for Opensex
OpenSex Compatibility Patch — Addon Hub version
Billyy Furniture Pack for OStim NG
Moon Lovemaking Compendium for OStim NG
Синие моды являются опциями, их порядок не имеет значения, за исключением того, что Billyy Group Animations должен идти после Billy Threesome animation pack , а NCK30 animation pack должен быть после Billy animation pack. Только так. Если у вас есть хотя бы один мод из списка, вам также потребуется Compatibility Patch .
Красные — жесткие требования. Их порядок имеет значение.
Желтые не являются обязательными, но их порядок имеет значение. Они должны быть после OpenSex Standalone .
Зеленые не являются обязательными, их порядок не имеет значения, но они должны быть после всего остального.
Аддоны для OStim
Большинство аддонов указаны на странице.
Еще есть список с кратким описанием для обычной версии OStim. Вероятно, что-то может не работать.
Я ХОЧУ СТОНЫ В ЯПОНСКОМ СТИЛЕ!
Если вы хотите подобное, то качайте Oneesan Voice for OSA (ссылка на сообщение в дискорде).
Вам нужно присоединиться к серверу OStim & Related mods.
Примечание: если вы установите в существующем сохранении, элементы управления OStim в меню MCM будут сброшены на «Esc».
Вы должны переназначить клавиши или, если нажатие клавиши Esc вызывает CTD, выполните процедуру чистого сохранения.
НЕСОВМЕСТИМЫЕ МОДЫ
1. OSex, наборы анимаций OSex, Unofficial OSex Bug Patch.
2. OSA 2-023, для OStim NG 1-2.
3. OAlign.
4. Любая версия ConsoleUtilSSE, кроме NG.
5. Conditional Expressions — Subtle Face Animations. ЭТА версия должна быть совместима.
6. FK’s Diverse Racial Skeletons.
Как почистить сохранение (сделать чистое сохранение):
Если OStim работает с новым сохранением, но не работает с вашим текущим, вы можете выполнить «процедуру чистого сохранения».
Вам не нужно делать чистое сохранение на новой игре, если OStim
отказывается в ней работать. Это будет бесполезная трата времени.
1. Отключите OSA.esm в вашем менеджере модов MO. Он должен автоматически отключать OStim и другие моды, зависящие от OSA.
2. Запустите игру, она будет жаловаться на отсутствие модов.
3. Поиграйте пару минут. Бегайте, снимайте/надевайте одежду, дайте по щам Назиму, погладьте кота, купите цветов у Софи.
4. Сохраните игру.
5. Откройте это новое сохранение в ReSaver (Fallrim Tools) и очистите его.
6. Установите все новые компоненты OStim, при необходимости перезаписав старые.
7. Повторно включите OSA.esm, OStim.esp, OCum.esp (если имеется) или любые другие связанные плагины, которые были отключены на шаге 1.
8. Запустите игру.
9. Загрузите очищенное сохранение.
10. Дайте игре несколько минут, чтобы OStim MCM заработал. Теперь игра считает, что вы никогда не устанавливали OStim, потому что вы очистили
текущее сохранение.
Дополнительно: какие тела лучше использовать?
Мужское тело
OStim работает с любым мужским телом на основе Schlongs of Skyrim. Это означает SOS, SAM или HIMBO; либо обычные, либо «облегченные» версии
этих модов. Автор (и я тоже) рекомендует SAM Light High Poly. Принято считать, что полные версии тел SOS содержат много ненужного контента, в
том числе «скрипты маскировки», которые негативно влияют на производительность.
Порядок загрузки должен выглядеть следующим образом:

Женское тело: основа
3BA или BHUNP? Автор считает, что BHUNP, т.к. оно лучше подогнано под коллизии сцен секса. Я считаю лучшим 3BA.
Рекомендуемый пресет тела для использования с OpenSex — D-sney Mommy NG — BHUNP Bodyslide Preset.
Для пользователей 3BA: будьте осторожны с модом Mu Joint Fix. Вам следует настроить его, иначе возникнут отсечения/наложения.
Женское тело: физика
CBPC или SMP? SMP более продвинутая, но CBPC намного легче.
Вы можете миксовать обе физики. Например, SMP только для груди, а CBPC — для всего остального.
CBPC — Physics with Collisions for SSE-AE and VR.
Faster HDT-SMP.
Аддон OSmp включит физику тела SMP только для сцены.
Заметки по установке CBPC
1. Пресет UNP неважен.
2. Галочку для «Bounce amplitude» на «normal».
3. Вкл. «Gravity».
Заметки по установке BHUNP
Рекомендуется использовать HDT-SMP body с опцией: CBPC + SMP (most parts B) — SMP только для груди.
Физика грудиs: выбрать»Rare bounce».
Коллизия груди: выбрать»Small~big boobs» или «Medium boobs». Оба варианта рабочие.
Гравитация груди: добавить gravity.
Гравитация: выбрать «Gravity for boobs».
Пуш-ап эффект: не добавлять автоматический пуш-ап.
Если вам нужно отредактировать физику груди, скачайте BHUNP Physics Config Installer.
Женское тело: текстуры
Опция 1: Reverie — Skin.
Опция 2: Bits and Pieces Female Skin. Выберите подходящий вариант для вашего ПК. 8k — лучший выбор для использования анимаций от 1-го лица.
Перезаписать Specular textures и subsurface scattering из Demoniac skin (glossy). При установке этого мода выберите «использовать существующий»
для всего, кроме specular textures и установите subsurface scattering.
Женское тело: установка и запуск BodySlide
BodySlide and Outfit Studio — это инструмент, используемый для изменения формы женского тела и одежды.
После установки 3BA или BHUNP и выбранного пресета BodySlide вам нужно запустить BodySlide, чтобы наряды в вашей игре соответствовали вашему пресету BodySlide. Для MO2 установите BodySlide, как и любой другой мод, и включите его. Как и в случае с Nemesis или FNIS, вам нужно добавить BodySlide.exe в список инструментов. Прежде всего, создайте пустой мод под названием «BodySlide Output».

Теперь ПКМ по BodySlide и Outfit Studio в списке модов > Открыть в проводнике > перейдите к \CalienteTools\BodySlide > скопируйте
весь путь. Щелкните раскрывающееся меню исполняемых файлов > «Изменить. ». Добавьте BodySlide x64 в качестве исполняемого файла .exe
по пути, который вы скопировали. Установите флажок «Создавать файлы в моде вместо перезаписи» (Create files in mod instead of overwrite) и
выберите «BodySlide Output».
Нажмите ОК.

Снова щелкните раскрывающееся меню исполняемых файлов и выберите BodySlide x64. Запустить его.
В BodySlide, прежде всего, нажмите «Group Filter». Выберите BHUNP, BHUNP 3BBB, OCum (если он у вас есть) и Unassigned.
Для «Наряд/тело» выберите BHUNP 3BB Advanced Ver 3.
Для «Preset» выберите нужный пресет. В данном случае это Silver — Type A — Skinny to Curvy.
Внизу отметьте «Build Morphs», а затем нажмите «Batch Build».

В появившемся списке выбираем все и нажимаем «Build». Вам могут быть предложены разные версии одного и того же костюма, всегда выбирайте
версию 3, когда у вас есть такая возможность. Если вы запустите BodySlide для создания ванильных комплектов, он перезапишет заменители ванильных нарядов, такие как «Simply Realistic Armor and Weapons» (Custom NordwarUA Edition). Даже если вы загрузили этот или аналогичный мод после BodySlide Output, он заменит файлы мода, который перезаписал себе подобный, так что будьте осторожны. Установливайте такие моды после BodySlide Output и переустановите их, если их файлы были заменены.
СОВМЕСТИМОСТЬ С ОФ. ДИСКОРДА OStim NG
OAchievements: не тестировался.
OAhegao (original): используйте OAhegaoN, НО есть нюансы ниже.
OAhegaoNG: баги с последними версиями OStim NG
OAlign: сломан. НЕ ИСПОЛЬЗУЙТЕ.
OAroused: заброшен. Используйте OSL-Aroused.
SL-Aroused:нет совместимости.
OSL-Aroused: предположительно, что работает. Есть сообщения с задержке скриптов.
OBody (original): не используйте. Заменен на OBodyNG.
OCum (original): заброшен. Use OCum Ascended/Inflated instead.
ODefeat: баги/лаги/ломает сохранение. Используйте Yamate Kudasei.
Eager Followers: не тестировалось. Заменен на OStimNPCs. Сообщается, что
работает нормально на всех версиях. (запуск сцены OStim без
запроса-приглашения. )
OEquip: не тестировался.
Excitable Subs: полу/полностью функциональный.
OFadeToBlack: не тестировался.
Fertility Adventures for FM3: полу/полностью функциональный.
Fertility Mode OStim Patch: создан не для для OStimNG. Может не работать как задумано, не проверено.
OHeels: стал бесполезен после версии OStim NG 6x.
OIsNowABadTime: не тестировался. Потенциально глючит, судя по сообщениям.
OLycanthrope: полуфункциональный. Есть ошибки. Активная разработка, портирование.
More Adventures for Ostim: не тестировался.
ONights: Заменен на OStimNPCs. Не тестировался. Сообщалось о багах при старте сцены, которые ломали сохранение.
OBetternights: заменен на OStimNPCs. Последняя версия (2.2) сломана.. 2.1 не тестировалась, но должна работать.
OPleaseletmego: забагован. Анимации сломаны, в любом случае нападение происходит после сцены.
OProstitution: не тестировался. См. доп. совместимость (?).
OPubes: не тестировался. Вроде работает.
ORomance (original): используйте ORomancePlus вместе с ним.
Scrappies Matchmaker: вызывает проблемы с ролями во время сцены.
OSearch: полу/полностью функциональный. Баги с некоторыми/новыми анимациями.
OSelector: не тестировался. Сообщения о багах.
OSouls: не тестировался. Должен работать.
OSTD: не тестировался. Несовместим с AE. EasySTD является новой версией.
EasySTD: не тестировался, несовместим с АЕ, разработка остановлена.
OStim Solutions/Sexlabs Solutions Revisited: типа работает, но некоторые сцены вызывают фризы.
SL Solutions: создан не для OStim, несовместим.
OStrap: не тестировался.
OVenom: не тестировался.
OVirginity (original): Заброшен. Используйте OVirginity Reflowered instead.
OVoice: не используйте. Заменен на Naughty Voices.
VSU for Ostim: не тестировался.
Yamete Kudasai: не тестировался. Полу/полностью функциональный.
Верить/не верить, следовать/не следовать тексту выше — сами.