Создание сервиса

Команда create_service создает сервисного эктора в таблице actor, генерирует ключевую пару и возвращает значения, которые затем используются в конфигурации сервиса.

Команда

uv run manage.py create_service

Это первая прикладная команда после миграций. В standalone-режиме она еще и добавляет системные группы DEFAULT, ADMIN и BAN.

По умолчанию: Команда запускается в базовом режиме создания сервисного эктора и запрашивает недостающие значения при запуске.

Параметры

Параметр Описание
--service_name, -sn Человекочитаемое имя сервиса. Если не передано, команда запросит его интерактивно.
--service_domain, -sd Внешний домен сервиса, который будет записан в uinfo.service_domain.
--description, -dn Описание сервиса, которое сохраняется вместе с сервисным эктором.
--deploy, -d Переключает формат вывода на удобный для деплоя: команда печатает только значения переменных окружения.

Дополнительные примеры запуска

Неинтерактивный запуск для деплоя

uv run manage.py create_service \
  --service_name "service54" \
  --service_domain "https://service54.local" \
  --description "Main Template54 service" \
  --deploy

С флагом --deploy команда печатает итоговые переменные без поясняющего текста, что удобно для подстановки в окружение.

Как работает

  1. Проверяет, что таблица actor уже существует, иначе предлагает сначала выполнить migrate.
  2. Проверяет отсутствие системных групп BAN, ADMIN и DEFAULT, чтобы не создать дубли.
  3. Генерирует приватный и публичный ключ сервиса, затем формирует запись сервисного эктора.
  4. Если AUTH_STANDALONE=True, добавляет в пакет вставки еще и три системные группы, после чего сохраняет все записи через jsonb_populate_recordset.

Что важно учесть

  • Перед запуском миграции уже должны быть применены, иначе таблицы actor не будет.
  • Если одна из системных групп уже существует, команда завершится без изменений.
  • Итоговые SERVICE_UUID, SERVICE_PUBLIC_KEY, SERVICE_PRIVATE_KEY, SERVICE_DOMAIN и SERVICE_NAME нужно затем сохранить в настройках сервиса.
  • В режиме AUTH_STANDALONE=False команда создает только сервисного эктора без локальных групп.