Перейти к содержанию

Запуск

Запуск с помощью Docker Compose

  1. Зайдите на сервер.

    ssh <your-user>@<your-server>
    
  2. Создайте директорию для установки AppSec.Registry (рекомендуется — /opt/appsec-registry/).

    sudo mkdir /opt/appsec-registry
    
  3. Перейдите в директорию AppSec.Registry.

    cd /opt/appsec-registry
    
  4. Создайте файл docker-compose.yaml.

    sudo touch docker-compose.yaml
    
  5. Наполните файл docker-compose.yaml содержанием:

    services:
      registry-core:
        image: registry.appsec.global/appsec-registry/core:latest
        container_name: registry-core
        volumes:
          - ./app:/app/appsecregistry            
        ports:
          - 8081:8081
        restart: always
        networks:
          - internal-net
    
      registry-ui:
        image: registry.appsec.global/appsec-registry/ui:latest
        container_name: registry-ui
        volumes:
          - ./nginx/logs:/var/log/nginx
          - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
          - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
          # - Если у вас будет использоваться ssl раскомментируйте строку
        # - ./nginx/ssl:/etc/ssl/certs/ssl-cert:ro
        ports:
          - 443:443/tcp
        networks:
          - internal-net
        restart: always
    
    networks:
      internal-net:
        driver: "bridge"
        ipam:
          driver: default
          config:
            - subnet: 172.24.0.0/24
    
  6. Создайте файл директории и файлы для работы registry-ui и registry-core:

    sudo mkdir app && \
    sudo mkdir nginx && \ 
    sudo mkdir -p nginx/logs nginx/ssl && \
    sudo touch nginx/nginx.conf && \ 
    sudo touch nginx/default.conf
    
  7. Наполните файл nginx/nginx.conf содержанием:

    worker_processes  auto;
    error_log  /var/log/nginx/error.log notice;
    pid        /tmp/nginx.pid;
    events {
        worker_connections  1024;
    }
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for" $upstream_response_time';
        access_log  /var/log/nginx/access.log  main;
        sendfile        on;
        keepalive_timeout  65;
        include /etc/nginx/conf.d/*.conf;
    }
    
  8. Наполните файл nginx/default.conf содержанием:

    server {
      listen                      443;
    # - Если у вас будет использоваться ssl раскомментируйте строки и закомментируйте "listen 443;"
    #  listen                      443 ssl;
    #  ssl_certificate /etc/ssl/certs/ssl-cert/fullchain1.pem;
    #  ssl_certificate_key /etc/ssl/certs/ssl-cert/privkey1.pem;
      server_name                 localhost;
      ignore_invalid_headers      off;
      proxy_connect_timeout       2400s;
      proxy_send_timeout          2400s;
      proxy_read_timeout          2400s;
      send_timeout                2400s;
      client_max_body_size        10240m;
      proxy_buffer_size           128k;
      proxy_buffers               4 256k;
      proxy_busy_buffers_size     256k;
      location / {
          proxy_connect_timeout       2400s;
          proxy_send_timeout          2400s;
          proxy_read_timeout          2400s;
          send_timeout                2400s;
          client_max_body_size        10240m;
          proxy_buffer_size           128k;
          proxy_buffers               4 256k;
          proxy_busy_buffers_size     256k;
          root                        /usr/share/nginx/html;
          index                       index.html;
          try_files                   $uri $uri/ /index.html?$args;
          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;
          add_header                  X-Frame-Options SAMEORIGIN;
      }
      location /api {
          proxy_connect_timeout       2400s;
          proxy_send_timeout          2400s;
          proxy_read_timeout          2400s;
          send_timeout                2400s;
          client_max_body_size        10240m;
          proxy_buffer_size           128k;
          proxy_buffers               4 256k;
          proxy_busy_buffers_size     256k;
          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            Upgrade $http_upgrade;
          proxy_set_header            Connection "upgrade";
          add_header                  X-Frame-Options SAMEORIGIN;
          proxy_pass                  http://registry-core:8081/service;
      }
      location /repository {
          proxy_connect_timeout       2400s;
          proxy_send_timeout          2400s;
          proxy_read_timeout          2400s;
          send_timeout                2400s;
          client_max_body_size        10240m;
          proxy_buffer_size           128k;
          proxy_buffers               4 256k;
          proxy_busy_buffers_size     256k;
          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            Upgrade $http_upgrade;
          proxy_set_header            Connection "upgrade";
          add_header                  X-Frame-Options SAMEORIGIN;
          proxy_pass                  http://registry-core:8081/repository;
      }
    }
    
  9. Если у вас есть сертификаты, положите два файла, содержащие сертификат и ключ, по этому пути:

    nginx/ssl/fullchain1.pem
    nginx/ssl/privkey1.pem
    
  10. Создайте файл .env и наполните его содержанием:

    # Выключает анонимный доступ
    ANONYMOUSCONFIGURATION_ENABLE=disable
    # Задаёт инициализирующий пароль
    NEXUS_SECURITY_INITIAL_PASSWORD=admin1234
    # Убирает генерацию пароля
    NEXUS_SECURITY_RANDOMPASSWORD=false
    # Тут вы можете выдать больше ресурсов процессу
    INSTALL4J_ADD_VM_PARAMS=-Xms16G -Xmx16G -XX:MaxDirectMemorySize=10000m -Djava.util.prefs.userRoot=/nexus-data/javapref
    
  11. Выдайте правильные права на директории и файлы:

    sudo chown -R 200:200 app
    sudo chown -R 101:101 nginx
    
  12. Загрузите образы в локальный docker-репозиторий:

    a. Авторизуйтесь в репозитории registry.appsec.global (<user-name> в команде ниже — имя пользователя).

    sudo docker login registry.appsec.global -u <user-name>
    

    b. Скачайте образы.

    sudo docker-compose pull
    
  13. Запустите контейнеры AppSec.Registry.

    sudo docker-compose up -d
    
  14. Перейдите в пользовательский интерфейс AppSec.Registry по адресу хоста (например, http://<AppSec.Registry_IP_address>:443/).

    Логин пользователя системы по умолчанию: admin, пароль: admin1234.