Ink is not currently offered in the deploy wizard. This page documents how a node is built for when it returns; you can’t deploy one today.
- On a Kubernetes Operator executor, as pods in the cluster, like every other chain.
- On a bare-metal Agent executor, as Docker containers on the host rather than as
systemdservices.
On an Agent, Novacula installs the Docker engine for you — it’s a prerequisite of the container runtime, not something you prepare in advance. Before an Ink node’s first launch the agent checks whether it can reach the Docker daemon; if it can’t, it adds Docker’s official package repository (pinned, with a checksum-verified signing key), installs
docker-ce, enables the daemon, and joins itself to the docker group. The agent then restarts once so that group membership takes effect. The step is idempotent — a no-op on a host that already has a working Docker — and Docker is left in place when you delete the node.Auto-install covers Ubuntu hosts. On another distribution the step fails with an explicit message instead of guessing at your package manager: install the Docker engine yourself and make sure the agent’s user can reach the daemon socket, then redeploy.Networks and resources
Ink offers a single node type,
full. The deploy wizard pre-fills resource and disk defaults:
Clients
One pinned client per role today. The deploy wizard offers exactly the client and version the executor declares.
Ports
L1 endpoints
op-node derives the L2 chain from Ethereum L1 — it does not sync purely from L2 peers. Novacula supplies that connection for you: the network carries default public L1 execution and beacon endpoints (ethereum-rpc.publicnode.com and ethereum-beacon-api.publicnode.com), so a node syncs out of the box with no L1 configuration.
The node’s L1 execution and beacon endpoints are fields on the node spec rather than client flags, and the deploy wizard doesn’t surface them yet — a node deployed from the UI uses the public defaults. The related op-node flags (--l1, --l1.beacon, --l1.rpckind, --l1.trustrpc) are managed by the platform; don’t set them as overrides.
The public defaults are shared endpoints and rate-limited accordingly. A production Ink node is only as reliable as the L1 behind it, so if op-node stops making progress, L1 is the first thing to suspect. Talk to us if you need a node pointed at your own L1 — including an Ethereum node you already run on Novacula, which cuts egress and avoids third-party limits.
Config overrides
Set per-role overrides when you deploy — see Edit a running node. Each role (el for op-reth, rollup for op-node) passes through any flag the platform doesn’t already manage.
The P2P bootnodes and static peer are baked in per network and managed for you, so --p2p.bootnodes and --p2p.static are rejected if you try to set them. The L1 flags above are managed too.
Sync
op-node fetches batches from L1 and op-reth applies them through the Engine API. There is no checkpoint-sync URL or snapshot-restore option — initial sync is from genesis via the L1-derived chain, so a fresh node takes time and the disk default reflects full history. A healthy, reachable L1 endpoint is the gating factor for sync; if op-node can’t reach L1, it can’t make progress.Monitoring
Status, height, peers, sync progress, and disk combine both processes’ readings — see Node monitoring. Both roles report per-stage detail, which is what you need when a fresh node looks stuck:- op-reth pipeline progress — per-stage series for headers, bodies, execution, merkle unwind, and prune, each as entities processed against the stage total. During initial sync the node works through these stages in order, so a stage sitting still tells you exactly where it is.
- op-node reference heads — the rollup’s L1 origin for the unsafe L2 head, the L1 head it sees, and the L2 cross-unsafe head. Since op-node derives the L2 from L1, a stalled L1 head points at your L1 endpoint rather than at the node.
Common patterns
- RPC provider for Ink mainnet — accept the defaults and serve the node’s HTTP and WebSocket RPC to your apps.