Record the edge the chains are actually served through
The Spark reboot put the chain RPC and explorer behind a Cloudflare tunnel, and nothing in the tree said so. Also route npm through our own package host.
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
# ingress.yaml — public hostname -> local origin for the Spark reboot.
|
||||
#
|
||||
# DO is gone. The Lux and Zoo chain surfaces are served from luxd processes on
|
||||
# the Spark box and reached through a Cloudflare tunnel, so there is no public
|
||||
# IP and nothing open on the firewall.
|
||||
#
|
||||
# These rows are the tunnel's ingress list. cloudflared MATCHES on `path` and
|
||||
# passes it through unchanged — it cannot rewrite — so each origin serves the
|
||||
# final public path itself. That is why the chain rows carry no rewrite: luxd
|
||||
# already mounts chain RPC at /v1/chain/<alias>/rpc (server/http/server.go
|
||||
# baseURL="/v1", chains/manager.go ChainAliasPrefix="chain"). The /ext prefix
|
||||
# is gone upstream; nothing here reintroduces it.
|
||||
#
|
||||
# Chain state came from canonical RLP in luxfi/state, verified by comparing the
|
||||
# booted block 0 hash against the hash in the RLP itself — see LLM.md.
|
||||
#
|
||||
# HOSTNAMES ARE SINGLE-LABEL, and that is not a style choice. Cloudflare's
|
||||
# universal certificate for this zone covers exactly:
|
||||
#
|
||||
# DNS:lux.network, DNS:*.lux.network
|
||||
#
|
||||
# One label. A two-label name like testnet.api.lux.network matches no SAN, so
|
||||
# TLS fails at the edge in ~40ms and the request never reaches a tunnel rule —
|
||||
# it looks like a routing or origin fault and is neither. Hence api-testnet,
|
||||
# not testnet.api. The zone already reads this way (api-exchange, api-bridge,
|
||||
# api-explore-hanzo-test), so this is the existing convention, not a new one.
|
||||
# zoo.network carries the same single-label wildcard and the same rule.
|
||||
#
|
||||
# The node must also bind 0.0.0.0: cloudflared reaches an origin over the host
|
||||
# network, and --http-allowed-hosts stays the real access control. UFW keeps
|
||||
# the wider bind off the public internet, though it does allow 10.0.0.0/8, and
|
||||
# the allow-list accepts any request whose Host is a bare IP — so a bound port
|
||||
# is LAN-readable by design. That is fine for read RPC and was NOT fine while
|
||||
# admin_importChain was still mounted; see LLM.md.
|
||||
|
||||
tunnel: lux-dchain
|
||||
id: 682f3c05-bce2-4bfd-a657-41fe4644c54c
|
||||
cname: 682f3c05-bce2-4bfd-a657-41fe4644c54c.cfargotunnel.com
|
||||
|
||||
ingress:
|
||||
# ── Lux chain RPC ────────────────────────────────────────────────
|
||||
- hostname: api.lux.network
|
||||
path: ^/v1/chain
|
||||
service: http://127.0.0.1:9630
|
||||
note: luxd network 96369, C-chain chainId 96369
|
||||
|
||||
- hostname: api-testnet.lux.network
|
||||
path: ^/v1/chain
|
||||
service: http://127.0.0.1:9640
|
||||
note: luxd network 96368, C-chain chainId 96368 — LIVE
|
||||
|
||||
# ── Explorer — ONE binary, branded per hostname ──────────────────
|
||||
- hostname: explorer.lux.network
|
||||
service: http://127.0.0.1:8090
|
||||
|
||||
# ── D-Chain venue (already live, unchanged) ──────────────────────
|
||||
- hostname: dchain.lux.network
|
||||
service: http://127.0.0.1:9610
|
||||
|
||||
- service: http_status:404
|
||||
|
||||
# ── Zoo ───────────────────────────────────────────────────────────
|
||||
# Zoo is a separate org with its own registry and its own brand. It gets its
|
||||
# own tunnel rather than riding the Lux one; the rows below are that tunnel's
|
||||
# ingress, pending its creation by the operator who holds the Cloudflare key.
|
||||
zoo:
|
||||
tunnel: zoo-local
|
||||
id: null # operator creates; fill in the uuid and its cfargotunnel.com cname
|
||||
ingress:
|
||||
- hostname: api.zoo.network
|
||||
path: ^/v1/chain
|
||||
service: http://127.0.0.1:9650
|
||||
note: luxd network 200200, EVM chainId 200200
|
||||
|
||||
- hostname: api-testnet.zoo.network
|
||||
path: ^/v1/chain
|
||||
service: http://127.0.0.1:9660
|
||||
note: luxd network 200201, EVM chainId 200201
|
||||
|
||||
- hostname: explorer.zoo.network
|
||||
service: http://127.0.0.1:8090
|
||||
note: same explorer binary; brand is chosen per chain in chains.yaml
|
||||
|
||||
- service: http_status:404
|
||||
@@ -0,0 +1,93 @@
|
||||
# chains.yaml — the config the running explorer actually uses on Spark.
|
||||
#
|
||||
# This is luxfi/explorer, ONE Go binary serving every chain from a per-chain
|
||||
# SQLite file and branding per chain, so explorer.lux.network and
|
||||
# explorer.zoo.network are the same origin. It is NOT the Next.js frontend
|
||||
# configured in k8s/lux-explorer/configmap-chains.yaml — that is the older
|
||||
# DO-era stack, and its RPC URLs still carry the dead /ext/bc/<id>/rpc form.
|
||||
#
|
||||
# RPC endpoints are /v1/chain/<alias>/rpc against the local luxd fleet.
|
||||
# Paths below are Spark-local; the file is tracked so the running explorer is
|
||||
# reproducible rather than surviving only in an untracked build directory.
|
||||
#
|
||||
# Note the explorer does NOT expand ${VAR:-default}; a literal URL is required
|
||||
# or the chain is silently skipped at startup ("rpc required for chain").
|
||||
data_dir: /home/z/lux-build/explorer/data
|
||||
http_addr: :8090
|
||||
|
||||
brand_default:
|
||||
name: Lux Explorer
|
||||
coin: LUX
|
||||
accent_color: "#5cf"
|
||||
icon_url: /icon.svg
|
||||
logo_url: /logo.svg
|
||||
|
||||
networks:
|
||||
- label: Mainnet
|
||||
domain: explorer.lux.network
|
||||
chain_id: 96369
|
||||
- label: Testnet
|
||||
domain: testnet.explorer.lux.network
|
||||
chain_id: 96368
|
||||
|
||||
chains:
|
||||
- slug: cchain
|
||||
name: Lux C-Chain
|
||||
chain_id: 96369
|
||||
type: evm
|
||||
rpc: http://127.0.0.1:9630/v1/chain/C/rpc
|
||||
coin: LUX
|
||||
enabled: true
|
||||
default: true
|
||||
indexer: { poll_interval: 10s }
|
||||
graph:
|
||||
enabled: true
|
||||
subgraphs:
|
||||
- { name: amm, schema: amm, enabled: true }
|
||||
brand:
|
||||
name: Lux C-Chain
|
||||
coin: LUX
|
||||
accent_color: "#5cf"
|
||||
|
||||
- slug: cchain-testnet
|
||||
name: Lux C-Chain Testnet
|
||||
chain_id: 96368
|
||||
type: evm
|
||||
rpc: http://127.0.0.1:9640/v1/chain/C/rpc
|
||||
coin: LUX
|
||||
enabled: true
|
||||
indexer: { poll_interval: 30s }
|
||||
brand:
|
||||
name: Lux C-Chain Testnet
|
||||
coin: LUX
|
||||
accent_color: "#5cf"
|
||||
|
||||
- slug: zoo
|
||||
name: Zoo
|
||||
chain_id: 200200
|
||||
type: evm
|
||||
rpc: http://127.0.0.1:9650/v1/chain/C/rpc
|
||||
coin: ZOO
|
||||
enabled: true
|
||||
indexer: { poll_interval: 10s }
|
||||
graph:
|
||||
enabled: true
|
||||
subgraphs:
|
||||
- { name: amm, schema: amm, enabled: true }
|
||||
brand:
|
||||
name: Zoo
|
||||
coin: ZOO
|
||||
accent_color: "#7c3aed"
|
||||
|
||||
- slug: zoo-testnet
|
||||
name: Zoo Testnet
|
||||
chain_id: 200201
|
||||
type: evm
|
||||
rpc: http://127.0.0.1:9660/v1/chain/C/rpc
|
||||
coin: ZOO
|
||||
enabled: true
|
||||
indexer: { poll_interval: 30s }
|
||||
brand:
|
||||
name: Zoo Testnet
|
||||
coin: ZOO
|
||||
accent_color: "#7c3aed"
|
||||
Reference in New Issue
Block a user