Files
universe/compose.devnet.yml
T
zeekayandHanzo Dev 7417193940 A chain answers under one segment, and the fleet asks for it there
luxd moved chain APIs from /v1/bc/<alias> to /v1/chain/<alias> and deleted the
old prefix, and health moved onto typed ops at /v1/health/ops/*. Both landed in
node 1.36.181. Nothing here could move before that image existed, and the image
cannot roll out while the manifests still ask for addresses it no longer serves,
so the pin and the paths move in one commit.

What moved:
  image    1.36.171 -> 1.36.181, digest with it, on devnet/testnet/mainnet
  internal exchange-api, lux-hb2, rpc-tip-gate, the luxd startup script
  probes   /v1/health/liveness -> /v1/health/ops/liveness (bare /v1/health,
           which the local compose healthcheck used, no longer routes at all)
  public   the devnet and testnet gateway routes

Comments that RECORD an observation keep their original spelling: a note saying
/v1/bc/zoo/rpc returned 404 on a given date is a fact about that date, and
rewriting it would make the record false. Only live addresses moved.

1.36.181 also carries chains v1.7.38, so the deployed node has the zkvm
content-derived transaction identity.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-30 16:17:20 -07:00

237 lines
6.3 KiB
YAML

# Devnet Configuration - Network ID 5, Ports 9840+
# Usage: docker compose -f compose.devnet.yml up -d
#
# Development network for protocol testing and experimentation
version: "3.8"
networks:
devnet:
driver: bridge
ipam:
config:
- subnet: 172.32.0.0/24
volumes:
devnet-postgres:
devnet-redis:
devnet-node1-data:
devnet-node2-data:
devnet-node3-data:
devnet-node4-data:
devnet-node5-data:
x-node-common: &node-common
image: ghcr.io/luxfi/node:${NODE_VERSION:-latest}
restart: unless-stopped
networks:
- devnet
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
NETWORK_ID: 3
services:
# Infrastructure
devnet-postgres:
image: ghcr.io/hanzoai/sql:0.1.0
container_name: devnet-postgres
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: devnet
volumes:
- devnet-postgres:/var/lib/postgresql/data
ports:
- "15434:5432"
networks:
- devnet
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
devnet-redis:
image: ghcr.io/hanzoai/kv:0.1.0
container_name: devnet-redis
restart: unless-stopped
command: redis-server --appendonly yes
volumes:
- devnet-redis:/data
ports:
- "16381:6379"
networks:
- devnet
# Bootstrap Node (Node 1) - Dev network with fresh genesis
devnet-node-1:
<<: *node-common
container_name: devnet-node-1
volumes:
- devnet-node1-data:/app/data
- ~/.lux/keys/node0:/app/keys:ro
- ../genesis/configs/devnet:/app/genesis:ro
ports:
- "9840:9630"
- "9841:9631"
command: >
--network-id=3
--http-host=0.0.0.0
--http-port=9630
--staking-port=9631
--staking-host=0.0.0.0
--network-allow-private-ips=true
--genesis-file=/app/genesis/genesis.json
--staking-tls-cert-file=/app/keys/staking/staker.crt
--staking-tls-key-file=/app/keys/staking/staker.key
--staking-signer-key-file=/app/keys/bls/private.key
--index-enabled
--api-admin-enabled
--data-dir=/app/data
--log-level=debug
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9630/v1/health"]
interval: 30s
timeout: 10s
start_period: 60s
retries: 3
devnet-node-2:
<<: *node-common
container_name: devnet-node-2
volumes:
- devnet-node2-data:/app/data
- ~/.lux/keys/node1:/app/keys:ro
- ../genesis/configs/devnet:/app/genesis:ro
ports:
- "9842:9630"
- "9843:9631"
command: >
--network-id=3
--http-host=0.0.0.0
--http-port=9630
--staking-port=9631
--network-allow-private-ips=true
--genesis-file=/app/genesis/genesis.json
--staking-tls-cert-file=/app/keys/staking/staker.crt
--staking-tls-key-file=/app/keys/staking/staker.key
--staking-signer-key-file=/app/keys/bls/private.key
--bootstrap-ips=devnet-node-1:9631
--bootstrap-ids=NodeID-FrtEjhat6RUqjEWCJgYZKqBaxY2Woyy5G
--data-dir=/app/data
--log-level=debug
depends_on:
devnet-node-1:
condition: service_healthy
devnet-node-3:
<<: *node-common
container_name: devnet-node-3
volumes:
- devnet-node3-data:/app/data
- ~/.lux/keys/node2:/app/keys:ro
- ../genesis/configs/devnet:/app/genesis:ro
ports:
- "9844:9630"
- "9845:9631"
command: >
--network-id=3
--http-host=0.0.0.0
--http-port=9630
--staking-port=9631
--network-allow-private-ips=true
--genesis-file=/app/genesis/genesis.json
--staking-tls-cert-file=/app/keys/staking/staker.crt
--staking-tls-key-file=/app/keys/staking/staker.key
--staking-signer-key-file=/app/keys/bls/private.key
--bootstrap-ips=devnet-node-1:9631
--bootstrap-ids=NodeID-FrtEjhat6RUqjEWCJgYZKqBaxY2Woyy5G
--data-dir=/app/data
--log-level=debug
depends_on:
devnet-node-1:
condition: service_healthy
devnet-node-4:
<<: *node-common
container_name: devnet-node-4
volumes:
- devnet-node4-data:/app/data
- ~/.lux/keys/node3:/app/keys:ro
- ../genesis/configs/devnet:/app/genesis:ro
ports:
- "9846:9630"
- "9847:9631"
command: >
--network-id=3
--http-host=0.0.0.0
--http-port=9630
--staking-port=9631
--network-allow-private-ips=true
--genesis-file=/app/genesis/genesis.json
--staking-tls-cert-file=/app/keys/staking/staker.crt
--staking-tls-key-file=/app/keys/staking/staker.key
--staking-signer-key-file=/app/keys/bls/private.key
--bootstrap-ips=devnet-node-1:9631
--bootstrap-ids=NodeID-FrtEjhat6RUqjEWCJgYZKqBaxY2Woyy5G
--data-dir=/app/data
--log-level=debug
depends_on:
devnet-node-1:
condition: service_healthy
devnet-node-5:
<<: *node-common
container_name: devnet-node-5
volumes:
- devnet-node5-data:/app/data
- ~/.lux/keys/node4:/app/keys:ro
- ../genesis/configs/devnet:/app/genesis:ro
ports:
- "9848:9630"
- "9849:9631"
command: >
--network-id=3
--http-host=0.0.0.0
--http-port=9630
--staking-port=9631
--network-allow-private-ips=true
--genesis-file=/app/genesis/genesis.json
--staking-tls-cert-file=/app/keys/staking/staker.crt
--staking-tls-key-file=/app/keys/staking/staker.key
--staking-signer-key-file=/app/keys/bls/private.key
--bootstrap-ips=devnet-node-1:9631
--bootstrap-ids=NodeID-FrtEjhat6RUqjEWCJgYZKqBaxY2Woyy5G
--data-dir=/app/data
--log-level=debug
depends_on:
devnet-node-1:
condition: service_healthy
# LXD Gateway for DEX
devnet-gateway:
build:
context: ../dex
dockerfile: Dockerfile
image: lxd-gateway:devnet
container_name: devnet-gateway
restart: unless-stopped
ports:
- "8082:8080"
environment:
LUX_RPC_URL: http://devnet-node-1:9630/v1/chain/C/rpc
ZOO_RPC_URL: http://devnet-node-1:9630/v1/chain/zoo/rpc
LOG_LEVEL: debug
networks:
- devnet
depends_on:
devnet-node-1:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3