Epic: Move the staging environment to a dedicated VM on provider C (gateway + testnet Bee)
Today staging and production run on the same host and share the same Bee node. That coupling is the root of the propagation-debugging pain in #236: we could not tell whether staging upload failures were gateway bugs or node/connectivity problems, because staging experiments write to the same (mainnet) Bee that prod depends on. Testing Flow B (#225) there also means spending real xBZZ on every createBatch.
This epic stands up an isolated staging environment on its own VM on provider C — a Sepolia testnet Bee + the staging gateway on one box — so staging is fully decoupled from prod, free to test against (testnet funds), and inspectable (we control the host + logs).
A companion epic (#249) moves production to C after staging is proven.
Why this shape
- A fresh, self-contained VM cleanly decouples staging from the shared prod host/Bee with no dependency on the current setup.
- Light Bee, not full node: the gateway buys batches via the chain client and stamps are signed off-chain, so staging needs only upload/pushsync — a light node (no reserve disk, no BZZ stake) is sufficient and cheap.
- Testnet = Sepolia (chain id 11155111) — the gateway's
GNOSIS_CHAIN_ID=11155111 path already exists; an existing funded Sepolia signer wallet means no new real spend to test Flow A + Flow B end-to-end.
Networking is the thing to get right (the #236 lesson)
The old node showed networkAvailability=Unavailable (outbound-dial failures, likely IPv6 egress). On the new VM we control egress, so every Bee bring-up must verify: p2p port (1634) reachable, working IPv4 and IPv6 egress, connectedPeers climbing, and networkAvailability=Available — observable now via the debug proxy + /health node section — before any upload test is trusted.
Sub-issues
Dependency-ordered. The VM + Bee gate everything; the retests gate sign-off.
Acceptance criteria (epic)
Constraints / notes
- Reuse the existing funded Sepolia signer wallet (keys held locally; never commit or paste keys/addresses into issues/PRs).
- No secrets, IPs, hostnames, or provider-account details in this public repo — keep them in the private store referenced by the runbook.
- Branch from
dev; never push to dev/main directly. No customer/private data on the staging node.
Epic: Move the staging environment to a dedicated VM on provider C (gateway + testnet Bee)
Today staging and production run on the same host and share the same Bee node. That coupling is the root of the propagation-debugging pain in #236: we could not tell whether staging upload failures were gateway bugs or node/connectivity problems, because staging experiments write to the same (mainnet) Bee that prod depends on. Testing Flow B (#225) there also means spending real xBZZ on every
createBatch.This epic stands up an isolated staging environment on its own VM on provider C — a Sepolia testnet Bee + the staging gateway on one box — so staging is fully decoupled from prod, free to test against (testnet funds), and inspectable (we control the host + logs).
A companion epic (#249) moves production to C after staging is proven.
Why this shape
GNOSIS_CHAIN_ID=11155111path already exists; an existing funded Sepolia signer wallet means no new real spend to test Flow A + Flow B end-to-end.Networking is the thing to get right (the #236 lesson)
The old node showed
networkAvailability=Unavailable(outbound-dial failures, likely IPv6 egress). On the new VM we control egress, so every Bee bring-up must verify: p2p port (1634) reachable, working IPv4 and IPv6 egress,connectedPeersclimbing, andnetworkAvailability=Available— observable now via the debug proxy +/healthnode section — before any upload test is trusted.Sub-issues
Dependency-ordered. The VM + Bee gate everything; the retests gate sign-off.
devbranch deploys to the staging VMAcceptance criteria (epic)
networkAvailability=Availableand a healthy peer count.devpushes auto-deploy to the staging gateway via CI/CD (old shared-host dev deploy retired).POST /chunks→ Bee accepts → retrievable.createBatch(owner=…)→ owner signs a stamp → upload via Flow A → retrievable; spend is testnet only.Constraints / notes
dev; never push todev/maindirectly. No customer/private data on the staging node.