zoo mainnet and testnet have public RPC

Neither had one. api.zoo.ngo reached the ingress with nothing routing
/v1/chain; api.zoo-test.network was an A record at a DigitalOcean address that
no longer answers (now a proxied CNAME to the estate tunnel). Both route to
archive nodes on evo holding the full imported chains — 799 and 84 blocks, with
historical state at every height. Admin and debug are off on both.

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
2026-09-10 18:13:54 -07:00
co-authored by Hanzo Dev
parent a05b8c8227
commit 08cb80231d
2 changed files with 94 additions and 0 deletions
+47
View File
@@ -0,0 +1,47 @@
# Public C-chain RPC for this chain, served by its archive node.
#
# The node runs on evo's host network under /data/luxd (v1.36.148, pruning off —
# v1.36.181 keeps no historical state), so the Service has no selector and its
# one endpoint is the host port. Admin and debug are disabled on that node: the
# import is complete, and a public route to either lets anyone take the VM lock or
# run unbounded traces.
---
# The archive node for this chain runs on evo's host network (/data/luxd), so the
# Service has no selector: its one endpoint is the host port. Admin and debug are
# off on that node; only eth, evm, net, rpc and web3 are served.
apiVersion: v1
kind: Service
metadata: {name: luxd-archive, namespace: zoo-mainnet}
spec:
ports: [{name: rpc, port: 9630, targetPort: 9660, protocol: TCP}]
---
apiVersion: discovery.k8s.io/v1
kind: EndpointSlice
metadata:
name: luxd-archive-host
namespace: zoo-mainnet
labels: {kubernetes.io/service-name: luxd-archive}
addressType: IPv4
ports: [{name: rpc, port: 9660, protocol: TCP}]
endpoints: [{addresses: ["10.0.0.21"]}]
---
# v1.36.148 serves /v1/bc; the public contract is /v1/chain/c/rpc.
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata: {name: bc-path, namespace: zoo-mainnet}
spec: {replacePathRegex: {regex: '^/v1/chain/[cC](/.*)?$', replacement: '/v1/bc/C$1'}}
---
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata: {name: c-chain, namespace: zoo-mainnet}
spec: {replacePath: {path: /v1/bc/C/rpc}}
---
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata: {name: chain-api, namespace: zoo-mainnet}
spec:
entryPoints: [websecure]
routes:
- {kind: Rule, match: "Host(`api.zoo.ngo`) && PathPrefix(`/v1/chain`)", priority: 300, middlewares: [{name: bc-path}], services: [{name: luxd-archive, port: 9630}]}
- {kind: Rule, match: "Host(`api.zoo.ngo`) && Path(`/`)", priority: 310, middlewares: [{name: c-chain}], services: [{name: luxd-archive, port: 9630}]}
tls: {}
+47
View File
@@ -0,0 +1,47 @@
# Public C-chain RPC for this chain, served by its archive node.
#
# The node runs on evo's host network under /data/luxd (v1.36.148, pruning off —
# v1.36.181 keeps no historical state), so the Service has no selector and its
# one endpoint is the host port. Admin and debug are disabled on that node: the
# import is complete, and a public route to either lets anyone take the VM lock or
# run unbounded traces.
---
# The archive node for this chain runs on evo's host network (/data/luxd), so the
# Service has no selector: its one endpoint is the host port. Admin and debug are
# off on that node; only eth, evm, net, rpc and web3 are served.
apiVersion: v1
kind: Service
metadata: {name: luxd-archive, namespace: zoo-testnet}
spec:
ports: [{name: rpc, port: 9630, targetPort: 9670, protocol: TCP}]
---
apiVersion: discovery.k8s.io/v1
kind: EndpointSlice
metadata:
name: luxd-archive-host
namespace: zoo-testnet
labels: {kubernetes.io/service-name: luxd-archive}
addressType: IPv4
ports: [{name: rpc, port: 9670, protocol: TCP}]
endpoints: [{addresses: ["10.0.0.21"]}]
---
# v1.36.148 serves /v1/bc; the public contract is /v1/chain/c/rpc.
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata: {name: bc-path, namespace: zoo-testnet}
spec: {replacePathRegex: {regex: '^/v1/chain/[cC](/.*)?$', replacement: '/v1/bc/C$1'}}
---
apiVersion: hanzo.ai/v1alpha1
kind: Middleware
metadata: {name: c-chain, namespace: zoo-testnet}
spec: {replacePath: {path: /v1/bc/C/rpc}}
---
apiVersion: hanzo.ai/v1alpha1
kind: IngressRoute
metadata: {name: chain-api, namespace: zoo-testnet}
spec:
entryPoints: [websecure]
routes:
- {kind: Rule, match: "Host(`api.zoo-test.network`) && PathPrefix(`/v1/chain`)", priority: 300, middlewares: [{name: bc-path}], services: [{name: luxd-archive, port: 9630}]}
- {kind: Rule, match: "Host(`api.zoo-test.network`) && Path(`/`)", priority: 310, middlewares: [{name: c-chain}], services: [{name: luxd-archive, port: 9630}]}
tls: {}