Skip to content

ArturVargas/juno-dappnode

Repository files navigation

DappNode Juno Package

DAppNodeStore Available

Wrapper around Nethermind Juno to run a Starknet full node giving you a safe view into StarkNet network, helping to keep the network secure and the data accurate.

Juno is a Go implementation of a Starknet full-node client created by Nethermind to allow node operators to easily and reliably support the network and advance its decentralisation goals. See the Juno website

Quick Start

The package automatically creates the required data directory and downloads the latest snapshot on first run. No manual setup required!

docker-compose up -d

Accessing the Service

Once running, you can access the Juno node using the following DappNode DNS aliases:

  • HTTP API: http://juno.public.dappnode:6060
  • WebSocket API: ws://juno.public.dappnode:6061

Or using the full domain:

  • HTTP API: http://juno.public.dappnode.eth:6060
  • WebSocket API: ws://juno.public.dappnode.eth:6061

DappNode configuration

Node

NETWORK: Select the Starknet network to sync (default: "mainnet"). Available options:

  • mainnet: Mainnet network (~172 GB snapshot)
  • sepolia: Sepolia testnet (~5.7 GB snapshot)
  • sepolia-integration: Sepolia integration testnet (~2.4 GB snapshot)

SNAPSHOT_URL: To speed up first sync, set a snapshot URL. Default is the latest mainnet snapshot from Nethermind. Leave empty to sync from scratch. See Snapshots.

ETH_L1_RPC_URL: To enable L1 verification, provide the Websocket endpoint of a running Ethereum node. Leave empty to skip verification. See eth-node parameter in Configuration options

Note: a failed snapshot download may leave files in the snapshot directory and will skip downloading at the next restart. To force a snapshot download, delete the package and reinstall.

ENABLE_WS: Enable WebSocket RPC server (default: "true"). Set to "false" to disable.

WS_PORT: WebSocket server port (default: 6061). See WebSocket Interface

WS_HOST: WebSocket server host interface (default: "0.0.0.0"). See WebSocket Interface

EXTRA_OPTS: Additional configuration options. See Configuration options

Validator

⚠️ Warning: Do not start the staking container before Juno is fully synced. Otherwise, it will broadcast outdated attestations on the network. To make sure it doesn't attest while syncing, keep the SIGNER_* variables empty until it's ready.

PROVIDER_HTTP_URL: The Juno HTTP RPC URL (default http://juno:6060/rpc/v0_8)

PROVIDER_WS_URL: The Juno Websocket RPC URL (default ws://juno:6061/ws/v0_8)

SIGNER_OPERATIONAL_ADDRESS: The staking operational address

SIGNER_PRIVATE_KEY: The staking signer private key (optional)

SIGNER_EXTERNAL_URL: The staking external signer URL (optional)

Note: One of signer private key OR external URL is required. See the Starknet Staking v2 configuration page for more details on the parameters.

Network Configuration Examples

Mainnet (Production)

environment:
  NETWORK: "mainnet"
  # Will download ~172 GB snapshot

Sepolia (Testing)

environment:
  NETWORK: "sepolia"
  # Will download ~5.7 GB snapshot

Sepolia Integration (Development)

environment:
  NETWORK: "sepolia-integration"
  # Will download ~2.4 GB snapshot

Custom Snapshot URL

environment:
  NETWORK: "mainnet"
  SNAPSHOT_URL: "https://your-custom-snapshot-url.com/snapshot.tar"

No Snapshot (Sync from scratch)

environment:
  NETWORK: "mainnet"
  SNAPSHOT_URL: ""

Data Persistence

The package uses Docker named volumes for data persistence:

  • Volume name: juno_data
  • Data location: /var/lib/juno (inside container)
  • Persistence: Data persists across container restarts and updates

WebSocket Interface

This package includes WebSocket support for real-time interactions with the Starknet network. The WebSocket server runs on port 6061 by default and supports:

  • All Starknet JSON-RPC API endpoints
  • Subscription to newly created blocks (starknet_subscribeNewHeads)
  • Subscription to events (starknet_subscribeEvents)
  • Subscription to transaction status (starknet_subscribeTransactionStatus)
  • Subscription to pending transactions (starknet_subscribePendingTransactions)

For more information, see the Juno WebSocket documentation.

About

Nethermind Starknet client DappNode Package

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •