Skip to content

docs: add celestia-app Docker setup guide - #2438

Open
jcstein wants to merge 7 commits into
mainfrom
codex/issue-1100-celestia-app-docker
Open

jcstein wants to merge 7 commits into
mainfrom
codex/issue-1100-celestia-app-docker

Conversation

@jcstein

@jcstein jcstein commented Mar 6, 2026 •

Copy link
Copy Markdown
Member

Adds the missing Docker guide for running a celestia-app consensus node on Mainnet Beta or Mocha, with links from installation docs and the operator sidebar.

The guide uses recommended network versions, persistent storage owned by the host user, verified genesis downloads, seeds, and explicit application/consensus gRPC listeners. It includes Linux host BBR setup, separate complete Linux and Docker Desktop startup commands, syncing, a shared Docker network for a light node, upgrades, and troubleshooting.

A focused CI workflow runs the commands extracted from the guide when the guide, test, or network/version constants change.

Validation:

  • Linux BBR smoke tests pass for v9.0.8 (Mainnet Beta) and v10.4.0-mocha (Mocha) on Ubuntu 24.04 / linux/amd64. Both complete initialization as the host user, the built-in checksum-verified genesis download, seed configuration, and the documented docker run with --sysctl. Tests confirm bbr inside the container, RPC status with the expected chain ID, and application gRPC TCP connectivity from the host and a second container on the shared network.
  • Both versions also pass the complete Docker Desktop bypass commands locally on linux/arm64, including verified genesis downloads and shared-network connectivity.
  • Lint and static build pass; lint has one existing warning in NodeAPIContent.tsx. Generated LLM Markdown retains both startup commands, host setup, and the stop-before-upgrade block; shell syntax passes.
  • Full local link check: no broken internal links; seven existing audit PDF URLs return 404 and one unchanged IBC guide GitHub URL failed to fetch.
  • Full chain sync and an end-to-end light-node connection were not tested.

Closes #1100

gemini-code-assist[bot]

This comment was marked as resolved.

@github-actions

github-actions Bot commented Mar 6, 2026

Copy link
Copy Markdown
Contributor

🚀 Preview Deployment

Your preview is ready: https://celestiaorg.github.io/docs-preview/pr-2438/

Copilot AI added a commit that referenced this pull request Mar 6, 2026
Co-authored-by: jcstein <46639943+jcstein@users.noreply.github.com>
@jcstein jcstein self-assigned this Mar 6, 2026
@celestiaorg celestiaorg deleted a comment from gemini-code-assist Bot Mar 6, 2026
@jcstein
jcstein requested a review from Copilot March 7, 2026 06:11

This comment was marked as resolved.

jcstein and others added 2 commits July 30, 2026 13:13
Align with seeds-first P2P setup, gRPC core.port 9090, localhost-bound
RPC/gRPC publishes, and cleaner peer list formatting.

Co-authored-by: Cursor <cursoragent@cursor.com>
@jcstein

jcstein commented Jul 30, 2026

Copy link
Copy Markdown
Member Author

Refreshed this PR against current main:

  • Rebased (~137 commits behind → up to date)
  • Seeds-first P2P setup (persistent peers optional, matching consensus-node guide)
  • celestia-node example uses --core.port 9090 (gRPC)
  • RPC/gRPC published to localhost only, with exposure warning
  • Trailing-comma cleanup on peer/seed lists

@jcstein
jcstein force-pushed the codex/issue-1100-celestia-app-docker branch from 30419c5 to afc3190 Compare July 30, 2026 19:15
celestia-node reaches celestia-app over the Docker network on gRPC 9090,
so publishing those ports to the host is unnecessary exposure.

Co-authored-by: Cursor <cursoragent@cursor.com>
@jcstein
jcstein requested a review from gbarros July 30, 2026 19:33
Comment on lines +198 to +199
docker pull "ghcr.io/celestiaorg/celestia-app:$APP_VERSION"
docker rm celestia-app

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[suggestion] docker rm refuses a running container. The sentence above says to stop first, but this is the block people will copy.

