Установка производится на Ubuntu 16.04, внешние запросы принимает nginx, nexus находится внутри докер контейнера.
Установка nginx
Обновим систему, установим пакет, и добавим nginx в автозагрузку
редактируем конфигурацию
создаем ssl.conf
создадим каталог cert и положим туда сертификаты
редактируем proxy_params
перезапустим конфигурацию и сервис
Установка docker
непосредственно установка
добавим текущего пользователя в группу docker
установка python-pip
Установка Docker Compose
создание docker compose файла для nexus
запуск контейнера
в частности пароль учетной записи admin находится в файле /var/lib/docker/volumes/nexus_data/_data/admin.password
который необходимо сменить при первом входе, а также будет предложено включить анонимный доступ (не включаем).
посмотреть логи
посмотреть запущенные контейнеры
Настройка проксирования на удаленный nexus
Создать репозиторий, например docker (proxy)
В настройках этого репозитория указать:
Repository Connectors - HTTP: 5000
Docker Registry API Support - Enable Docker V1 API - поставить галку
Remote storage - это ссылка на удаленный nexus, например http://nexus.company.com:5000
HTTP - Authentification - поставить галку и внести логин и пароль удаленного nexus
Далее создать роли и пользователей для подключения к этому прокси nexus
Установка nginx
Обновим систему, установим пакет, и добавим nginx в автозагрузку
sudo apt update sudo apt install nginx -y sudo systemctl enable nginx
редактируем конфигурацию
vi /etc/nginx/nginx.conf error_log /var/log/nginx/error.log warn; events { worker_connections 1024; } http { include mime.types; server_names_hash_bucket_size 64; large_client_header_buffers 4 64k; log_format mycombined '$remote_addr - $remote_user [$time_local] $scheme $server_name "$request" ' '$status $body_bytes_sent'; access_log /var/log/nginx/nginx-access.log mycombined; server { access_log off; listen 80 default_server; listen [::]:80 default_server; return 301 https://$host$request_uri; } server { server_name nexus.domain.ru; include ssl.conf; location /v1/ { include proxy_params; access_log /var/log/nginx/registry-access.log; proxy_pass http://127.0.0.1:5000; } location /v2/ { include proxy_params; access_log /var/log/nginx/registry-access.log; proxy_pass http://127.0.0.1:5000; } location / { include proxy_params; if ($http_user_agent ~ docker ) { access_log /var/log/nginx/registry-access.log; proxy_pass http://127.0.0.1:5000; } proxy_pass http://127.0.0.1:8081; } } }
создаем ssl.conf
vi ssl.conf listen 443 ssl http2; listen [::]:443 ssl http2; keepalive_timeout 70; ssl_certificate /etc/nginx/cert/nexus.domain.ru.crt; ssl_certificate_key /etc/nginx/cert/nexus.domain.ru.key; ssl_dhparam /etc/nginx/cert/dhparam.pem; ssl_session_cache shared:SSL:10m; ssl_session_timeout 1d; ssl_session_tickets off; ssl_stapling on; ssl_stapling_verify on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!kEDH"; ssl_prefer_server_ciphers on; add_header Strict-Transport-Security max-age=15768000; resolver 8.8.8.8;
создадим каталог cert и положим туда сертификаты
mkdir -p /etc/nginx/cert chmod 700 /etc/nginx/cert cp ~/domain.ru.key /etc/nginx/cert/nexus.domain.ru.key cp ~/domain.ru.crt /etc/nginx/cert/nexus.domain.ru.crt
редактируем proxy_params
vi proxy_params proxy_redirect off; proxy_set_header Host $host; proxy_set_header Proxy-host $proxy_host; proxy_set_header X-Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffering off; proxy_connect_timeout 3600; proxy_send_timeout 3600; proxy_read_timeout 14400; proxy_buffer_size 8k; proxy_buffers 8 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; client_max_body_size 20480m; client_body_buffer_size 64k;
перезапустим конфигурацию и сервис
systemctl reload nginx.service systemctl restart nginx.service
Установка docker
непосредственно установка
wget -qO- https://get.docker.com/ | sh
добавим текущего пользователя в группу docker
sudo usermod -aG docker $(whoami)
установка python-pip
sudo apt-get -y install python-pip
Установка Docker Compose
sudo pip install docker-compose
создание docker compose файла для nexus
vi docker-compose.yml version: "2" services: nexus: image: sonatype/nexus3 container_name: nexus restart: always ports: - "8081:8081" - "5000:5000" volumes: - data:/nexus-data volumes: data:
запуск контейнера
docker-compose up -dданные контейнера nexus находятся в каталоге /var/lib/docker/volumes/nexus_data/_data/
в частности пароль учетной записи admin находится в файле /var/lib/docker/volumes/nexus_data/_data/admin.password
который необходимо сменить при первом входе, а также будет предложено включить анонимный доступ (не включаем).
посмотреть логи
docker-compose logs -f --tail=100
посмотреть запущенные контейнеры
docker-compose psНастройка firewall ufw
sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 8081 sudo ufw allow 5000 sudo ufw default allow outgoing sudo ufw enable
Настройка проксирования на удаленный nexus
Создать репозиторий, например docker (proxy)
В настройках этого репозитория указать:
Repository Connectors - HTTP: 5000
Docker Registry API Support - Enable Docker V1 API - поставить галку
Remote storage - это ссылка на удаленный nexus, например http://nexus.company.com:5000
HTTP - Authentification - поставить галку и внести логин и пароль удаленного nexus
Далее создать роли и пользователей для подключения к этому прокси nexus
Комментариев нет:
Отправить комментарий