Dokploy Instructions
How to deploy clusters seamlessly using Dokploy.
Reef Cluster - Dokploy Deployment Guide
A Reef validator cluster can be deployed in two different ways on Dokploy: š¢ Method 1: Single Template (Full Cluster Setup) [RECOMMENDED]
- A single deployment handles bootnode + all validators + RPC.
šµ Method 2: Multiple Templates (Bootstrap + Individual Validators)
- You deploy bootstrap + validators separately for more control.
š Table of Contents
š¢ Method 1: Single Template ā Full Cluster Setup
Step 1: Generate Validator Keys
Go to Create Service
Select Template from the menu.
Add template repo URL at the top-right:
Search for “Reef”
- Click Create on Reef Chain ā Keys Generator, then confirm.
- Deploy the service.
- Visit the port
http://reef.host:48765or your IP address / hostname at port48765
- Copy all address + seed pairs, they will be needed later.
Step 2: Deploy Custom Spec Generator
- Go to Templates and search for:
Reef Chain ā Custom Spec Generator
Deploy it.
It runs on port 8000 by default:
š Your full cluster (bootnode + validators + RPC + ETH RPC) is now live.
šµ Method 2: Multiple Templates ā Bootstrap & Validators
Step 1: Generate Validator Keys (Same as Method 1)
š Jump to: Generate Validator Keys
Step 2: Deploy Bootnode Validator
Create service ā choose template:
Reef Chain ā Bootnode Validator
Fill in:
v1sec,v2sec,v3secv1addr,v2addr,v3addrPORT=8000ā exposes custom specP2P_PORT=30335ā bootnode peer port
Bootnode starts ā no peers yet (expected behavior).
Step 3: Deploy Additional Validators
Use: Reef Chain ā Validator
Deploy 2 or more validators ā finalize blocks.
Deploy ETH RPC (Method 2)
Same template:
Reef Chain ā ETH RPC
ā ļø Important ā ETH RPC default port:
http://reef.host:8545
Local Docker deployment instructions:
clone the git repo.
git clone -b reef-chain https://github.com/anukulpandey/dokploy-templates.gitswitch to the reef-dev-cluster directory.
cd dokploy-templates/blueprints/reef-dev-clusterStart the docker instance:
docker-compose upVerify the logs ā once completed, your logs should look similar to the following:
reef-dev-cluster-1 | 2026-04-23 09:41:22 Running JSON-RPC server: addr=127.0.0.1:42967,[::1]:36105
reef-dev-cluster-1 | 2026-04-23 09:41:22 ć½ļø Prometheus exporter started at 127.0.0.1:9618
reef-dev-cluster-1 | 2026-04-23 09:41:22 š¶ Starting BABE Authorship worker
Container reef-dev-cluster-reef-dev-cluster-1 Healthy
reef-dev-cluster-eth-rpc-1 | 2026-04-23 09:41:26 š Connecting to node at: ws://reef-dev-cluster:9945 ...
reef-dev-cluster-eth-rpc-1 | 2026-04-23 09:41:26 š Connected to node at: ws://reef-dev-cluster:9945
reef-dev-cluster-eth-rpc-1 | 2026-04-23 09:41:26 š¾ Using in-memory database, keeping only 256 blocks in memory
reef-dev-cluster-eth-rpc-1 | 2026-04-23 09:41:26 Node does not have getAutomine RPC. Defaulting to automine=false.
reef-dev-cluster-eth-rpc-1 | 2026-04-23 09:41:26 ć½ļø Prometheus exporter started at 127.0.0.1:9616
reef-dev-cluster-eth-rpc-1 | 2026-04-23 09:41:26 Running JSON-RPC server: addr=0.0.0.0:8545,[::]:32917
reef-dev-cluster-eth-rpc-1 | 2026-04-23 09:41:26 š Subscribing to new blocks (BestBlocks)
reef-dev-cluster-eth-rpc-1 | 2026-04-23 09:41:26 š Subscribing to new blocks (FinalizedBlocks)
reef-dev-cluster-1 | ==> /tmp/bootnode.log <==
reef-dev-cluster-1 | 2026-04-23 09:41:27 š¤ Idle (0 peers), best: #0 (0xe72cā¦1267), finalized #0 (0xe72cā¦1267), ⬠0 ⬠0