Установка на 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 и диск.
Получение дистрибутива¶
-
Скачайте архив с
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). -
Распакуйте архив на целевой VM (рекомендуется
/opt/appsec-registry/):sudo mkdir -p /opt/appsec-registry cd /opt/appsec-registry unzip docker-compose-{VERSION}.zipВ каталоге должны появиться файлы
install.sh,docker-compose.yaml.
Интерактивная установка¶
-
Подключитесь к серверу:
ssh <user>@<server> -
Перейдите в каталог с распакованным дистрибутивом и запустите мастер:
cd /opt/appsec-registry chmod +x install.sh ./install.sh -
Мастер последовательно запросит параметры:
- 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 API8081).
-
После подтверждения скрипт выполняет:
- Проверку окружения (
docker,docker compose,curl,openssl); - Генерацию
.generated/; - Запуск PostgreSQL и SeaweedFS;
- Проверку учётных данных PostgreSQL и создание S3 bucket;
- Запуск Registry, ожидание API;
- Настройку trust store (если задан);
- Регистрацию S3 blob store через REST API;
- Запуск UI.
- Проверку окружения (
-
По завершении выводится сводка с 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.