Для Source команды выпуска выполняются на VPS. Для Archive и Registry — на вашем компьютере с Docker. Команды bash ./deploy/control … всегда запускаются из корня сгенерированного проекта, где находятся backend/, admin/ и Makefile.
1. Создайте профиль в Generator UI
В Deployment включите Docker и Production deployment. Для ручного запуска выберите CI provider → None. В Deployment environments:
- В New profile name введите
production. - В New profile preset выберите Single server для одного VPS или Separate frontend / backend для двух.
- Нажмите Add profile и заполните появившиеся поля.
| Поле UI | Что вводить |
|---|---|
| Runtime directory | Подготовленный каталог данных на VPS, например /srv/admingen/example_project/production |
| Admin domain | admin.example.com, без https:// |
| API domain | api.example.com, без https:// |
| TLS contact email | Ваш действующий email для сертификатов |
| Image delivery | Source, Archive или Registry по выбранной инструкции |
| Backend SSH target | Для Archive/Registry: deploy@203.0.113.10, с IP вашего VPS |
| Frontend SSH target | Для двух серверов: SSH-адрес frontend-VPS; для одного оставьте пустым |
| Backup destination | None, Local directory или S3-compatible storage |
Для Source адрес SSH не нужен: команда работает на самом сервере. Каталог Runtime directory относится к VPS даже тогда, когда вы заполняете форму на Mac. Подготовьте этот каталог по инструкции сервера.
В Advanced проверьте Allowed HTTPS origins: здесь должен быть адрес админки с https://. Остальные значения по умолчанию меняйте только если они нужны вашей сети. Для Registry дополнительно заполните три адреса репозиториев образов по инструкции Registry.
Для простого первого запуска без внешних сервисов используйте Local files в настройке Image storage проекта и None в Backup destination профиля. При этом автоматических резервных копий не будет. S3 и registry не требуются для Source/Archive.
Нажмите Save deployment settings, затем Generate. Созданные deploy/generated/environments/production.json и deploy/custom/environments/production.json уже готовы к использованию. Копировать пример JSON не нужно. Если раньше создавали ручной deploy/environments/production.json, перенесите его настройки в UI: иначе он продолжит иметь приоритет.
2. Только для Archive/Registry: подготовьте компьютер
Нужны Git, Bash, jq, OpenSSH, tar, работающий Docker с Compose v2 и Buildx. На Mac установите и запустите Docker Desktop; jq можно установить через Homebrew: brew install jq.
git --version
jq --version
docker version
docker compose version
docker buildx version
Docker client и daemon должны поддерживать API 1.49 или новее, а docker image inspect — параметр --platform. Образы собираются для linux/amd64; на Apple Silicon должна работать эмуляция этой архитектуры.
3. Только для Archive/Registry: настройте SSH один раз
На своём компьютере создайте отдельный ключ для выпуска:
mkdir -p "$HOME/.config/admingen/production"
chmod 700 "$HOME/.config/admingen/production"
export DEPLOY_SSH_KEY_FILE="$HOME/.config/admingen/production/id_ed25519"
export DEPLOY_KNOWN_HOSTS_FILE="$HOME/.config/admingen/production/known_hosts"
ssh-keygen -t ed25519 -f "$DEPLOY_SSH_KEY_FILE" -C admingen-production
Если ключ по этому пути уже есть, не создавайте его повторно. На вопрос о passphrase нажмите Enter: control подключается без интерактивного ввода. Покажите публичную часть:
cat "$DEPLOY_SSH_KEY_FILE.pub"
Скопируйте строку ssh-ed25519 …. На VPS под root откройте:
nano /home/deploy/.ssh/authorized_keys
Добавьте публичную строку, сохраните файл и выполните на VPS:
chown deploy:deploy /home/deploy/.ssh/authorized_keys
chmod 600 /home/deploy/.ssh/authorized_keys
Снова на своём компьютере подключитесь к VPS, заменив IP:
ssh -i "$DEPLOY_SSH_KEY_FILE" -o IdentitiesOnly=yes \
-o "UserKnownHostsFile=$DEPLOY_KNOWN_HOSTS_FILE" \
deploy@203.0.113.10 'docker info >/dev/null && docker compose version'
chmod 600 "$DEPLOY_SSH_KEY_FILE" "$DEPLOY_KNOWN_HOSTS_FILE"
При первом подключении SSH попросит подтвердить новый сервер. После подтверждения его ключ сохранится в known_hosts. Команда должна вывести версию Compose без запроса пароля пользователя. Для двух VPS повторите добавление публичного ключа и первое подключение для frontend-сервера.
В каждом новом терминале перед выпуском указывайте пути к уже существующим файлам:
export DEPLOY_SSH_KEY_FILE="$HOME/.config/admingen/production/id_ed25519"
export DEPLOY_KNOWN_HOSTS_FILE="$HOME/.config/admingen/production/known_hosts"
Ключ и known_hosts заново создавать не нужно. Продолжайте Source, Archive или Registry.