Сервіси
Запуск екземпляра 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).
Шлюз
Ці параметри мають розумні значення за замовчуванням для налаштування Docker Compose у devnet. Змінюйте їх лише при запуску шлюзу поза Docker або розгортанні у production.
| Змінна середовища | За замовчуванням | Обов'язково | Опис |
|---|---|---|---|
GATEWAY_PORT | 8899 (devnet) | Ні | Порт прослуховування |
GATEWAY_WRITE_URL | http://write-node:8900 (значення з env-файлу devnet; немає вбудованого значення за замовчуванням у бінарнику) | Так | URL вузла запису — запити sendTransaction надходять сюди |
GATEWAY_READ_URL | http://read-node:8901 (значення з env-файлу 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за замовчуванням застосовується лише якщо ви запускаєте бінарник безпосередньо без env-файлу.
GATEWAY_CORS_ALLOWED_ORIGIN за замовчуванням має значення *, яке дозволяє будь-якому джерелу викликати
шлюз із браузера. Обмежте це значення фактичним джерелом вашого застосунку
перед будь-яким розгортанням у production.
Вузол запису та вузол читання
Повний довідник конфігурації вузла запису та вузла читання знаходиться у
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 — усі публікуються на кожен мережевий інтерфейс у налаштуванні Docker Compose для devnet. Захистіть їх брандмауером на рівні хоста або мережі для будь-якого використання поза локальною розробкою; RBAC покриває лише власні JSON-RPC-методи шлюзу, але не ці інші сервіси. Стример є винятком: це неавтентифікований внутрішній потік, який Docker ніколи не публікує на хост.
Мережеві вимоги
Дивіться
docs/TECHNICAL_REQUIREMENTS.md
у репозиторії для отримання інформації про правила брандмауера та вимоги до пропускної здатності.
Is this page helpful?