Configuration Reference

Services

Running a Private Channels instance means owning the following Docker Compose services:

ContainerRole
private-channel-postgres-primaryWrite node state database (PostgreSQL 16)
private-channel-postgres-replicaRead node state database (streaming replica)
private-channel-postgres-indexerIndexer and operator database
private-channel-write-nodeReceives and executes transactions (port 8900, loopback-only)
private-channel-read-nodeHandles RPC read queries (port 8901, loopback-only)
private-channel-gatewayRoutes requests between write and read nodes; enforces RBAC (port 8899)
private-channel-indexer-solanaWatches Solana for Deposit events via Yellowstone gRPC
private-channel-indexer-private-channelWatches the channel for Burn events via RPC polling
private-channel-operator-solanaMints channel tokens when deposits are confirmed
private-channel-operator-private-channelCalls ReleaseFunds on Mainnet when withdrawals are confirmed
private-channel-authOptional JWT/RBAC service (Docker profile: auth)

Observability containers (prometheus, grafana, cadvisor) are also included.

Gateway

These have sensible defaults for the devnet Docker Compose setup. Override only if running the gateway outside Docker or deploying to production.

Env VarDefaultRequiredDescription
GATEWAY_PORT8899 (devnet)NoListen port
GATEWAY_WRITE_URLhttp://write-node:8900 (devnet env file value; no binary default)YesWrite node URL - sendTransaction routes here
GATEWAY_READ_URLhttp://read-node:8901 (devnet env file value; no binary default)YesRead node URL - all other RPC methods route here
GATEWAY_CORS_ALLOWED_ORIGIN*NoAccess-Control-Allow-Origin header value
JWT_SECRET-NoEnables RBAC; must match auth service JWT_SECRET
AUTH_DATABASE_URL-If JWT_SECRET setAuth DB for wallet ownership checks
AUTH_DATABASE_MAX_CONNECTIONS10NoAuth DB connection pool size
METRICS_PORT9101NoPrometheus metrics port
RUST_LOGinfoNoLog level

GATEWAY_WRITE_URL and GATEWAY_READ_URL use Docker Compose service hostnames (write-node, read-node) when running in Docker. Use localhost equivalents only when running the gateway binary directly outside Docker.

The gateway binary's own built-in default for GATEWAY_PORT is 8898. .env.example and .env.devnet both set it to 8899, which is what the Docker Compose setup actually uses (versions.env holds only toolchain and image version pins, not service ports). The 8898 default only applies if you run the binary directly with no env file.

GATEWAY_CORS_ALLOWED_ORIGIN defaults to *, which allows any origin to call the gateway from a browser. Restrict this to your application's actual origin before any production deployment.

Write Node and Read Node

The full write node and read node configuration reference is in docs/CONFIG.md in the repository.

Auth Service

Env VarRequiredDescription
JWT_SECRETYesHS256 signing secret; must match the gateway's JWT_SECRET
AUTH_PORTNo (default 8903)Listen port
AUTH_DATABASE_URLYesPostgreSQL connection string for the auth database
CORS_ALLOWED_ORIGINNo (default *)Access-Control-Allow-Origin header value for this service (independent of the gateway's own GATEWAY_CORS_ALLOWED_ORIGIN)
AUTH_DATABASE_MAX_CONNECTIONSNo (default 10)Auth DB connection pool size

Service Port Reference

ServiceHost PortBinding
Gateway8899All interfaces
Write node8900Loopback only
Read node8901Loopback only
Streamer8902Internal only (expose, not published to the host); not part of the devnet stack
Auth service8903All interfaces
Operator metrics9102, 9103All interfaces
Grafana37429All interfaces
Prometheus9090All interfaces
cAdvisor8080All interfaces

Security note: Write-node and read-node ports are bound to loopback (127.0.0.1) only. Gateway, Auth service, operator metrics, Grafana, Prometheus, and cAdvisor are all published to every network interface in the devnet Docker Compose setup. Firewall these at the host or network level for anything beyond local development; RBAC only covers the gateway's own JSON-RPC methods, not these other services. The Streamer is the exception: it is an unauthenticated internal feed that Docker never publishes to the host.

Network Requirements

See docs/TECHNICAL_REQUIREMENTS.md in the repository for firewall rules and bandwidth requirements.

Is this page helpful?

Πίνακας Περιεχομένων

Επεξεργασία Σελίδας
© 2026 Ίδρυμα Solana. Με επιφύλαξη παντός δικαιώματος.
Configuration Reference | Solana