Files
universe/docker/compose.yml
T
zeekayandHanzo Dev 2044939ffa chore: migrate luxd HTTP routes /ext -> /v1
Drop the Avalanche-heritage /ext prefix; /v1 is the single canonical route
surface (one way, no backward compat). The node's baseURL is the source of
truth; clients, SDKs, CLI, indexer, maker, genesis, netrunner, and the
k8s/compose/gateway/explorer configs are updated to match.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-26 15:46:02 -07:00

234 lines
5.5 KiB
YAML

networks:
lux-network:
driver: bridge
volumes:
postgres-data:
ipfs-data:
node1-data:
node2-data:
node3-data:
node4-data:
node5-data:
services:
# Shared PostgreSQL
postgres:
image: ghcr.io/hanzoai/sql:latest
container_name: lux-postgres
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- postgres-data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
ports:
- "5432:5432"
networks:
- lux-network
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
interval: 10s
# Unified IPFS
ipfs:
image: ipfs/go-ipfs:latest
container_name: lux-ipfs
restart: always
environment:
IPFS_PROFILE: server
volumes:
- ipfs-data:/data/ipfs
ports:
- "5001:5001"
- "8080:8080"
- "4001:4001"
networks:
- lux-network
command: daemon --migrate=true --enable-pubsub-experiment
# 5 Lux validator nodes
lux-node-1:
build:
context: ..
dockerfile: docker/Dockerfile.node
container_name: lux-node-1
restart: always
volumes:
- node1-data:/app/data
- ../hanzo-genesis.json:/app/genesis.json:ro
ports:
- "9650:9650"
- "9651:9651"
networks:
- lux-network
command: >
--network-id=96369
--http-host=0.0.0.0
--http-port=9650
--staking-port=9651
--staking-enabled=false
--sybil-protection-enabled=false
--snow-sample-size=1
--snow-quorum-size=1
--index-enabled=true
--api-admin-enabled=true
--data-dir=/app/data
lux-node-2:
extends: lux-node-1
container_name: lux-node-2
volumes:
- node2-data:/app/data
- ../hanzo-genesis.json:/app/genesis.json:ro
ports:
- "9660:9650"
- "9661:9651"
command: >
--network-id=96369
--http-host=0.0.0.0
--http-port=9650
--staking-port=9651
--staking-enabled=false
--sybil-protection-enabled=false
--snow-sample-size=1
--snow-quorum-size=1
--bootstrap-ips=lux-node-1:9651
--data-dir=/app/data
lux-node-3:
extends: lux-node-1
container_name: lux-node-3
volumes:
- node3-data:/app/data
- ../hanzo-genesis.json:/app/genesis.json:ro
ports:
- "9670:9650"
- "9671:9651"
command: >
--network-id=96369
--http-host=0.0.0.0
--http-port=9650
--staking-port=9651
--staking-enabled=false
--sybil-protection-enabled=false
--snow-sample-size=1
--snow-quorum-size=1
--bootstrap-ips=lux-node-1:9651
--data-dir=/app/data
lux-node-4:
extends: lux-node-1
container_name: lux-node-4
volumes:
- node4-data:/app/data
- ../hanzo-genesis.json:/app/genesis.json:ro
ports:
- "9680:9650"
- "9681:9651"
command: >
--network-id=96369
--http-host=0.0.0.0
--http-port=9650
--staking-port=9651
--staking-enabled=false
--sybil-protection-enabled=false
--snow-sample-size=1
--snow-quorum-size=1
--bootstrap-ips=lux-node-1:9651
--data-dir=/app/data
lux-node-5:
extends: lux-node-1
container_name: lux-node-5
volumes:
- node5-data:/app/data
- ../hanzo-genesis.json:/app/genesis.json:ro
ports:
- "9690:9650"
- "9691:9651"
command: >
--network-id=96369
--http-host=0.0.0.0
--http-port=9650
--staking-port=9651
--staking-enabled=false
--sybil-protection-enabled=false
--snow-sample-size=1
--snow-quorum-size=1
--bootstrap-ips=lux-node-1:9651
--data-dir=/app/data
# Block Explorers
explorer-base:
image: ghcr.io/luxfi/explorer:latest
restart: always
environment:
ETHEREUM_JSONRPC_VARIANT: geth
ETHEREUM_JSONRPC_HTTP_URL: http://lux-node-1:9650/v1/bc/C/rpc
ETHEREUM_JSONRPC_WS_URL: ws://lux-node-1:9650/v1/bc/C/ws
POOL_SIZE: 50
ECTO_USE_SSL: "false"
HEART_BEAT_TIMEOUT: 30
BLOCKSCOUT_HOST: localhost
BLOCKSCOUT_PROTOCOL: http
DISABLE_EXCHANGE_RATES: "false"
CHECKSUM_FUNCTION: eth
networks:
- lux-network
depends_on:
- postgres
- lux-node-1
lux-explorer:
extends: explorer-base
container_name: lux-explorer
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/explorer_lux
NETWORK: LUX
SUBNETWORK: Mainnet
COIN: LUX
COIN_NAME: LUX
CHAIN_ID: 96369
ports:
- "4000:4000"
hanzo-explorer:
extends: explorer-base
container_name: hanzo-explorer
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/explorer_hanzo
NETWORK: HANZO
SUBNETWORK: AI Network
COIN: AI
COIN_NAME: AI Token
CHAIN_ID: 36963
ports:
- "4003:4000"
zoo-explorer:
extends: explorer-base
container_name: zoo-explorer
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/explorer_zoo
NETWORK: ZOO
SUBNETWORK: Zoo Network
COIN: ZOO
COIN_NAME: ZOO Token
CHAIN_ID: 200200
ports:
- "4001:4000"
spc-explorer:
extends: explorer-base
container_name: spc-explorer
environment:
DATABASE_URL: postgresql://postgres:postgres@postgres:5432/explorer_spc
NETWORK: SPC
SUBNETWORK: Sparkle Pony Club
COIN: SPC
COIN_NAME: SPC Token
CHAIN_ID: 36911
ports:
- "4002:4000"