Thank you for reading this post, don't forget to subscribe!
Установка производится на Ubuntu 16.04, внешние запросы принимает nginx, nexus находится внутри докер контейнера.
Установка nginx
Обновим систему, установим пакет, и добавим nginx в автозагрузку
sudo apt update
sudo apt install nginx -y
sudo systemctl enable nginx
редактируем конфигурацию
vi /etc/nginx/nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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