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.yaml → development.pmHmacSecret |
pmMerchantHmacSecret |
HMAC-подпись для NFC pull-charge от auth-center-merchant |
passwords.yaml → development.pmMerchantHmacSecret |
invoiceQrSecret |
HMAC-подпись QR-кодов инвойсов | passwords.yaml → development.invoiceQrSecret |
Остальные ключи (nfcWritePasswordKey, notificationsRedisUrl) не вызывают StateError, но при отсутствии отключают соответствующие функции (NFC-шифрование, push-уведомления).
Файл passwords.yaml не коммитится (gitignored). Для production — переменные среды SERVERPOD_PASSWORD_<key> (высший приоритет).
Порядок инициализации (server.dart)¶
При запуске pod.start() инициализация происходит строго последовательно:
RegistrationService.initialize()— загружаетREGISTRATION_*env-переменные с дефолтамиpod.initializeAuthServices()— JWT (30 мин TTL), Email IDPpod.webServer.addRoute(...)— nginx auth_request, JWKS, AppConfig маршрутыNotificationsRedisClient.initialize(notificationsRedisUrl)— подключение к Redis (опционально)PspHmacClient.initialize(...)— HMAC-клиентauth-center→ PM (обязателен)PspHmacClient.initializeMerchant(...)— HMAC-клиентauth-center-merchant→ PM (обязателен)NfcConfig.initialize(nfcGlobalEnabled)— глобальный kill-switch NFCNfcCryptoService.initialize(nfcWritePasswordKey)— шифрование writePassword NFC-метокInvoiceQrSigner.initialize(invoiceQrSecret)— HMAC-подпись QR (обязателен)pod.registerFutureCall(...)× 5 — регистрация фоновых задач очистки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) |