Read Node
Repository viewer
Legacy docs parity surface
Back to repository viewer
Repository document
Read Node Same-Domain Deploy
read-node/same-domain-deploy.md
Boundary
This route preserves legacy markdown access inside the Next.js surface. The raw repository file remains authoritative.
Open raw fileRead Node Same-Domain Deploy
Goal
Serve the static PrivateDAO frontend and the read node behind the same origin so the browser uses:
- wallet-signed writes in the client
- pooled backend reads on `/api/v1`
- direct RPC only as fallback
Deployment Shape
- frontend static files
- `https://app.privatedao.xyz/`
- read node reverse-proxied
- `https://app.privatedao.xyz/api/v1/*`
- health and metrics
- `https://app.privatedao.xyz/healthz`
- `https://app.privatedao.xyz/api/v1/metrics`
Read Node Process
Run the read node on the host:
cd /home/x-pact/PrivateDAO
PRIVATE_DAO_READ_NODE_HOST=127.0.0.1 \
PRIVATE_DAO_READ_NODE_PORT=8787 \
PRIVATE_DAO_READ_ALLOWED_ORIGIN=https://app.privatedao.xyz \
npm run start:read-nodeReverse Proxy Shape
Example path mapping:
- `/`
- static site
- `/api/v1/`
- proxy to `http://127.0.0.1:8787/api/v1/`
- `/healthz`
- proxy to `http://127.0.0.1:8787/healthz`
Frontend Binding
When the frontend is served from the same domain, use:
?readApi=https://app.privatedao.xyz/api/v1or inject the same value into the served HTML environment if the static host supports it.
Verification
After deployment, verify:
curl https://app.privatedao.xyz/healthz
curl https://app.privatedao.xyz/api/v1/runtime
curl https://app.privatedao.xyz/api/v1/ops/overview
curl https://app.privatedao.xyz/api/v1/devnet/profiles
curl https://app.privatedao.xyz/api/v1/metricsIn the Runtime Panel, confirm:
- `READ PATH = Backend Indexer`
- `REFHE BACKEND` shows live counts
- `350-WALLET PROFILE` shows the seven-wave plan
- `READ NODE METRICS` shows requests, failures, and rate-limited counters
Security Notes
- keep the read node read-only
- do not move any signing key or treasury authority server-side
- keep rate limiting enabled
- keep CORS pinned to the real frontend origin
- terminate TLS at the reverse proxy
- keep backend logs and route-hit metrics enabled for operator review