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

Deployment

Запуск Auth Center: зависимости, порядок, команды.

Предусловия

Компонент Версия Зачем
Dart SDK ^3.8.0 runtime и компилятор сервера
Serverpod CLI 3.4.8 генерация клиента и миграций
PostgreSQL 15+ основная БД (public.* схема)
Redis 7+ stream.notifications.jobs push-уведомления
Garage S3 хранение KYC-документов
Payment Manager обработка платежей, создание кошельков
kyc-service OCR и верификация KYC-документов

Конфиг (passwords.yaml) — обязательные секреты

Три ключа выбрасывают StateError при старте, если не заданы:

Ключ Зачем Где задать
pmHmacSecret HMAC-подпись запросов к PM от auth-center passwords.yamldevelopment.pmHmacSecret
pmMerchantHmacSecret HMAC-подпись для NFC pull-charge от auth-center-merchant passwords.yamldevelopment.pmMerchantHmacSecret
invoiceQrSecret HMAC-подпись QR-кодов инвойсов passwords.yamldevelopment.invoiceQrSecret

Остальные ключи (nfcWritePasswordKey, notificationsRedisUrl) не вызывают StateError, но при отсутствии отключают соответствующие функции (NFC-шифрование, push-уведомления).

Файл passwords.yaml не коммитится (gitignored). Для production — переменные среды SERVERPOD_PASSWORD_<key> (высший приоритет).

Порядок инициализации (server.dart)

При запуске pod.start() инициализация происходит строго последовательно:

  1. RegistrationService.initialize() — загружает REGISTRATION_* env-переменные с дефолтами
  2. pod.initializeAuthServices() — JWT (30 мин TTL), Email IDP
  3. pod.webServer.addRoute(...) — nginx auth_request, JWKS, AppConfig маршруты
  4. NotificationsRedisClient.initialize(notificationsRedisUrl) — подключение к Redis (опционально)
  5. PspHmacClient.initialize(...) — HMAC-клиент auth-center → PM (обязателен)
  6. PspHmacClient.initializeMerchant(...) — HMAC-клиент auth-center-merchant → PM (обязателен)
  7. NfcConfig.initialize(nfcGlobalEnabled) — глобальный kill-switch NFC
  8. NfcCryptoService.initialize(nfcWritePasswordKey) — шифрование writePassword NFC-меток
  9. InvoiceQrSigner.initialize(invoiceQrSecret) — HMAC-подпись QR (обязателен)
  10. pod.registerFutureCall(...) × 5 — регистрация фоновых задач очистки
  11. pod.start() — сервер принимает соединения

Команды

# Зависимости
cd onewallet_base_server && dart pub get

# Генерация кода (после изменения моделей или endpoints)
cd onewallet_base_server && serverpod generate

# Применить миграции
cd onewallet_base_server && dart bin/main.dart --apply-migrations

# Запуск
cd onewallet_base_server && dart bin/main.dart

# Тесты
cd onewallet_base_server && dart test

Порты (config/development.yaml)

Порт Назначение
8080 API Server (Serverpod RPC — основной клиентский трафик)
8081 Insights Server (мониторинг, метрики Serverpod)
8082 Web Server (nginx auth_request, JWKS, AppConfig, Flutter web)
5432 PostgreSQL (host: 10.10.10.19)
6379 Redis (host: 10.10.10.19)