Getting started
🚀 Приступая к работе
В экосистеме Barfinex каждый компонент отвечает за свою функцию. Начните с развертывания Provider — сервиса рыночных данных и расширенного API для работы с вашим торговым счетом. Следом установите Detector — аналитический модуль стратегий и сигналов. Эти два элемента составляют основу автоматизации торговли в Barfinex и позволяют перейти от наблюдения к действию.
🚀 Быстрый запуск
1. Установка зависимостей
git clone https://github.com/barfinex/app-provider.git cd app-provider
2. Настройка окружения
Создай файл .env на основе шаблона:
cp .env.example .env
Пример переменных:
NODE_ENV=production MONGO_HOST=mongodb://localhost:27017 REDIS_HOST=redis://localhost:6379 BINANCE_API_KEY=your_key BINANCE_API_SECRET=your_secret
3. Запуск через Docker Compose
Файл docker-compose.yml должен находиться в корне проекта
docker compose up -d
4. Проверить, что всё запущено
docker compose ps
Ты должен увидеть что-то вроде:
NAME IMAGE STATUS PORTS barfinex-provider ghcr.io/barfinex/provider:latest Up 0.0.0.0:3001->3001/tcp barfinex-detector ghcr.io/barfinex/detector:latest Up 0.0.0.0:3002->3002/tcp redis redis:7 Up 6379/tcp mongo mongo:6 Up 27017/tcp
- Посмотреть логи
docker compose logs -f provider
Каждый этап сопровождается характерными логами — их можно использовать для быстрой диагностики и DevOps-отчётов.
🪄 Структура запуска
| Этап | Компонент | Назначение |
|---|---|---|
| 1️⃣ | HTTPS Initialization | Настройка TLS и окружения |
| 2️⃣ | Configuration Load | Загрузка и валидация JSON-конфигов |
| 3️⃣ | Dependency Graph | Инициализация NestJS модулей |
| 4️⃣ | Redis Connection | Подключение к шине событий |
| 5️⃣ | Binance API Setup | Авторизация и тест-пинг биржи |
| 6️⃣ | Subscriptions | Регистрация внутренних каналов |
| 7️⃣ | Application Ready | REST + WS серверы активны |
🔍 Подробное объяснение логов
1️⃣ HTTPS включён
✅ HTTPS включён (сертификаты загружены)
Что значит:
Сертификаты успешно найдены и загружены. Сервер доступен по https://localhost:8081.
Ошибки и кейсы:
ENOENT: no such file or directory, open './cert.pem'— отсутствует сертификат
→ проверь путь в.env(SSL_CERT_PATH,SSL_KEY_PATH)- Если нужен самоподписанный:
mkcert localhostи добавь сертификаты в.cert/
2️⃣ Конфигурация загружена
🧩 Config path resolved to: ...config.json 📄 Loading nested config for "provider": config.provider.json ✅ Configuration successfully loaded.
Что значит:
Загружен основной конфиг и его дочерние файлы. Конфигурация прошла парсинг без ошибок.
Ошибки и кейсы:
File not found— файл не найден → создай по шаблонуconfig.example.provider.jsonError parsing JSON— ошибка синтаксиса → проверь запятые, кавычкиProvider key not found— вprovider.connectorsотсутствует ключ
→ добавьkeyиsecretв нужный объект
3️⃣ NestJS Modules Initialized
[Nest] ... LOG [InstanceLoader] ConfigModule dependencies initialized
Что значит:
Модули приложения успешно инициализированы. Ошибка здесь прерывает запуск.
Ошибки и кейсы:
Cannot find module '@barfinex/types'— проверьtsconfig-pathsNest can't resolve dependencies— отсутствует импорт илиforwardRef
4️⃣ Redis подключен
Connecting to Redis on localhost:6379 ✅ Connected to Redis successfully!
Что значит:
Сервис подключился к Redis. Подписки на события активны.
Ошибки и кейсы:
ECONNREFUSED 127.0.0.1:6379— Redis не запущен →docker-compose up redisInvalid TCP port— проверьREDIS_PORTв.env
5️⃣ Binance API инициализация
🧩 BinanceService initializing... 🔑 connectorKey (truncated): oQ9Ulh... ✅ Binance API initialized successfully
Что значит:
Binance-коннектор нашёл ключи и успешно создал API-объект.
Ошибки и кейсы:
| Ошибка | Причина | Решение |
|---|---|---|
Binance connector not found | Нет блока "connectorType": "binance" | Добавь в конфиг |
Binance API credentials missing | Нет key/secret | Добавь в конфиг или .env |
Invalid Binance time response | Binance API недоступен | Проверь ping api.binance.com |
6️⃣ Проверка времени Binance
🕒 Binance time: 2025-10-31 08:53:42, Local: 2025-10-31 08:53:41
Что значит:
Синхронизация времени с Binance в норме (разница ≤ 1 сек).
Ошибки и кейсы:
FetchError— нет интернета / заблокировано → проверь VPN илиHTTPS_PROXYError 418— IP-ban от Binance → смени ключи или IP
7️⃣ WebSocket и REST API готовы
🚀 Provider API is running on: https://localhost:8081/api 📑 Documentation: https://localhost:8081/docs 🔌 WebSocket (Socket.IO) at: https://localhost:8081/ws
Что значит:
Сервер полностью готов: REST API, Swagger, WebSocket.
Ошибки и кейсы:
EADDRINUSE: address already in use :8081— порт занят → освободи портCannot read property 'use'— ошибка middleware → проверьmain.ts
🧠 Best Practices for Monitoring
| Практика | Описание |
|---|---|
| Логировать ключевые стадии | ModuleInit, Config Loaded, Redis Connected, API Ready |
| Включить цветное логирование | Использовать nestjs-pino или winston |
| Добавить health-endpoint | /api/health должен проверять Redis и Binance ping |
| Auto-retry Redis | 3 попытки подключения с backoff |
| Pre-startup validation | Проверка ключей и структуры config перед NestFactory.create() |
🧩 Пример успешного запуска
✅ HTTPS включён (сертификаты загружены) 🧩 Config path resolved to: ...config.json ✅ Configuration successfully loaded. ✅ Connected to Redis successfully! 🔑 connectorKey (truncated): oQ9Ulh... ✅ Binance API initialized successfully 🕒 Binance time: 2025-10-31 08:53:42, Local: 2025-10-31 08:53:41 ✅ BinanceService ModuleInit complete 🚀 Provider API is running on: https://localhost:8081/api 📑 Documentation: https://localhost:8081/docs 🔌 WebSocket (Socket.IO) at: https://localhost:8081/ws
📎 Полезные команды
redis-cli ping curl https://api.binance.com/api/v3/time jq . config/config.provider.json netstat -ano | find "8081" npm run start:provider:dev
🧰 Troubleshooting Summary
| Симптом | Возможная причина | Решение |
|---|---|---|
Provider key not found | Нет ключа в connectors | Добавь ключи Binance |
ECONNREFUSED Redis | Redis не запущен | docker-compose up redis |
API not initialized | BinanceService не успел инициализироваться | Игнорировать при старте |
Invalid JSON | Ошибка синтаксиса | Проверить через jq |
| ✅ Всё зелёное | Сервис готов | 🎯 |
📘 Резюме
- Каждый лог отражает стадию запуска Provider.
- Все ключевые метки (
✅,🧩,🕒,🚀) — признак корректного запуска. - Ошибки Redis, конфигурации или Binance диагностируются мгновенно.
- Рекомендуется сохранять лог старта в CI/CD для контроля успешного деплоя.