MushCrypto MushCrypto Node Docs
Infrastructure that grows underground

Everything you need to run a Celestia node, written by people who actually run one.

No jargon left unexplained, no step skipped because it seemed obvious. This is the guide we wished existed when we set up our first node.

Node types explained

Celestia has three kinds of node, and they trade off resources for how much of the network they can independently verify. Pick based on what you're actually trying to do — running the heaviest one "to be safe" is usually wasted resources.

Light node

Downloads small random samples of each block to confirm data is available, without downloading the whole block. Runs on a laptop. This is what makes Celestia's data availability sampling work at all — the more of these running, the stronger the network's guarantee.

Bridge node

Sits between the consensus network (celestia-app) and the data availability network (celestia-node). Downloads full blocks from consensus, re-serves them as samples to light nodes. Needs a synced consensus node to point at.

Full storage node

Like a bridge node, but keeps historical block data around instead of only recent blocks — the long-term archival layer for the DA network.

All three run the same celestia-node binary — you choose the type with the subcommand: celestia light start, celestia bridge start, or celestia full start.

Hardware & network requirements

Requirements scale with node type. This is a starting point, not a hard ceiling — mainnet storage needs grow over time as more data gets published.

  • Light node: 2 CPU cores, 2–4 GB RAM, a few GB of disk. Runs comfortably alongside other software.
  • Bridge / full node: 4+ CPU cores, 16+ GB RAM, fast NVMe storage (hundreds of GB and growing) — the disk needs to keep up with block throughput, not just have capacity.
  • Network: a stable connection with an open inbound port for P2P (default 2121) — NAT'd home connections work for light nodes, but a bridge/full node behind strict NAT will struggle to peer reliably.
These numbers move as the network grows. Check the official docs for the current recommended spec before provisioning hardware — don't treat this page as the final word on sizing.

Light node setup

The fastest way to actually participate in the network. Ten minutes, most of which is the binary downloading.

1. Install celestia-node

# build from source, or grab a release binary from GitHub
git clone https://github.com/celestiaorg/celestia-node.git
cd celestia-node && make build && make install

2. Initialize and start

celestia light init --p2p.network celestia
celestia light start --p2p.network celestia --core.ip <consensus-rpc-host>

The --core.ip flag points your light node at a consensus RPC to fetch headers from — you can use a public one to get started, or your own if you're already running a validator.

3. Confirm it's sampling

Check the logs for sampling messages advancing block height, or query the node's own RPC (see RPC & metrics below) for sync status.

Bridge / full node setup

Same binary, different subcommand and a heavier resource footprint — plan storage and RAM before you start, not after disk fills up.

celestia bridge init --p2p.network celestia
celestia bridge start --p2p.network celestia --core.ip <your-consensus-node> --core.port 9090

Unlike a light node, a bridge node needs its own consensus node (celestia-app) fully synced and reachable — it's re-serving real block data, not just sampling it. If you already run a Celestia validator, point it at that node's gRPC endpoint.

Never point a bridge node at a validator's consensus RPC that's also signing blocks in a way that could be double-exposed to untrusted peers — keep the trust boundary between your signing key and anything internet-facing as wide as you reasonably can.

systemd & auto-restart

A node that silently stops on a crash or reboot is worse than no node — you'll think you're contributing to network sampling when you're not. Wrap it in a real service.

# /etc/systemd/system/celestia-light.service
[Unit]
Description=Celestia Light Node
After=network-online.target

[Service]
User=celestia
ExecStart=/usr/local/bin/celestia light start --p2p.network celestia --core.ip <rpc-host>
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now celestia-light

Run it as a dedicated non-root user, not directly as root — same reasoning as any other long-running network service.

RPC & metrics

A node with no observability is a node you find out is broken from someone else, days later.

The node exposes a JSON-RPC endpoint (default port 26658) you can query for sync state, peer count, and header height — point your own monitoring at it rather than trusting the process is healthy just because it's still running.

# example: check sync state over the node's RPC
curl -s http://localhost:26658/header/sync_state

At minimum, alert on: process not running, RPC not responding, and header height not advancing for more than a few minutes — that last one catches a node that's "up" but silently stuck.

Troubleshooting

Node won't find peers

Check that your P2P port is actually reachable from outside your network, not just bound locally — a surprising number of "no peers" reports turn out to be router/firewall NAT issues, not the node itself.

Sync height not advancing

For a light node, confirm the --core.ip target is itself synced and reachable — a light node can only be as current as the consensus RPC it's pulling headers from.

Disk filling up faster than expected

Expected for full storage nodes — that's the archival tradeoff. For a bridge node, check you're not accidentally running it in full-storage mode; the pruning behavior differs between the two.

Glossary

  • DAS (Data Availability Sampling): the technique light nodes use to probabilistically confirm a block's data was actually published, without downloading the whole thing.
  • Blob: a chunk of arbitrary data (typically rollup transaction data) submitted to Celestia via a MsgPayForBlobs transaction.
  • Namespace: an identifier blobs are tagged with, letting a rollup pull only its own data back out of Celestia's blockspace instead of scanning everything.
  • Consensus node (celestia-app): the validator/full-node software that runs Celestia's actual CometBFT consensus — distinct from the DA-layer celestia-node software.