Suggested change
docker pull "ghcr.io/celestiaorg/celestia-app:$APP_VERSION"
docker rm celestia-app
docker stop celestia-app
docker pull "ghcr.io/celestiaorg/celestia-app:$APP_VERSION"
docker rm celestia-app

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in c662def: the upgrade code block now includes docker stop celestia-app before pulling the image and removing the container.

@gbarros gbarros left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two things to fix before merge: the BBR link points at the source-build section, and the quick-start docker run (with --sysctl) is not the command that was smoke-tested.

The image, home path, genesis download, seeds, localhost RPC/gRPC publishes, and the light-node --core.port 9090 match current celestia-app and the consensus-node guide.

- Enough CPU, memory and disk for a
[consensus node](/operate/getting-started/hardware-requirements).
- For production, a Linux host with BBR enabled. See
[the BBR setup instructions](/operate/consensus-validators/install-celestia-app#building-binary-from-source).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The link target is the "Building binary from source" section, which does not mention BBR. The anchor resolves, so link checking will not catch it.

celestia-appd reads /proc/sys/net/ipv4/tcp_congestion_control inside the container and exits unless the value contains bbr or the process is started with --force-no-bbr. Enabling BBR on the host does not change the container's network namespace. The host only needs the tcp_bbr module loaded so the --sysctl in the start command can succeed. Put those host steps in this guide instead of linking to the compile tutorial.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in c662def: replaced the compile-guide link with a Linux host BBR setup section, including modprobe tcp_bbr, checking availability, and loading the module after reboot. The guide also explains that --sysctl selects BBR inside the container network namespace.

```bash
docker run -d \
--user "$(id -u):$(id -g)" \
--sysctl net.ipv4.tcp_congestion_control=bbr \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the command operators will run, and it was not the command from the smoke test. The PR notes say both image tests used the Docker Desktop bypass (--force-no-bbr, no --sysctl), and download-genesis was interrupted before it finished. The Mocha compose entrypoint in celestia-app also always passes --force-no-bbr and does not set this sysctl.

Docker rejects net.ipv4.tcp_congestion_control=bbr when the module is not loaded or the daemon does not allow that sysctl. Run this docker run once on a Linux host where BBR is available. For the bypass, give a second complete command instead of "omit --sysctl and append --force-no-bbr".

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in c662def: the guide now has separate, complete Linux BBR and Docker Desktop bypass commands. The Linux smoke tests passed for Mainnet Beta (v9.0.8) and Mocha (v10.4.0-mocha), running the commands extracted from the guide. Both completed the genesis download and confirmed BBR inside the container, the expected RPC chain ID, and gRPC TCP connectivity from the host and shared Docker network. Full chain sync and an end-to-end light-node connection remain untested. Requesting your review again with these fixes and validation in place.

@jcstein
jcstein requested a review from gbarros October 7, 2026 09:04
@jcstein

jcstein commented Oct 7, 2026

Copy link
Copy Markdown
Member Author

@gbarros addressed your feedback in c662def:

  • Added the Linux host BBR setup directly to this guide.
  • Added a complete Docker Desktop command with --force-no-bbr.
  • Added docker stop celestia-app to the upgrade block.
  • Added an Ubuntu 24.04 CI smoke test that reads and runs the commands from the guide, including the Linux docker run with --sysctl.

Both Linux BBR tests passed for Mainnet Beta and Mocha: complete checksum-verified genesis downloads, BBR enabled inside the container, expected RPC chain IDs, and application gRPC TCP connectivity from the host and a second container on the shared network. Both Docker Desktop runs also passed locally.

All CI checks are green. Full chain sync and an end-to-end light-node connection remain outside the smoke test. Ready for another look.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

Devin Review

Comment on lines +112 to +113
SEEDS=$(curl -fsSL "https://raw.githubusercontent.com/celestiaorg/networks/master/$CHAIN_ID/seeds.txt" | tr '\n' ',' | sed 's/,$//')
test -n "$SEEDS" && sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/" "$APP_HOME/config/config.toml"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟨 Remote seed text executes in shell

If the downloaded seed list contains shell syntax, sed interpolates it into a command. The operator's shell can then execute commands from the seed list.

Devin Review


Was this helpful? React with 👍 or 👎 to provide feedback.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: add documentation for running celestia-app docker images

3 participants