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

Установка на VM (Docker Compose)

Обзор

Развёртывание выполняется скриптом install.sh из дистрибутива Docker Compose. Скрипт поднимает четыре контейнера:

Сервис Назначение
postgres База данных PostgreSQL 15
seaweedfs In-cluster S3-хранилище артефактов
registry AppSec.Registry (core)
ui Веб-интерфейс (nginx reverse proxy)

Конфигурация и секреты генерируются в каталог .generated/ (.env, лицензия, nginx, s3-config). Данные приложения хранятся в Docker volumes: postgres_data, seaweedfs_data, registry_data.

Предварительные требования

См. системные требования и подготовку инфраструктуры: Docker Engine, плагин Docker Compose, curl, openssl, достаточные CPU/RAM и диск.

Получение дистрибутива

  1. Скачайте архив с registry.appsec.global:

    https://registry.appsec.global/repository/appsec.registry-maven-release/docker-compose/docker-compose/{VERSION}/docker-compose-{VERSION}.zip
    

    Замените {VERSION} на номер версии релиза (например, 1.0.0).

  2. Распакуйте архив на целевой VM (рекомендуется /opt/appsec-registry/):

    sudo mkdir -p /opt/appsec-registry
    cd /opt/appsec-registry
    unzip docker-compose-{VERSION}.zip
    

    В каталоге должны появиться файлы install.sh, docker-compose.yaml.

Интерактивная установка

  1. Подключитесь к серверу:

    ssh <user>@<server>
    
  2. Перейдите в каталог с распакованным дистрибутивом и запустите мастер:

    cd /opt/appsec-registry
    chmod +x install.sh
    ./install.sh
    
  3. Мастер последовательно запросит параметры:

    • PostgreSQL — имя БД, пользователь, пароль (Enter = автогенерация пароля), порт;
    • Лицензия — файл .lic или base64-строка (base64 -w0 registry-repo-license.lic > license.b64);
    • Registry — пароль admin, образ core (repository:tag);
    • SeaweedFS / S3 — access key, secret key, bucket, имя blob store, prefix, region;
    • Trust store (опционально) — CA-сертификаты в base64 PEM;
    • UI — образ UI, порты на хосте (по умолчанию UI 8080, Registry API 8081).
  4. После подтверждения скрипт выполняет:

    1. Проверку окружения (docker, docker compose, curl, openssl);
    2. Генерацию .generated/;
    3. Запуск PostgreSQL и SeaweedFS;
    4. Проверку учётных данных PostgreSQL и создание S3 bucket;
    5. Запуск Registry, ожидание API;
    6. Настройку trust store (если задан);
    7. Регистрацию S3 blob store через REST API;
    8. Запуск UI.
  5. По завершении выводится сводка с URL и учётными данными. Те же данные сохраняются в .generated/credentials-summary.txt (права 600). Сохраните файл в защищённом месте.

Неинтерактивная установка

Для CI/CD или автоматизации:

./install.sh \
  --non-interactive \
  --license-file /path/to/registry-repo-license.lic \
  --trust-cert-b64-file my-ca:/path/to/ca.b64

Поддерживаемые флаги:

Флаг Описание
--license-file PATH Файл лицензии .lic или base64 (.b64)
--license-b64-file PATH То же, явно как base64-файл
--license-b64 STRING Base64 лицензии одной строкой
--trust-cert-b64-file ALIAS:PATH CA для trust store (можно повторять)
--non-interactive Без интерактивных вопросов; пароли генерируются, если не заданы
-h, --help Справка

В неинтерактивном режиме обязателен один из флагов лицензии.

Подготовка base64:

base64 -w0 registry-repo-license.lic > license.b64
base64 -w0 ca.pem > ca.b64

Доступ после установки

Компонент URL по умолчанию
UI http://<host>:8080
Registry API http://<host>:8081

Логин admin и пароль — из сводки установки или .generated/credentials-summary.txt.

Типовые проблемы

PostgreSQL: volume с другими учётными данными

PostgreSQL инициализирует volume один раз. При смене POSTGRES_USER / POSTGRES_PASSWORD без удаления volume подключение не удастся. Решение:

docker compose -f docker-compose.yaml --env-file .generated/.env down -v

Затем повторите ./install.sh (данные будут удалены).

Пароли и идентификаторы — только латиница

Скрипт отклоняет кириллицу и не-ASCII в паролях, именах БД, bucket и образах.

Ошибка декодирования лицензии

Убедитесь, что файл .lic не пуст и base64 — одной строкой без переносов (base64 -w0).

Registry долго стартует

Первый запуск с PostgreSQL может занять до 30 минут (миграции). Healthcheck настроен с start_period: 1800s.