|
1 | 1 | # Running subtensor node locally
|
2 | 2 |
|
3 |
| -- [Method 1: Using Docker](#method-1-using-docker) |
4 |
| -- [Method 2: Using Source Code](#method-2-using-source-code) |
5 |
| -- [Running on Cloud](#running-on-cloud) |
6 |
| - |
7 |
| -## Method 1: Using Docker |
8 |
| - |
9 |
| -To run a subtensor node with Docker, follow the below steps. |
10 |
| - |
11 |
| -If you are already running a subtensor node using Docker, then go directly to [Step 5 Prepare to Run](#step-5-prepare-to-run) to restart the Docker container. The below steps 1 through 4 are for first time users only. |
12 |
| - |
13 |
| -### Step 1: Install git |
14 |
| - |
15 |
| -Make sure you installed `git` on your machine. See [GitHub docs](https://docs.github.com/en/get-started). |
16 |
| - |
17 |
| -### Step 2: Install Docker |
18 |
| - |
19 |
| -Follow Docker's [official installation guides](https://docs.docker.com/engine/install/) and install Docker. |
20 |
| - |
21 |
| -**Run Docker first** |
22 |
| -Before you proceed, make sure that Docker is running. |
23 |
| - |
24 |
| -### Step 3: Clone the subtensor repo |
25 |
| - |
26 |
| -Clone the subtensor repo: |
27 |
| - |
28 |
| -```bash |
29 |
| -git clone https://github.com/opentensor/subtensor.git |
30 |
| -``` |
31 |
| - |
32 |
| -### Step 4: Go into subtensor directory |
33 |
| - |
34 |
| -Then `cd` into the subtensor directory: |
35 |
| - |
36 |
| -```bash |
37 |
| -cd subtensor |
38 |
| -``` |
39 |
| - |
40 |
| -### Step 5: Prepare to run |
41 |
| - |
42 |
| -Execute the below three commands in this order: |
43 |
| - |
44 |
| -Make sure you are on the `main` branch. If not, switch to it: |
45 |
| - |
46 |
| -```bash |
47 |
| -git checkout main |
48 |
| -``` |
49 |
| - |
50 |
| -Pull the latest `main` branch contents: |
51 |
| - |
52 |
| -```bash |
53 |
| -git pull |
54 |
| -``` |
55 |
| - |
56 |
| -Stop the currently running Docker containers: |
57 |
| - |
58 |
| -```bash |
59 |
| -docker compose down --volumes |
60 |
| -``` |
61 |
| - |
62 |
| -### Run a lite node on mainchain |
63 |
| - |
64 |
| -To run a lite node connected to the Bittensor mainchain, run the below command. |
65 |
| - |
66 |
| -```bash |
67 |
| -sudo ./scripts/run/subtensor.sh -e docker --network mainnet --node-type lite |
68 |
| -``` |
69 |
| - |
70 |
| -### Run an archive node on mainchain |
71 |
| - |
72 |
| -To run an archive node connected to the Bittensor mainchain, run the below command. |
73 |
| - |
74 |
| -```bash |
75 |
| -sudo ./scripts/run/subtensor.sh -e docker --network mainnet --node-type archive |
76 |
| -``` |
77 |
| - |
78 |
| -### Run a lite node on testchain |
79 |
| - |
80 |
| -To run a lite node connected to the Bittensor testchain, run the below command. |
81 |
| - |
82 |
| -```bash |
83 |
| -sudo ./scripts/run/subtensor.sh -e docker --network testnet --node-type lite |
84 |
| -``` |
85 |
| - |
86 |
| -### Run an archive node on testchain |
87 |
| - |
88 |
| -To run an archive node connected to the Bittensor testchain, run the below command. |
89 |
| - |
90 |
| -```bash |
91 |
| -sudo ./scripts/run/subtensor.sh -e docker --network testnet --node-type archive |
92 |
| -``` |
93 |
| - |
94 |
| ---- |
95 |
| - |
96 |
| -## Method 2: Using Source Code |
97 |
| - |
98 |
| -To install and run a subtensor node by compiling the source code, follow the below steps. |
99 |
| - |
100 |
| -## Install basic packages |
101 |
| - |
102 |
| -Install the basic requirements by running the below commands on a Linux terminal. |
103 |
| - |
104 |
| -```bash title="On Linux" |
105 |
| -sudo apt-get update |
106 |
| -sudo apt install build-essential |
107 |
| -sudo apt-get install clang |
108 |
| -sudo apt-get install curl |
109 |
| -sudo apt-get install git |
110 |
| -sudo apt-get install make |
111 |
| -sudo apt install --assume-yes git clang curl libssl-dev protobuf-compiler |
112 |
| -sudo apt install --assume-yes git clang curl libssl-dev llvm libudev-dev make protobuf-compiler |
113 |
| -``` |
114 |
| - |
115 |
| -## Install Rust |
116 |
| - |
117 |
| -Next, install Rust and update the environment by running the following commands: |
118 |
| - |
119 |
| -```bash |
120 |
| -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh |
121 |
| -source ~/.cargo/env |
122 |
| -``` |
123 |
| - |
124 |
| -Next, install Rust toolchain: |
125 |
| - |
126 |
| -```bash |
127 |
| -rustup default stable |
128 |
| -rustup update |
129 |
| -rustup target add wasm32-unknown-unknown |
130 |
| -rustup toolchain install nightly |
131 |
| -rustup target add --toolchain nightly wasm32-unknown-unknown |
132 |
| -``` |
133 |
| - |
134 |
| -## Compile subtensor code |
135 |
| - |
136 |
| -Next, to compile the subtensor source code, follow the below steps: |
137 |
| - |
138 |
| -Clone the subtensor repo: |
139 |
| - |
140 |
| -```bash |
141 |
| -git clone https://github.com/opentensor/subtensor.git |
142 |
| -``` |
143 |
| - |
144 |
| -`cd` into the subtensor directory: |
145 |
| - |
146 |
| -```bash |
147 |
| -cd subtensor |
148 |
| -``` |
149 |
| - |
150 |
| -Make sure you are on the `main` branch. If not, switch to it: |
151 |
| - |
152 |
| -```bash |
153 |
| -git checkout main |
154 |
| -``` |
155 |
| - |
156 |
| -Remove previous chain state: |
157 |
| - |
158 |
| -```bash |
159 |
| -rm -rf /tmp/blockchain |
160 |
| -``` |
161 |
| - |
162 |
| -Install subtensor by compiling with `cargo`: |
163 |
| - |
164 |
| -```bash |
165 |
| -cargo build --profile production --features=runtime-benchmarks |
166 |
| -``` |
167 |
| - |
168 |
| -## Run the subtensor node |
169 |
| - |
170 |
| -You can now run the public subtensor node either as a lite node or as an archive node. See below: |
171 |
| - |
172 |
| -### Lite node on mainchain |
173 |
| - |
174 |
| -To run a lite node connected to the mainchain, execute the below command (note the `--sync=warp` flag which runs the subtensor node in lite mode): |
175 |
| - |
176 |
| -```bash title="With --sync=warp setting, for lite node" |
177 |
| -./target/production/node-subtensor --chain raw_spec.json --base-path /tmp/blockchain --sync=warp --port 30333 --max-runtime-instances 32 --rpc-max-response-size 2048 --rpc-cors all --rpc-port 9944 --bootnodes /ip4/13.58.175.193/tcp/30333/p2p/12D3KooWDe7g2JbNETiKypcKT1KsCEZJbTzEHCn8hpd4PHZ6pdz5 --no-mdns --in-peers 8000 --out-peers 8000 --prometheus-external --rpc-external |
178 |
| -``` |
179 |
| - |
180 |
| -### Archive node on mainchain |
181 |
| - |
182 |
| -To run an archive node connected to the mainchain, execute the below command (note the `--sync=full` which syncs the node to the full chain and `--pruning archive` flags, which disables the node's automatic pruning of older historical data): |
183 |
| - |
184 |
| -```bash title="With --sync=full and --pruning archive setting, for archive node" |
185 |
| -./target/production/node-subtensor --chain raw_spec.json --base-path /tmp/blockchain --sync=full --pruning archive --port 30333 --max-runtime-instances 32 --rpc-max-response-size 2048 --rpc-cors all --rpc-port 9944 --bootnodes /ip4/13.58.175.193/tcp/30333/p2p/12D3KooWDe7g2JbNETiKypcKT1KsCEZJbTzEHCn8hpd4PHZ6pdz5 --no-mdns --in-peers 8000 --out-peers 8000 --prometheus-external --rpc-external |
186 |
| -``` |
187 |
| - |
188 |
| -### Lite node on testchain |
189 |
| - |
190 |
| -To run a lite node connected to the testchain, execute the below command: |
191 |
| - |
192 |
| -```bash title="With bootnodes set to testnet and --sync=warp setting, for lite node." |
193 |
| -./target/production/node-subtensor --chain raw_testspec.json --base-path /tmp/blockchain --sync=warp --port 30333 --max-runtime-instances 32 --rpc-max-response-size 2048 --rpc-cors all --rpc-port 9944 --bootnodes /dns/bootnode.test.finney.opentensor.ai/tcp/30333/p2p/12D3KooWPM4mLcKJGtyVtkggqdG84zWrd7Rij6PGQDoijh1X86Vr --no-mdns --in-peers 8000 --out-peers 8000 --prometheus-external --rpc-external |
194 |
| -``` |
195 |
| - |
196 |
| -### Archive node on testchain |
197 |
| - |
198 |
| -To run an archive node connected to the testchain, execute the below command: |
199 |
| - |
200 |
| -```bash title="With bootnodes set to testnet and --sync=full and --pruning archive setting, for archive node" |
201 |
| -./target/production/node-subtensor --chain raw_testspec.json --base-path /tmp/blockchain --sync=full --pruning archive --port 30333 --max-runtime-instances 32 --rpc-max-response-size 2048 --rpc-cors all --rpc-port 9944 --bootnodes /dns/bootnode.test.finney.opentensor.ai/tcp/30333/p2p/12D3KooWPM4mLcKJGtyVtkggqdG84zWrd7Rij6PGQDoijh1X86Vr --no-mdns --in-peers 8000 --out-peers 8000 --prometheus-external --rpc-external |
202 |
| -``` |
203 |
| - |
204 |
| -## Running on cloud |
205 |
| - |
206 |
| -We have not tested these installation scripts on any cloud service. In addition, if you are using Runpod cloud service, then note that this service is already [containerized](https://docs.runpod.io/pods/overview). Hence, the only option available to you is to compile from the source, as described in the above [Method 2: Using Source Code](#method-2-using-source-code) section. Note that these scripts have not been tested on Runpod. |
| 3 | +See the [**Subtensor Nodes** section in Bittensor Developer Documentation](https://docs.bittensor.com/subtensor-nodes). |
0 commit comments