Сервисы
Запуск экземпляра Private Channels подразумевает наличие следующих сервисов Docker Compose:
| Контейнер | Роль |
|---|---|
private-channel-postgres-primary | База данных состояния узла записи (PostgreSQL 16) |
private-channel-postgres-replica | База данных состояния узла чтения (потоковая реплика) |
private-channel-postgres-indexer | База данных индексера и оператора |
private-channel-write-node | Принимает и выполняет транзакции (порт 8900, только loopback) |
private-channel-read-node | Обрабатывает RPC-запросы на чтение (порт 8901, только loopback) |
private-channel-gateway | Маршрутизирует запросы между узлами записи и чтения; обеспечивает RBAC (порт 8899) |
private-channel-indexer-solana | Отслеживает события Deposit в Solana через Yellowstone gRPC |
private-channel-indexer-private-channel | Отслеживает события Burn в канале через RPC-опрос |
private-channel-operator-solana | Выпускает токены канала при подтверждении депозитов |
private-channel-operator-private-channel | Вызывает ReleaseFunds в Mainnet при подтверждении выводов |
private-channel-auth | Опциональный сервис JWT/RBAC (профиль Docker: auth) |
Контейнеры наблюдаемости (prometheus, grafana, cadvisor) также
включены.
Шлюз
Для настройки devnet в Docker Compose предусмотрены разумные значения по умолчанию. Изменяйте их только при запуске шлюза вне Docker или при развёртывании в производственной среде.
| Переменная окружения | По умолчанию | Обязательна | Описание |
|---|---|---|---|
GATEWAY_PORT | 8899 (devnet) | Нет | Порт прослушивания |
GATEWAY_WRITE_URL | http://write-node:8900 (значение из файла окружения devnet; бинарного значения по умолчанию нет) | Да | URL узла записи — запросы sendTransaction направляются сюда |
GATEWAY_READ_URL | http://read-node:8901 (значение из файла окружения devnet; бинарного значения по умолчанию нет) | Да | URL узла чтения — все остальные RPC-методы направляются сюда |
GATEWAY_CORS_ALLOWED_ORIGIN | * | Нет | Значение заголовка Access-Control-Allow-Origin |
JWT_SECRET | - | Нет | Включает RBAC; должен совпадать с JWT_SECRET сервиса аутентификации |
AUTH_DATABASE_URL | - | Если задан JWT_SECRET | База данных аутентификации для проверки владения кошельком |
AUTH_DATABASE_MAX_CONNECTIONS | 10 | Нет | Размер пула соединений базы данных аутентификации |
METRICS_PORT | 9101 | Нет | Порт метрик Prometheus |
RUST_LOG | info | Нет | Уровень логирования |
GATEWAY_WRITE_URLиGATEWAY_READ_URLиспользуют имена сервисов Docker Compose (write-node,read-node) при запуске в Docker. Используйте эквиваленты сlocalhostтолько при запуске бинарного файла шлюза непосредственно вне Docker.Встроенное значение порта по умолчанию для бинарного файла шлюза —
GATEWAY_PORTравен8898. Файлы.env.exampleи.env.devnetоба устанавливают его в8899, что и используется в настройке Docker Compose (versions.envсодержит только версии инструментов и образов, но не порты сервисов). Значение по умолчанию8898применяется только при запуске бинарного файла напрямую без файла окружения.
GATEWAY_CORS_ALLOWED_ORIGIN по умолчанию равен *, что позволяет любому источнику вызывать
шлюз из браузера. Ограничьте это значение реальным источником вашего приложения
перед любым развёртыванием в производственной среде.
Узел записи и узел чтения
Полный справочник конфигурации узла записи и узла чтения находится в
docs/CONFIG.md
в репозитории.
Сервис аутентификации
| Переменная окружения | Обязательна | Описание |
|---|---|---|
JWT_SECRET | Да | Секрет подписи HS256; должен совпадать с JWT_SECRET шлюза |
AUTH_PORT | Нет (по умолчанию 8903) | Порт прослушивания |
AUTH_DATABASE_URL | Да | Строка подключения PostgreSQL к базе данных аутентификации |
CORS_ALLOWED_ORIGIN | Нет (по умолчанию *) | Значение заголовка Access-Control-Allow-Origin для этого сервиса (независимо от GATEWAY_CORS_ALLOWED_ORIGIN шлюза) |
AUTH_DATABASE_MAX_CONNECTIONS | Нет (по умолчанию 10) | Размер пула соединений базы данных аутентификации |
Справочник портов сервисов
| Сервис | Порт хоста | Привязка |
|---|---|---|
| Шлюз | 8899 | Все интерфейсы |
| Узел записи | 8900 | Только loopback |
| Узел чтения | 8901 | Только loopback |
| Стример | 8902 | Только внутренний (expose, не публикуется на хост); не входит в devnet-стек |
| Сервис аутентификации | 8903 | Все интерфейсы |
| Метрики оператора | 9102, 9103 | Все интерфейсы |
| Grafana | 37429 | Все интерфейсы |
| Prometheus | 9090 | Все интерфейсы |
| cAdvisor | 8080 | Все интерфейсы |
Примечание по безопасности: Порты узлов записи и чтения привязаны только к loopback (
127.0.0.1). Шлюз, сервис аутентификации, метрики оператора, Grafana, Prometheus и cAdvisor публикуются на все сетевые интерфейсы в настройке devnet Docker Compose. Закройте их брандмауэром на уровне хоста или сети для любого использования за пределами локальной разработки; RBAC распространяется только на собственные методы JSON-RPC шлюза, но не на эти сервисы. Исключение составляет Стример: это неаутентифицированный внутренний поток, который Docker никогда не публикует на хост.
Сетевые требования
См.
docs/TECHNICAL_REQUIREMENTS.md
в репозитории для получения информации о правилах брандмауэра и требованиях к пропускной способности.
Is this page helpful?