<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.internetcomputer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luis</id>
	<title>Internet Computer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.internetcomputer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Luis"/>
	<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/wiki/Special:Contributions/Luis"/>
	<updated>2026-04-12T03:31:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=5853</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=5853"/>
		<updated>2023-07-04T18:24:42Z</updated>

		<summary type="html">&lt;p&gt;Luis: Fixed the link in my fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn how to be accepted by the NNS as a Node Provider and onboard your nodes to the IC.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [[Node Provider Machine Hardware Guide]]&lt;br /&gt;
* [[Node Provider Networking Guide]]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM] (Optional, legacy—not recommended)&lt;br /&gt;
* 11 ICP (10 of which are to be staked for the NNS proposal deposit)&lt;br /&gt;
* Basic understanding of [[Neurons 101|neurons]], [https://internetcomputer.org/docs/current/tokenomics/nns/nns-staking-voting-rewards staking], and [[Governance of the Internet Computer|governance]] proposals. For instance, understanding what it means to stake a neuron for 8 years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Please allocate at least 0.5 day for going through the Node Provider NNS registration (steps 1-9). It may even take a couple of days, depending on how quickly the community votes on your NNS proposals. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the Node Provider NNS registration is complete, you can move on to &#039;&#039;&#039;step 10: Onboard nodes&#039;&#039;&#039;. This step involves you going to the DC and onboarding your nodes. It is much quicker than the Node Provider NNS registration (estimate to spend ~15 minutes per machine). Also, multiple machines can be brought up in parallel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note that the following steps do not need to be performed on the node machine itself.&#039;&#039;&#039; You can complete them on your personal laptop.&lt;br /&gt;
&lt;br /&gt;
== 1. Install the required tools ==&lt;br /&gt;
===&#039;&#039;&#039; A. Install ic-admin &#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; is the tool used to create and submit NNS proposals.&lt;br /&gt;
&lt;br /&gt;
==== MacOS ====&lt;br /&gt;
# Retrieve the file &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ curl &amp;quot;https://download.dfinity.systems/ic/7445081734e6d896d090295967d50710975c4f25/openssl-static-binaries/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify the binary &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ diff &amp;lt;(shasum -a 256 ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo 3f75026d2f28f171068e332a42c82a2795c93fbf5ab351baef30b30eb901cdba) &amp;amp;&amp;amp; echo &amp;quot;ic-admin checksum matches&amp;quot; || echo &amp;quot;***ERROR***: ic-admin checksum does not match&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
NOTE: The instructions below have been tested with the Ubuntu 20.04 release.&lt;br /&gt;
# Retrieve the file &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ curl &amp;quot;https://download.dfinity.systems/ic/7445081734e6d896d090295967d50710975c4f25/openssl-static-binaries/x86_64-linux/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify the binary &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ diff &amp;lt;(shasum -a 256 ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo e29bb9cc462e800b8b960ad49c412e5f5fdbb5ae2ae9fde0c13058422ba32802) &amp;amp;&amp;amp; echo &amp;quot;ic-admin checksum matches&amp;quot; || echo &amp;quot;***ERROR***: ic-admin checksum does not match&amp;quot; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039; B. Install dfx &amp;amp; create Node Provider hotkey &#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; is used to generate neuron hotkeys, among other things &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ sh -ci &amp;quot;$(curl -fsSL https://smartcontracts.org/install.sh)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify that dfx is up to date. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ export PATH=$HOME/bin:$PATH&lt;br /&gt;
$ dfx upgrade&lt;br /&gt;
$ dfx --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Create an identity for the Node Provider &#039;&#039;&#039;Hotkey&#039;&#039;&#039; &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
# example node-provider-hotkey: wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;You will need the Node Provider hotkey in the next steps.&#039;&#039;&#039; Note: you may be prompted to enter a passphrase when creating your identity and accessing your identity principal. Take note of the passphrase you choose.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The Node Provider hotkey is NOT the Node Provider principal. This is the hotkey that is used for the NNS proposal submissions only.&lt;br /&gt;
&lt;br /&gt;
== 2. Create and Manage Neuron via NNS Frontend Dapp and Internet Identity ==&lt;br /&gt;
&lt;br /&gt;
# Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&lt;br /&gt;
# Send at least 11 ICPs to the hardware wallet address.&lt;br /&gt;
# Navigate to Neurons tab and create a Neuron by staking at least 10 ICP from your hardware wallet. Staking more ICP works as well, but 10 is the minimum.&lt;br /&gt;
# &amp;lt;u&amp;gt;IMPORTANT!&amp;lt;/u&amp;gt; Confirm the transaction on your hardware wallet. &lt;br /&gt;
#:[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&lt;br /&gt;
# After the Neuron has been created successfully, confirm to &amp;quot;Add NNS Dapp as hotkey&amp;quot; in the dialogue and on your hardware wallet, and close the dialog after the action completes.&lt;br /&gt;
#:[[File:-docs-stake_neuron_2.png|1024px|neuron id]]&lt;br /&gt;
# Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&lt;br /&gt;
#: [[File:dissolve_delay.png|480px|neuron id]]&lt;br /&gt;
# You will now see a Neuron listed with its ID. Copy the Neuron ID, since you will need it in the next steps to place the necessary proposals.&lt;br /&gt;
#: [[File:Neuron id.png|1024px]]&lt;br /&gt;
&lt;br /&gt;
== 3. Add hotkeys ==&lt;br /&gt;
&lt;br /&gt;
# Select the Neuron you just created to open Neuron management view and press “Add hotkey” button.&lt;br /&gt;
#: [[File:Hotkey 1.png|873x873px]]&lt;br /&gt;
# A dialog will pop up where you can enter the hotkey you generated in step [https://wiki.internetcomputer.org/wiki/Node_Provider_Onboarding#B._Install_dfx_.26_create_Node_Provider_hotkey 1.B.3] (output from command &amp;lt;code&amp;gt;dfx --identity node-provider-hotkey identity get-principal&amp;lt;/code&amp;gt;). This will allow you to submit NNS proposals using &amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; and will not be used for anything else.&amp;lt;br&amp;gt;&lt;br /&gt;
#: Press the &#039;&#039;&#039;confirm&#039;&#039;&#039; button and confirm the transactions on your hardware wallet.&amp;lt;br&amp;gt;&lt;br /&gt;
#: [[File:Hotkey 2.png|899x899px]]&lt;br /&gt;
# Get the Ledger Hardware Wallet Principal Id: Navigate back to ICP page and select your Ledger hardware wallet account. You will need to use this Ledger Hardware Wallet principal as the Node Provider principal in order to get the rewards directly into the secure hardware wallet.&lt;br /&gt;
#: [[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
#: [[File:Node provider principal 2.png|800px]] &lt;br /&gt;
# Copy and save this Node Provider principal by clicking on the copy icon after the principal id. You&#039;ll need it in the next steps. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NODE_PROVIDER_PRINCIPAL=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx   &lt;br /&gt;
# Input ledger Hardware Wallet principal, from the NNS FrontEnd dapp https://nns.ic0.app/&lt;br /&gt;
&lt;br /&gt;
# example: $ NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Choose onboarding path (HSM vs no HSM) ==&lt;br /&gt;
Onboarding &#039;&#039;&#039;without&#039;&#039;&#039; a NitroKey HSM is the recommended onboarding path. If you will not be using a NitroKey HSM, continue to the next step.  &lt;br /&gt;
&lt;br /&gt;
If the legacy procedure is necessary, follow the [[NitroKey HSM onboarding instructions]] and &#039;&#039;&#039;return to step 7.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== 5. Setup the Node Operator keys ==&lt;br /&gt;
# &#039;&#039;&#039;&#039;&#039;Ensure dfx is at least version 0.14.&#039;&#039;&#039;&#039;&#039; Node Operator keys created with older versions of dfx &#039;&#039;&#039;will fail to join the IC&#039;&#039;&#039;.  Run:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dfx upgrade&lt;br /&gt;
$ dfx --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Create a new principal with dfx:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ dfx identity new --storage-mode=plaintext node_operator&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Confirm &amp;lt;code&amp;gt;node_operator&amp;lt;/code&amp;gt; identity was created successfully:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ dfx identity list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This list &#039;&#039;should&#039;&#039; contain &amp;lt;code&amp;gt;node_operator&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Copy new key to a known location:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ cp ~/.config/dfx/identity/node_operator/identity.pem ./node_operator_private_key.pem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Check the contents of the &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; file and double check that it contains the following contents. It is imperative that the first line has &amp;lt;code&amp;gt;-----BEGIN EC PRIVATE KEY-----&amp;lt;/code&amp;gt;. If it does not, make sure you use the latest &amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; version and that you followed the instructions precisely.&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
❯ cat ./node_operator_private_key.pem&lt;br /&gt;
-----BEGIN EC PRIVATE KEY-----&lt;br /&gt;
[3 lines of base64 encoded private key, e.g. n2Nhp68YcQpuS0u96r...]&lt;br /&gt;
-----END EC PRIVATE KEY-----&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. Get the node operator principal ==&lt;br /&gt;
&lt;br /&gt;
# Get the principal:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NODE_OPERATOR_PRINCIPAL=$(dfx --identity node_operator identity get-principal)&lt;br /&gt;
$ echo $NODE_OPERATOR_PRINCIPAL&lt;br /&gt;
&lt;br /&gt;
uqquy-76uhn-2mys5-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;You will need the node operator principal in the next steps.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 7. Register your Node Provider principal to the network ==&lt;br /&gt;
In the next codeblock: &lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_NAME&amp;lt;/code&amp;gt; value with the name of the entity that will provide the nodes.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; value with the Ledger Hardware Wallet principal that you got from the NNS Frontend DAPP (step 3.4)&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; value with your neuron ID from the NNS Frontend Dapp (step 2.7)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;&#039;&#039; Please make sure that you also update the &amp;lt;code&amp;gt;--summary&amp;lt;/code&amp;gt; and include a link to the forum discussion, your company&#039;s web page, and/or to another place that can convince the voting community that you are making a legitimate request. This way you will avoid the community voting NO to your proposal and you losing your staked ICPs.&lt;br /&gt;
&lt;br /&gt;
# Create the Proposal &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
$ NODE_PROVIDER_PRINCIPAL=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
$ NEURON_ID=XXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
$ ./ic-admin \&lt;br /&gt;
        --nns-url https://ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --proposal-title &amp;quot;Register a node provider &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider &#039;${NODE_PROVIDER_NAME}&#039;, in line with the announcement and discussion at https://forum.dfinity.org/t/...&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;$NODE_PROVIDER_PRINCIPAL&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and &#039;&#039;&#039;wait until it is executed before proceeding to next step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 8. Ensure that your datacenter is registered in the network ==&lt;br /&gt;
# Search for your data center on https://dashboard.internetcomputer.org/centers. &lt;br /&gt;
#* If you found the datacenter that is hosting your nodes, remember its ID, and skip the following section. Otherwise, proceed with the registration of a new DC record.&lt;br /&gt;
#: [[File:dc_id.png|1041x1041px|alt=]]&lt;br /&gt;
&lt;br /&gt;
=== Create a data center record for a new DC ===&lt;br /&gt;
In the next block of code:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; value with your neuron ID from the NNS Frontend Dapp (step 2.7)&lt;br /&gt;
* Replace the JSON fields from the &amp;lt;code&amp;gt;–data-centers-to-add&amp;lt;/code&amp;gt; argument and their corresponding values in &amp;lt;code&amp;gt;--summary&amp;lt;/code&amp;gt;:&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt; represents the city that your datacenter is in and is formulated as a combination of two letters representing the city and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. Examples:&lt;br /&gt;
*** dl1 (Dallas, no IDs with “dl” prefix)&lt;br /&gt;
*** zh10 (Zurich, numbers 0-9 are already registered) &lt;br /&gt;
**: [[File:dc_id.png|1024px]]&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt; represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. Examples:&lt;br /&gt;
*** North America,US,Florida&lt;br /&gt;
*** Europe,DE,Bavaria&lt;br /&gt;
*** Asia,SG,Singapore&lt;br /&gt;
**: [[File:datacenter_region.png|1024px]] &lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. &lt;br /&gt;
*** Search https://dashboard.internetcomputer.org for existing data center providers.&lt;br /&gt;
*** If there’s match, make sure you use the same exact some name for your datacenter. &lt;br /&gt;
*** Otherwise, name the data center owner to your best knowledge. &lt;br /&gt;
**: [[File:datacenter_owner.png|1024px]]&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt; GPS coordinates. &lt;br /&gt;
*** Find your datacenter on https://www.google.com/maps/. &lt;br /&gt;
*** Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&lt;br /&gt;
**: [[File:maps.png|310x310px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
# Create the proposal: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NEURON_ID=XXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
$ ./ic-admin \&lt;br /&gt;
        --nns-url https://ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --summary &amp;quot;Register a Flexential datacenter as dl1 in North America,US,Texas&amp;quot; \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;Remember to replace all the values of both the arguments &amp;lt;code&amp;gt;–data-centers-to-add&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--summary&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it&#039;s executed before proceeding to next step.&lt;br /&gt;
&lt;br /&gt;
== 9. Create a node operator record ==&lt;br /&gt;
In the next codeblock:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; value with your neuron ID from the NNS Frontend Dapp (step 2.7).&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; value with the Ledger Hardware Wallet principal that you got from the NNS Frontend DAPP (step 3.4).&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; value with your node operator principal (step 6.1).&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_NAME&amp;lt;/code&amp;gt; value with the name of the entity that will provide the nodes.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_ALLOWANCE&amp;lt;/code&amp;gt; variable value with number of nodes you are providing.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;DC_ID&amp;lt;/code&amp;gt; variable value with id of your datacenter.&lt;br /&gt;
&lt;br /&gt;
# Create the proposal: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NEURON_ID=XXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
$ NODE_PROVIDER_PRINCIPAL=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
$ NODE_OPERATOR_PRINCIPAL=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
$ NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
$ NODE_ALLOWANCE=8&lt;br /&gt;
$ DC_ID=dl1&lt;br /&gt;
&lt;br /&gt;
$ ./ic-admin \&lt;br /&gt;
        --nns-url https://ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        $NODE_PROVIDER_PRINCIPAL \&lt;br /&gt;
        --summary &amp;quot;Node provider &#039;$NODE_PROVIDER_NAME&#039; is adding $NODE_ALLOWANCE nodes in the $DC_ID data center&amp;quot; \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --node-operator-principal-id $NODE_OPERATOR_PRINCIPAL \&lt;br /&gt;
        --node-allowance $NODE_ALLOWANCE \&lt;br /&gt;
        --dc-id $DC_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it&#039;s executed before proceeding to next step.&lt;br /&gt;
&lt;br /&gt;
== 10. Onboard nodes ==&lt;br /&gt;
&lt;br /&gt;
# Follow the instructions to onboard new nodes:&lt;br /&gt;
#* Gen2 - For NP&#039;s onboarding in 2023 and later&lt;br /&gt;
#** [[IC-OS Installation Runbook]]&lt;br /&gt;
#* Gen1 - For NP&#039;s participating in the IC before 2023 &lt;br /&gt;
#**[[IC OS Installation Runbook - PowerEdge R6525]]&lt;br /&gt;
#**[[IC OS Installation Runbook - Supermicro]]&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=5852</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=5852"/>
		<updated>2023-07-04T18:23:22Z</updated>

		<summary type="html">&lt;p&gt;Luis: Fixed reference.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn how to be accepted by the NNS as a Node Provider and onboard your nodes to the IC.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [[Node Provider Machine Hardware Guide]]&lt;br /&gt;
* [[Node Provider Networking Guide]]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM] (Optional, legacy—not recommended)&lt;br /&gt;
* 11 ICP (10 of which are to be staked for the NNS proposal deposit)&lt;br /&gt;
* Basic understanding of [[Neurons 101|neurons]], [https://internetcomputer.org/docs/current/tokenomics/nns/nns-staking-voting-rewards staking], and [[Governance of the Internet Computer|governance]] proposals. For instance, understanding what it means to stake a neuron for 8 years.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Please allocate at least 0.5 day for going through the Node Provider NNS registration (steps 1-9). It may even take a couple of days, depending on how quickly the community votes on your NNS proposals. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the Node Provider NNS registration is complete, you can move on to &#039;&#039;&#039;step 10: Onboard nodes&#039;&#039;&#039;. This step involves you going to the DC and onboarding your nodes. It is much quicker than the Node Provider NNS registration (estimate to spend ~15 minutes per machine). Also, multiple machines can be brought up in parallel.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note that the following steps do not need to be performed on the node machine itself.&#039;&#039;&#039; You can complete them on your personal laptop.&lt;br /&gt;
&lt;br /&gt;
== 1. Install the required tools ==&lt;br /&gt;
===&#039;&#039;&#039; A. Install ic-admin &#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; is the tool used to create and submit NNS proposals.&lt;br /&gt;
&lt;br /&gt;
==== MacOS ====&lt;br /&gt;
# Retrieve the file &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ curl &amp;quot;https://download.dfinity.systems/ic/7445081734e6d896d090295967d50710975c4f25/openssl-static-binaries/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify the binary &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ diff &amp;lt;(shasum -a 256 ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo 3f75026d2f28f171068e332a42c82a2795c93fbf5ab351baef30b30eb901cdba) &amp;amp;&amp;amp; echo &amp;quot;ic-admin checksum matches&amp;quot; || echo &amp;quot;***ERROR***: ic-admin checksum does not match&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
NOTE: The instructions below have been tested with the Ubuntu 20.04 release.&lt;br /&gt;
# Retrieve the file &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ curl &amp;quot;https://download.dfinity.systems/ic/7445081734e6d896d090295967d50710975c4f25/openssl-static-binaries/x86_64-linux/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify the binary &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ diff &amp;lt;(shasum -a 256 ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo e29bb9cc462e800b8b960ad49c412e5f5fdbb5ae2ae9fde0c13058422ba32802) &amp;amp;&amp;amp; echo &amp;quot;ic-admin checksum matches&amp;quot; || echo &amp;quot;***ERROR***: ic-admin checksum does not match&amp;quot; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039; B. Install dfx &amp;amp; create Node Provider hotkey &#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; is used to generate neuron hotkeys, among other things &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ sh -ci &amp;quot;$(curl -fsSL https://smartcontracts.org/install.sh)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify that dfx is up to date. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ export PATH=$HOME/bin:$PATH&lt;br /&gt;
$ dfx upgrade&lt;br /&gt;
$ dfx --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Create an identity for the Node Provider &#039;&#039;&#039;Hotkey&#039;&#039;&#039; &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
# example node-provider-hotkey: wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;You will need the Node Provider hotkey in the next steps.&#039;&#039;&#039; Note: you may be prompted to enter a passphrase when creating your identity and accessing your identity principal. Take note of the passphrase you choose.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The Node Provider hotkey is NOT the Node Provider principal. This is the hotkey that is used for the NNS proposal submissions only.&lt;br /&gt;
&lt;br /&gt;
== 2. Create and Manage Neuron via NNS Frontend Dapp and Internet Identity ==&lt;br /&gt;
&lt;br /&gt;
# Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&lt;br /&gt;
# Send at least 11 ICPs to the hardware wallet address.&lt;br /&gt;
# Navigate to Neurons tab and create a Neuron by staking at least 10 ICP from your hardware wallet. Staking more ICP works as well, but 10 is the minimum.&lt;br /&gt;
# &amp;lt;u&amp;gt;IMPORTANT!&amp;lt;/u&amp;gt; Confirm the transaction on your hardware wallet. &lt;br /&gt;
#:[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&lt;br /&gt;
# After the Neuron has been created successfully, confirm to &amp;quot;Add NNS Dapp as hotkey&amp;quot; in the dialogue and on your hardware wallet, and close the dialog after the action completes.&lt;br /&gt;
#:[[File:-docs-stake_neuron_2.png|1024px|neuron id]]&lt;br /&gt;
# Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&lt;br /&gt;
#: [[File:dissolve_delay.png|480px|neuron id]]&lt;br /&gt;
# You will now see a Neuron listed with its ID. Copy the Neuron ID, since you will need it in the next steps to place the necessary proposals.&lt;br /&gt;
#: [[File:Neuron id.png|1024px]]&lt;br /&gt;
&lt;br /&gt;
== 3. Add hotkeys ==&lt;br /&gt;
&lt;br /&gt;
# Select the Neuron you just created to open Neuron management view and press “Add hotkey” button.&lt;br /&gt;
#: [[File:Hotkey 1.png|873x873px]]&lt;br /&gt;
# A dialog will pop up where you can enter the hotkey you generated in step [https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;amp;veaction=edit#1._Install_the_required_tools 1.B.3] (output from command &amp;lt;code&amp;gt;dfx --identity node-provider-hotkey identity get-principal&amp;lt;/code&amp;gt;). This will allow you to submit NNS proposals using &amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; and will not be used for anything else.&amp;lt;br&amp;gt;&lt;br /&gt;
#: Press the &#039;&#039;&#039;confirm&#039;&#039;&#039; button and confirm the transactions on your hardware wallet.&amp;lt;br&amp;gt;&lt;br /&gt;
#: [[File:Hotkey 2.png|899x899px]]&lt;br /&gt;
# Get the Ledger Hardware Wallet Principal Id: Navigate back to ICP page and select your Ledger hardware wallet account. You will need to use this Ledger Hardware Wallet principal as the Node Provider principal in order to get the rewards directly into the secure hardware wallet.&lt;br /&gt;
#: [[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
#: [[File:Node provider principal 2.png|800px]] &lt;br /&gt;
# Copy and save this Node Provider principal by clicking on the copy icon after the principal id. You&#039;ll need it in the next steps. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NODE_PROVIDER_PRINCIPAL=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx   &lt;br /&gt;
# Input ledger Hardware Wallet principal, from the NNS FrontEnd dapp https://nns.ic0.app/&lt;br /&gt;
&lt;br /&gt;
# example: $ NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Choose onboarding path (HSM vs no HSM) ==&lt;br /&gt;
Onboarding &#039;&#039;&#039;without&#039;&#039;&#039; a NitroKey HSM is the recommended onboarding path. If you will not be using a NitroKey HSM, continue to the next step.  &lt;br /&gt;
&lt;br /&gt;
If the legacy procedure is necessary, follow the [[NitroKey HSM onboarding instructions]] and &#039;&#039;&#039;return to step 7.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== 5. Setup the Node Operator keys ==&lt;br /&gt;
# &#039;&#039;&#039;&#039;&#039;Ensure dfx is at least version 0.14.&#039;&#039;&#039;&#039;&#039; Node Operator keys created with older versions of dfx &#039;&#039;&#039;will fail to join the IC&#039;&#039;&#039;.  Run:&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ dfx upgrade&lt;br /&gt;
$ dfx --version&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Create a new principal with dfx:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ dfx identity new --storage-mode=plaintext node_operator&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Confirm &amp;lt;code&amp;gt;node_operator&amp;lt;/code&amp;gt; identity was created successfully:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ dfx identity list&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;This list &#039;&#039;should&#039;&#039; contain &amp;lt;code&amp;gt;node_operator&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Copy new key to a known location:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ cp ~/.config/dfx/identity/node_operator/identity.pem ./node_operator_private_key.pem&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Check the contents of the &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; file and double check that it contains the following contents. It is imperative that the first line has &amp;lt;code&amp;gt;-----BEGIN EC PRIVATE KEY-----&amp;lt;/code&amp;gt;. If it does not, make sure you use the latest &amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; version and that you followed the instructions precisely.&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
❯ cat ./node_operator_private_key.pem&lt;br /&gt;
-----BEGIN EC PRIVATE KEY-----&lt;br /&gt;
[3 lines of base64 encoded private key, e.g. n2Nhp68YcQpuS0u96r...]&lt;br /&gt;
-----END EC PRIVATE KEY-----&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. Get the node operator principal ==&lt;br /&gt;
&lt;br /&gt;
# Get the principal:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NODE_OPERATOR_PRINCIPAL=$(dfx --identity node_operator identity get-principal)&lt;br /&gt;
$ echo $NODE_OPERATOR_PRINCIPAL&lt;br /&gt;
&lt;br /&gt;
uqquy-76uhn-2mys5-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;You will need the node operator principal in the next steps.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 7. Register your Node Provider principal to the network ==&lt;br /&gt;
In the next codeblock: &lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_NAME&amp;lt;/code&amp;gt; value with the name of the entity that will provide the nodes.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; value with the Ledger Hardware Wallet principal that you got from the NNS Frontend DAPP (step 3.4)&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; value with your neuron ID from the NNS Frontend Dapp (step 2.7)&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;&#039;&#039; Please make sure that you also update the &amp;lt;code&amp;gt;--summary&amp;lt;/code&amp;gt; and include a link to the forum discussion, your company&#039;s web page, and/or to another place that can convince the voting community that you are making a legitimate request. This way you will avoid the community voting NO to your proposal and you losing your staked ICPs.&lt;br /&gt;
&lt;br /&gt;
# Create the Proposal &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
$ NODE_PROVIDER_PRINCIPAL=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
$ NEURON_ID=XXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
$ ./ic-admin \&lt;br /&gt;
        --nns-url https://ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --proposal-title &amp;quot;Register a node provider &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider &#039;${NODE_PROVIDER_NAME}&#039;, in line with the announcement and discussion at https://forum.dfinity.org/t/...&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;$NODE_PROVIDER_PRINCIPAL&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and &#039;&#039;&#039;wait until it is executed before proceeding to next step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 8. Ensure that your datacenter is registered in the network ==&lt;br /&gt;
# Search for your data center on https://dashboard.internetcomputer.org/centers. &lt;br /&gt;
#* If you found the datacenter that is hosting your nodes, remember its ID, and skip the following section. Otherwise, proceed with the registration of a new DC record.&lt;br /&gt;
#: [[File:dc_id.png|1041x1041px|alt=]]&lt;br /&gt;
&lt;br /&gt;
=== Create a data center record for a new DC ===&lt;br /&gt;
In the next block of code:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; value with your neuron ID from the NNS Frontend Dapp (step 2.7)&lt;br /&gt;
* Replace the JSON fields from the &amp;lt;code&amp;gt;–data-centers-to-add&amp;lt;/code&amp;gt; argument and their corresponding values in &amp;lt;code&amp;gt;--summary&amp;lt;/code&amp;gt;:&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt; represents the city that your datacenter is in and is formulated as a combination of two letters representing the city and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. Examples:&lt;br /&gt;
*** dl1 (Dallas, no IDs with “dl” prefix)&lt;br /&gt;
*** zh10 (Zurich, numbers 0-9 are already registered) &lt;br /&gt;
**: [[File:dc_id.png|1024px]]&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt; represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. Examples:&lt;br /&gt;
*** North America,US,Florida&lt;br /&gt;
*** Europe,DE,Bavaria&lt;br /&gt;
*** Asia,SG,Singapore&lt;br /&gt;
**: [[File:datacenter_region.png|1024px]] &lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. &lt;br /&gt;
*** Search https://dashboard.internetcomputer.org for existing data center providers.&lt;br /&gt;
*** If there’s match, make sure you use the same exact some name for your datacenter. &lt;br /&gt;
*** Otherwise, name the data center owner to your best knowledge. &lt;br /&gt;
**: [[File:datacenter_owner.png|1024px]]&lt;br /&gt;
** &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt; GPS coordinates. &lt;br /&gt;
*** Find your datacenter on https://www.google.com/maps/. &lt;br /&gt;
*** Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&lt;br /&gt;
**: [[File:maps.png|310x310px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
# Create the proposal: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NEURON_ID=XXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
$ ./ic-admin \&lt;br /&gt;
        --nns-url https://ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --summary &amp;quot;Register a Flexential datacenter as dl1 in North America,US,Texas&amp;quot; \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&#039;&#039;&#039;Remember to replace all the values of both the arguments &amp;lt;code&amp;gt;–data-centers-to-add&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--summary&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it&#039;s executed before proceeding to next step.&lt;br /&gt;
&lt;br /&gt;
== 9. Create a node operator record ==&lt;br /&gt;
In the next codeblock:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; value with your neuron ID from the NNS Frontend Dapp (step 2.7).&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; value with the Ledger Hardware Wallet principal that you got from the NNS Frontend DAPP (step 3.4).&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; value with your node operator principal (step 6.1).&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_NAME&amp;lt;/code&amp;gt; value with the name of the entity that will provide the nodes.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_ALLOWANCE&amp;lt;/code&amp;gt; variable value with number of nodes you are providing.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;DC_ID&amp;lt;/code&amp;gt; variable value with id of your datacenter.&lt;br /&gt;
&lt;br /&gt;
# Create the proposal: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NEURON_ID=XXXXXXXXXXXXXXXXXXXX&lt;br /&gt;
$ NODE_PROVIDER_PRINCIPAL=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
$ NODE_OPERATOR_PRINCIPAL=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
$ NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
$ NODE_ALLOWANCE=8&lt;br /&gt;
$ DC_ID=dl1&lt;br /&gt;
&lt;br /&gt;
$ ./ic-admin \&lt;br /&gt;
        --nns-url https://ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        $NODE_PROVIDER_PRINCIPAL \&lt;br /&gt;
        --summary &amp;quot;Node provider &#039;$NODE_PROVIDER_NAME&#039; is adding $NODE_ALLOWANCE nodes in the $DC_ID data center&amp;quot; \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --node-operator-principal-id $NODE_OPERATOR_PRINCIPAL \&lt;br /&gt;
        --node-allowance $NODE_ALLOWANCE \&lt;br /&gt;
        --dc-id $DC_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it&#039;s executed before proceeding to next step.&lt;br /&gt;
&lt;br /&gt;
== 10. Onboard nodes ==&lt;br /&gt;
&lt;br /&gt;
# Follow the instructions to onboard new nodes:&lt;br /&gt;
#* Gen2 - For NP&#039;s onboarding in 2023 and later&lt;br /&gt;
#** [[IC-OS Installation Runbook]]&lt;br /&gt;
#* Gen1 - For NP&#039;s participating in the IC before 2023 &lt;br /&gt;
#**[[IC OS Installation Runbook - PowerEdge R6525]]&lt;br /&gt;
#**[[IC OS Installation Runbook - Supermicro]]&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=4080</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=4080"/>
		<updated>2023-01-10T14:40:29Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.internetcomputer.org/wiki/Node_provider_hardware Node Hardware]&lt;br /&gt;
* Rack space with a 10Gb connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /28 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of which are to be staked for the NNS proposal deposit)&lt;br /&gt;
* Basic understanding of neurons, staking, and governance proposals. For instance, understanding what it means to stake a neuron for 8 years.&lt;br /&gt;
* The technical knowledge to understand some minor steps that are not explicitly mentioned in these instructions. For instance, when to insert an HSM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Please allocate at least 0.5 day for going through the first part, i.e., the registration of a new NP. It may even take a couple of days, depending on how quickly the community votes for the proposals. There is a also fair amount of complexity and the technical knowledge that needs to be absorbed in order to complete the steps. But this only needs to be done once.&amp;lt;br&amp;gt;&lt;br /&gt;
The next step, going to the DC and bringing up and onboarding the machines, is much quicker. Estimate to spend 10-15 minutes per machine. This time should go down to ~5 minutes as you gain experience. Also, multiple machines can be brought up in parallel.&lt;br /&gt;
&lt;br /&gt;
== I. Install the required tools ==&lt;br /&gt;
===&#039;&#039;&#039; A. Install ic-admin &#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; is the tool used to create and submit NNS proposals.&lt;br /&gt;
&lt;br /&gt;
==== MacOS ====&lt;br /&gt;
# Retrieve the file &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
curl &amp;quot;https://download.dfinity.systems/blessed/ic/53beba22533576ef0f5823befd04db4e72f8a347/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
chmod +x ./ic-admin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify the binary &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
diff &amp;lt;(shasum -a 256 ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo faeedb3531fd0f84b7eeee83e9e62b01170e0f88cad48cbdf0e2e9366738d050) &amp;amp;&amp;amp; echo &amp;quot;ic-admin checksum matches&amp;quot; || echo &amp;quot;***ERROR***: ic-admin checksum does not match&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify that the version is 1.0 or greater &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
./ic-admin --version&lt;br /&gt;
ic-admin 1.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
NOTE: The instructions below have been tested with the Ubuntu 20.04 release.&lt;br /&gt;
# Retrieve the file &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
curl &amp;quot;https://download.dfinity.systems/ic/53beba22533576ef0f5823befd04db4e72f8a347/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
chmod +x ./ic-admin &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify the binary &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
diff &amp;lt;(shasum -a 256 ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo 35dc34b7c162dc447139ac16344ea2caafbbe8894838c24f88a4fa7e5999dfdb) &amp;amp;&amp;amp; echo &amp;quot;ic-admin checksum matches&amp;quot; || echo &amp;quot;***ERROR***: ic-admin checksum does not match&amp;quot; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify that the version is 1.0 or greater &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
./ic-admin --version&lt;br /&gt;
ic-admin 1.0 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039; B. Install dfx &#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; allows generating a neuron hotkey, among other things &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ DFX_VERSION=0.9.3 sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify that the version is 0.9.3 &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ export PATH=$HOME/bin:$PATH&lt;br /&gt;
$ dfx --version dfx 0.9.3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Create an identity for the Node Provider &#039;&#039;&#039;Hotkey&#039;&#039;&#039; &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ dfx identity new node-provider-hotkey&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Note:&#039;&#039;&#039; The node provider hotkey is NOT the node provider principal. This is the hotkey that is used for the NNS proposal submissions only.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== II. Create and Manage Neuron via NNS Frontend Dapp and Internet Identity ==&lt;br /&gt;
&lt;br /&gt;
# Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&lt;br /&gt;
# Send at least 11 ICPs to the hardware wallet address.&lt;br /&gt;
# Navigate to Neurons tab and create a Neuron by staking at least 10 ICP from your hardware wallet. Staking more ICP works as well, but 10 is the minimum.&lt;br /&gt;
# IMPORTANT! Confirm the transaction on your hardware wallet. &lt;br /&gt;
#: [[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&lt;br /&gt;
#: &lt;br /&gt;
# After the Neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes.&lt;br /&gt;
#: [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&lt;br /&gt;
# Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&lt;br /&gt;
#:&lt;br /&gt;
#: [[File:dissolve_delay.png|480px|neuron id]]&lt;br /&gt;
# You will now see a Neuron listed with its ID. Copy the Neuron ID, since you will need it in the next steps to place the necessary proposals.&lt;br /&gt;
#: [[File:Neuron id.png|1024px]]&lt;br /&gt;
&lt;br /&gt;
== III. Add hotkeys ==&lt;br /&gt;
&lt;br /&gt;
# Select the Neuron you just created to open Neuron management view and press “Add hotkey” button.&lt;br /&gt;
#: [[File:Hotkey 1.png|800px]]&lt;br /&gt;
# A dialog will pop up where you can enter the principal you generated in step 2 (output from command &amp;lt;code&amp;gt;dfx --identity node-provider-hotkey identity get-principal&amp;lt;/code&amp;gt;). This will allow you to submit NNS proposals using &amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; and will not be used for anything else.&amp;lt;br&amp;gt;&lt;br /&gt;
#:Press the confirm button and confirm the transactions on your hardware wallet.&amp;lt;br&amp;gt;&lt;br /&gt;
#: [[File:Hotkey 2.png|800px]]&lt;br /&gt;
#:&lt;br /&gt;
# Get the Ledger Hardware Wallet Principal Id: Navigate back to ICP page and select your Ledger hardware wallet account. You will need to use this Ledger Hardware Wallet principal as the Node Provider principal in order to get the rewards directly into the secure hardware wallet.&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
# Copy and save this Node Provider principal by clicking on the copy icon after the principal id. You&#039;ll need it in the next steps. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae   # Ledger Hardware Wallet principal, from the NNS FrontEnd dapp https://nns.ic0.app/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IV. Configure your HSM ==&lt;br /&gt;
It&#039;s first necessary to install the necessary tools.&lt;br /&gt;
&lt;br /&gt;
=== MacOS ===&lt;br /&gt;
# Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&lt;br /&gt;
# Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&lt;br /&gt;
# If your system doesn&#039;t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
#* Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&lt;br /&gt;
#* Click the lock Icon to unlock it, then enter an administrator name and password.&lt;br /&gt;
#* Ensure that you&#039;re on the tab named “General”.&lt;br /&gt;
#* You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&lt;br /&gt;
# Click continue and install until the installation is complete.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
NOTE: The instructions below have been tested with the Ubuntu 20.04 release.&lt;br /&gt;
&lt;br /&gt;
# Install pcscd and opensc&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo add-apt-repository universe&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install pcscd opensc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== V. Setup the HSM ==&lt;br /&gt;
&lt;br /&gt;
# Initialize the HSM. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Change the HSM so-pin. &lt;br /&gt;
#* &#039;&#039;&#039;WARNING:&#039;&#039;&#039; The new HSM so pin must have 16 hexadecimal digits. This is not very well known, and some HSM users have lost access to a Nitrokey HSM because they tried using regular characters and the command below accepted it. &lt;br /&gt;
#* &#039;&#039;&#039;Do NOT change the user pin. It must remain as the default for the onboarding scripts to work&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Create a keypair on the HSM. Enter the default pin 358138 when prompted. &lt;br /&gt;
#* &#039;&#039;&#039;Note:&#039;&#039;&#039; Before initializing the HSM key please refer to the [https://docs.nitrokey.com/pro/openpgp.html Nitrokey HSM documentation] if you wish to create a backup. Creating a backup of the HSM device is NOT possible after the key has already been created. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VI. Get the node operator principal from the HSM ==&lt;br /&gt;
# Configure dfx identity (skip this step if you already configured it for an other HSM).&lt;br /&gt;
#* &#039;&#039;&#039;Note:&#039;&#039;&#039; Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different on your platform. You can locate the correct path with the following command: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* MacOS &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
dfx identity new node-operator-hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#*  Linux &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
dfx identity new node-operator-hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Get the principal. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NODE_OPERATOR_PRINCIPAL=$(DFX_HSM_PIN=358138 dfx --identity node-operator-hsm identity get-principal)&lt;br /&gt;
$ echo $NODE_OPERATOR_PRINCIPAL&lt;br /&gt;
&lt;br /&gt;
uqquy-76uhn-2mys5-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VII. Register your NP principal to the network ==&lt;br /&gt;
&lt;br /&gt;
In the next codeblock: &lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; value with your neuron ID from the NNS Frontend Dapp&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; value with the Ledger Hardware Wallet principal that you got from the NNS Frontend DAPP.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_NAME&amp;lt;/code&amp;gt; value with the name of the entity that will provide the nodes.&amp;lt;br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;&#039;&#039; Please make sure that you also update the &amp;lt;code&amp;gt;--summary&amp;lt;/code&amp;gt; and include a link to the forum discussion, your company&#039;s web page, and/or to another place that can convince the voting community that you are making a legitimate request. This way you will avoid the community voting NO to your proposal and you losing the staked ICPs.&lt;br /&gt;
&lt;br /&gt;
# Create the Proposal &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae   # Ledger Hardware Wallet principal, from the NNS FE dapp https://ic0.app/&lt;br /&gt;
NEURON_ID=13419667327548602649  # Coming from the NNS FrontEnd dapp https://nns.ic0.app/&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --proposal-title &amp;quot;Register a node provider &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider &#039;${NODE_PROVIDER_NAME}&#039;, in line with the announcement and discussion at https://forum.dfinity.org/t/...&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;$NODE_PROVIDER_PRINCIPAL&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and &#039;&#039;&#039;wait until it is executed before proceeding to next step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VIII. Ensure that your datacenter is registered in the network ==&lt;br /&gt;
# Search for your data center on https://dashboard.internetcomputer.org/centers. &lt;br /&gt;
#* If you found the datacenter that is hosting your nodes, remember its ID, and skip the following section. Otherwise, proceed with the registration of a new DC. [[File:dc_id.png|1024px]]&lt;br /&gt;
&lt;br /&gt;
=== Create a data center record for a new DC ===&lt;br /&gt;
In the next block of code:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your Neuron ID from the NNS Frontend Dapp. &lt;br /&gt;
* Replace the JSON fields from &amp;lt;code&amp;gt;–data-centers-to-add&amp;lt;/code&amp;gt; argument and their corresponding values in &amp;lt;code&amp;gt;--summary&amp;lt;/code&amp;gt; with: &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. Examples:&lt;br /&gt;
** dl1 (Dallas, no IDs with “dl” prefix)&lt;br /&gt;
** zh10 (Zurich, numbers 0-9 are already registered) &lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt; represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. Examples:&lt;br /&gt;
** North America,US,Florida&lt;br /&gt;
** Europe,DE,Bavaria&lt;br /&gt;
** Asia,SG,Singapore&lt;br /&gt;
[[File:datacenter_region.png|1024px]] &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. &lt;br /&gt;
** Search https://dashboard.internetcomputer.org for existing data center providers. &lt;br /&gt;
** If there’s match, make sure you use the same exact some name for your datacenter. &lt;br /&gt;
** Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt; GPS coordinates. &lt;br /&gt;
** Find your datacenter on https://www.google.com/maps/. &lt;br /&gt;
** Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Create the proposal: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NEURON_ID=13419667327548602649  # Coming from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
$ ./ic-admin \&lt;br /&gt;
        --nns-url https://ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --summary &amp;quot;Register a Flexential datacenter as dl1 in North America,US,Texas&amp;quot; \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it&#039;s executed before proceeding to next step.&lt;br /&gt;
&lt;br /&gt;
== IX. Create a node operator record ==&lt;br /&gt;
In the next codeblock:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; variable value with your neuron ID obtained from the NNS frontend dapp.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the Ledger Hardware Wallet principal obtained from the NNS frontend dapp.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;DC_ID&amp;lt;/code&amp;gt; variable value with id of your datacenter.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_ALLOWANCE&amp;lt;/code&amp;gt; variable value with number of nodes you are providing.&lt;br /&gt;
&lt;br /&gt;
# Create the proposal: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NEURON_ID=13419667327548602649  # Coming from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae   # Ledger Hardware Wallet principal, from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=$(DFX_HSM_PIN=358138 dfx --identity node-operator-hsm identity get-principal)&lt;br /&gt;
NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
NODE_ALLOWANCE=28&lt;br /&gt;
DC_ID=dl1&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        $NODE_PROVIDER_PRINCIPAL \&lt;br /&gt;
        --summary &amp;quot;Node provider &#039;$NODE_PROVIDER_NAME&#039; is adding $NODE_ALLOWANCE nodes in the $DC_ID data center&amp;quot; \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --node-operator-principal-id $NODE_OPERATOR_PRINCIPAL \&lt;br /&gt;
        --node-allowance $NODE_ALLOWANCE \&lt;br /&gt;
        --dc-id $DC_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it&#039;s executed before proceeding to next step.&lt;br /&gt;
&lt;br /&gt;
== X. Onboard nodes ==&lt;br /&gt;
&lt;br /&gt;
# Follow the instructions to onboard new nodes.&lt;br /&gt;
#* [[IC OS Installation Runbook - PowerEdge R6525]]&lt;br /&gt;
#* [[IC OS Installation Runbook - Supermicro]]&lt;br /&gt;
# Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”, or by checking the output from &amp;lt;code&amp;gt;ic-admin get-topology&amp;lt;/code&amp;gt; command.&lt;br /&gt;
#* The internal dashboard can be searched by your provider principal.&lt;br /&gt;
[[File:onboarded_nodes.png|1024px|onboarded nodes]]&lt;br /&gt;
&lt;br /&gt;
== XI. Set the reward configuration for your nodes ==&lt;br /&gt;
In the next codeblock:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; variable value with your neuron ID obtained from the NNS frontend dapp.&amp;lt;br&amp;gt;&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;&amp;lt;NODE_X_PRINCIPAL&amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals.&amp;lt;br&amp;gt;&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;&amp;lt;number-of-nodes&amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&lt;br /&gt;
* Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NEURON_ID=13419667327548602649  # Coming from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=$(DFX_HSM_PIN=358138 dfx --identity node-operator-hsm identity get-principal)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --summary &amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;lt;NODE_1_PRINCIPAL&amp;gt;&lt;br /&gt;
        * &amp;lt;NODE_2_PRINCIPAL&amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;quot; \&lt;br /&gt;
        --node-operator-id $NODE_OPERATOR_PRINCIPAL \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;quot;type0&amp;quot;: &amp;lt;number-of-nodes&amp;gt;}&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
* &#039;&#039;&#039;The Internet Computer project website (hosted on the IC): [https://internetcomputer.org/ internetcomputer.org]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=3129</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=3129"/>
		<updated>2022-09-16T14:19:52Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.internetcomputer.org/wiki/Node_provider_hardware Node Hardware]&lt;br /&gt;
* Rack space with a 10Gb connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of which are to be staked for the NNS proposal deposit)&lt;br /&gt;
* Basic understanding of neurons, staking, and governance proposals. For instance, understanding what it means to stake a neuron for 8 years.&lt;br /&gt;
* The technical knowledge to understand some minor steps that are not explicitly mentioned in these instructions. For instance, when to insert an HSM.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Please allocate at least 0.5 day for going through the first part, i.e., the registration of a new NP. It may even take a couple of days, depending on how quickly the community votes for the proposals. There is a also fair amount of complexity and the technical knowledge that needs to be absorbed in order to complete the steps. But this only needs to be done once.&amp;lt;br&amp;gt;&lt;br /&gt;
The next step, going to the DC and bringing up and onboarding the machines, is much quicker. Estimate to spend 10-15 minutes per machine. This time should go down to ~5 minutes as you gain experience. Also, multiple machines can be brought up in parallel.&lt;br /&gt;
&lt;br /&gt;
== I. Install the required tools ==&lt;br /&gt;
===&#039;&#039;&#039; A. Install ic-admin &#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; is the tool used to create and submit NNS proposals.&lt;br /&gt;
&lt;br /&gt;
==== MacOS ====&lt;br /&gt;
# Retrieve the file &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
curl &amp;quot;https://download.dfinity.systems/blessed/ic/40877a86674b24161c2306c6534b872c51533954/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
chmod +x ./ic-admin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify the binary &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
diff &amp;lt;(shasum -a 256 ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo 16d955092b697f3abda99f54dafb9e9181a67805d1330a4b8b34b8586a7f1401) &amp;amp;&amp;amp; echo &amp;quot;ic-admin checksum matches&amp;quot; || echo &amp;quot;***ERROR***: ic-admin checksum does not match&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify that the version is 1.0 or greater &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
./ic-admin --version&lt;br /&gt;
ic-admin 1.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
NOTE: The instructions below have been tested with the Ubuntu 20.04 release.&lt;br /&gt;
# Retrieve the file &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt; curl &amp;quot;https://download.dfinity.systems/blessed/ic/40877a86674b24161c2306c6534b872c51533954/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify the binary &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
diff &amp;lt;(shasum -a 256 ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo 26942a0cd7f89bc0ffbd01287d88b63e333889c67ac9d27e435e57ddd4d211cb) &amp;amp;&amp;amp; echo &amp;quot;ic-admin checksum matches&amp;quot; || echo &amp;quot;***ERROR***: ic-admin checksum does not match&amp;quot; &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify that the version is 1.0 or greater &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
./ic-admin --version&lt;br /&gt;
ic-admin 1.0 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039; B. Install dfx &#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; allows generating a neuron hotkey, among other things &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ DFX_VERSION=0.9.3 sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Verify that the version is 0.9.3 &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ export PATH=$HOME/bin:$PATH&lt;br /&gt;
$ dfx --version dfx 0.9.3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Create an identity for the Node Provider &#039;&#039;&#039;Hotkey&#039;&#039;&#039; &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ dfx identity new node-provider-hotkey&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Note:&#039;&#039;&#039; The node provider hotkey is NOT the node provider principal. This is the hotkey that is used for the NNS proposal submissions only.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== II. Create and Manage Neuron via NNS Frontend Dapp and Internet Identity ==&lt;br /&gt;
&lt;br /&gt;
# Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&lt;br /&gt;
# Send at least 11 ICPs to the hardware wallet address.&lt;br /&gt;
# Navigate to Neurons tab and create a Neuron by staking at least 10 ICP from your hardware wallet. Staking more ICP works as well, but 10 is the minimum.&lt;br /&gt;
# IMPORTANT! Confirm the transaction on your hardware wallet. &lt;br /&gt;
#: [[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&lt;br /&gt;
#: &lt;br /&gt;
# After the Neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes.&lt;br /&gt;
#: [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&lt;br /&gt;
# Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&lt;br /&gt;
#:&lt;br /&gt;
#: [[File:dissolve_delay.png|480px|neuron id]]&lt;br /&gt;
# You will now see a Neuron listed with its ID. Copy the Neuron ID, since you will need it in the next steps to place the necessary proposals.&lt;br /&gt;
#: [[File:Neuron id.png|1024px]]&lt;br /&gt;
&lt;br /&gt;
== III. Add hotkeys ==&lt;br /&gt;
&lt;br /&gt;
# Select the Neuron you just created to open Neuron management view and press “Add hotkey” button.&lt;br /&gt;
#: [[File:Hotkey 1.png|800px]]&lt;br /&gt;
# A dialog will pop up where you can enter the principal you generated in step 2 (output from command &amp;lt;code&amp;gt;dfx --identity node-provider-hotkey identity get-principal&amp;lt;/code&amp;gt;). This will allow you to submit NNS proposals using &amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; and will not be used for anything else.&amp;lt;br&amp;gt;&lt;br /&gt;
#:Press the confirm button and confirm the transactions on your hardware wallet.&amp;lt;br&amp;gt;&lt;br /&gt;
#: [[File:Hotkey 2.png|800px]]&lt;br /&gt;
#:&lt;br /&gt;
# Get the Ledger Hardware Wallet Principal Id: Navigate back to ICP page and select your Ledger hardware wallet account. You will need to use this Ledger Hardware Wallet principal as the Node Provider principal in order to get the rewards directly into the secure hardware wallet.&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
# Copy and save this Node Provider principal by clicking on the copy icon after the principal id. You&#039;ll need it in the next steps. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae   # Ledger Hardware Wallet principal, from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IV. Configure your HSM ==&lt;br /&gt;
It&#039;s first necessary to install the necessary tools.&lt;br /&gt;
&lt;br /&gt;
=== MacOS ===&lt;br /&gt;
# Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&lt;br /&gt;
# Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&lt;br /&gt;
# If your system doesn&#039;t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
#* Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&lt;br /&gt;
#* Click the lock Icon to unlock it, then enter an administrator name and password.&lt;br /&gt;
#* Ensure that you&#039;re on the tab named “General”.&lt;br /&gt;
#* You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&lt;br /&gt;
# Click continue and install until the installation is complete.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
NOTE: The instructions below have been tested with the Ubuntu 20.04 release.&lt;br /&gt;
&lt;br /&gt;
# Install pcscd and opensc&lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sudo add-apt-repository universe&lt;br /&gt;
sudo apt update&lt;br /&gt;
sudo apt install pcscd opensc&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== V. Setup the HSM ==&lt;br /&gt;
&lt;br /&gt;
# Initialize the HSM. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Change the HSM so-pin. &lt;br /&gt;
#* &#039;&#039;&#039;WARNING:&#039;&#039;&#039; The new HSM so pin must have 16 hexadecimal digits. This is not very well known, and some HSM users have lost access to a Nitrokey HSM because they tried using regular characters and the command below accepted it. &lt;br /&gt;
#* &#039;&#039;&#039;Do NOT change the user pin. It must remain as the default for the onboarding scripts to work&#039;&#039;&#039;&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Create a keypair on the HSM. Enter the default pin 358138 when prompted. &lt;br /&gt;
#* &#039;&#039;&#039;Note:&#039;&#039;&#039; Before initializing the HSM key please refer to the [https://docs.nitrokey.com/pro/openpgp.html Nitrokey HSM documentation] if you wish to create a backup. Creating a backup of the HSM device is NOT possible after the key has already been created. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VI. Get the node operator principal from the HSM ==&lt;br /&gt;
# Configure dfx identity (skip this step if you already configured it for an other HSM).&lt;br /&gt;
#* &#039;&#039;&#039;Note:&#039;&#039;&#039; Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different on your platform. You can locate the correct path with the following command: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#* MacOS &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
dfx identity new node-operator-hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#*  Linux &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
dfx identity new node-operator-hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Get the principal. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
$ NODE_OPERATOR_PRINCIPAL=$(DFX_HSM_PIN=358138 dfx --identity node-operator-hsm identity get-principal)&lt;br /&gt;
$ echo $NODE_OPERATOR_PRINCIPAL&lt;br /&gt;
&lt;br /&gt;
uqquy-76uhn-2mys5-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VII. Register your NP principal to the network ==&lt;br /&gt;
&lt;br /&gt;
In the next codeblock: &lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; value with your neuron ID from the NNS Frontend Dapp&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; value with the Ledger Hardware Wallet principal that you got from the NNS Frontend DAPP.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_NAME&amp;lt;/code&amp;gt; value with the name of the entity that will provide the nodes.&amp;lt;br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&#039;&#039;IMPORTANT:&#039;&#039;&#039;&#039;&#039; Please make sure that you also update the &amp;lt;code&amp;gt;--summary&amp;lt;/code&amp;gt; and include a link to the forum discussion, your company&#039;s web page, and/or to another place that can convince the voting community that you are making a legitimate request. This way you will avoid the community voting NO to your proposal and you losing the staked ICPs.&lt;br /&gt;
&lt;br /&gt;
# Create the Proposal &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae   # Ledger Hardware Wallet principal, from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
NEURON_ID=13419667327548602649  # Coming from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --proposal-title &amp;quot;Register a node provider &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider &#039;${NODE_PROVIDER_NAME}&#039;, in line with the announcement and discussion at https://forum.dfinity.org/t/...&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;$NODE_PROVIDER_PRINCIPAL&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and &#039;&#039;&#039;wait until it is executed before proceeding to next step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== VIII. Ensure that your datacenter is registered in the network ==&lt;br /&gt;
# Search for your data center on https://dashboard.internetcomputer.org/centers. &lt;br /&gt;
#* If you found the datacenter that is hosting your nodes, remember its ID, and skip the following section. Otherwise, proceed with the registration of a new DC. [[File:dc_id.png|1024px]]&lt;br /&gt;
&lt;br /&gt;
=== Create a data center record for a new DC ===&lt;br /&gt;
In the next block of code:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your Neuron ID from the NNS Frontend Dapp. &lt;br /&gt;
* Replace the JSON fields from &amp;lt;code&amp;gt;–data-centers-to-add&amp;lt;/code&amp;gt; argument and their corresponding values in &amp;lt;code&amp;gt;--summary&amp;lt;/code&amp;gt; with: &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. Examples:&lt;br /&gt;
** dl1 (Dallas, no IDs with “dl” prefix)&lt;br /&gt;
** zh10 (Zurich, numbers 0-9 are already registered) &lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt; represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. Examples:&lt;br /&gt;
** North America,US,Florida&lt;br /&gt;
** Europe,DE,Bavaria&lt;br /&gt;
** Asia,SG,Singapore&lt;br /&gt;
[[File:datacenter_region.png|1024px]] &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. &lt;br /&gt;
** Search https://dashboard.internetcomputer.org for existing data center providers. &lt;br /&gt;
** If there’s match, make sure you use the same exact some name for your datacenter. &lt;br /&gt;
** Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt; GPS coordinates. &lt;br /&gt;
** Find your datacenter on https://www.google.com/maps/. &lt;br /&gt;
** Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Create the proposal: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NEURON_ID=13419667327548602649  # Coming from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --summary &amp;quot;Register a Flexential datacenter as dl1 in North America,US,Texas&amp;quot; \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it&#039;s executed before proceeding to next step.&lt;br /&gt;
&lt;br /&gt;
== IX. Create a node operator record ==&lt;br /&gt;
In the next codeblock:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; variable value with your neuron ID obtained from the NNS frontend dapp.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the Ledger Hardware Wallet principal obtained from the NNS frontend dapp.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;DC_ID&amp;lt;/code&amp;gt; variable value with id of your datacenter.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODE_ALLOWANCE&amp;lt;/code&amp;gt; variable value with number of nodes you are providing.&lt;br /&gt;
&lt;br /&gt;
# Create the proposal: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NEURON_ID=13419667327548602649  # Coming from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae   # Ledger Hardware Wallet principal, from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=$(DFX_HSM_PIN=358138 dfx --identity node-operator-hsm identity get-principal)&lt;br /&gt;
NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
NODE_ALLOWANCE=28&lt;br /&gt;
DC_ID=dl1&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        $NODE_PROVIDER_PRINCIPAL \&lt;br /&gt;
        --summary &amp;quot;Node provider &#039;$NODE_PROVIDER_NAME&#039; is adding $NODE_ALLOWANCE nodes in the $DC_ID data center&amp;quot; \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --node-operator-principal-id $NODE_OPERATOR_PRINCIPAL \&lt;br /&gt;
        --node-allowance $NODE_ALLOWANCE \&lt;br /&gt;
        --dc-id $DC_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it&#039;s executed before proceeding to next step.&lt;br /&gt;
&lt;br /&gt;
== X. Configure firewall rules ==&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; It is only necessary to update the firewall rules if you are adding a new DC, with a new IPv6 prefix, to the Internet Computer. If you need to do this:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; variable value with your neuron ID obtained from the NNS frontend dapp.&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes. &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NEURON_ID=13419667327548602649  # Coming from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=$(DFX_HSM_PIN=358138 dfx --identity node-operator-hsm identity get-principal)&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&lt;br /&gt;
&lt;br /&gt;
== XI. Onboard nodes ==&lt;br /&gt;
&lt;br /&gt;
# Follow the instructions to onboard new nodes.&lt;br /&gt;
#* [[IC OS Installation Runbook - PowerEdge R6525]]&lt;br /&gt;
#* [[IC OS Installation Runbook - Supermicro]]&lt;br /&gt;
# Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”, or by checking the output from &amp;lt;code&amp;gt;ic-admin get-topology&amp;lt;/code&amp;gt; command.&lt;br /&gt;
#* The internal dashboard can be searched by your provider principal.&lt;br /&gt;
[[File:onboarded_nodes.png|1024px|onboarded nodes]]&lt;br /&gt;
&lt;br /&gt;
== XII. Set the reward configuration for your nodes ==&lt;br /&gt;
In the next codeblock:&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;NEURON_ID&amp;lt;/code&amp;gt; variable value with your neuron ID obtained from the NNS frontend dapp.&amp;lt;br&amp;gt;&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;&amp;lt;NODE_X_PRINCIPAL&amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals.&amp;lt;br&amp;gt;&lt;br /&gt;
* Replace the &amp;lt;code&amp;gt;&amp;lt;number-of-nodes&amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&lt;br /&gt;
* Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;&lt;br /&gt;
NEURON_ID=13419667327548602649  # Coming from the NNS FE dapp https://nns.ic0.app/&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=$(DFX_HSM_PIN=358138 dfx --identity node-operator-hsm identity get-principal)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer $NEURON_ID \&lt;br /&gt;
        --summary &amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;lt;NODE_1_PRINCIPAL&amp;gt;&lt;br /&gt;
        * &amp;lt;NODE_2_PRINCIPAL&amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;quot; \&lt;br /&gt;
        --node-operator-id $NODE_OPERATOR_PRINCIPAL \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;quot;type0&amp;quot;: &amp;lt;number-of-nodes&amp;gt;}&#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Internet_Computer_wiki&amp;diff=2337</id>
		<title>Internet Computer wiki</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Internet_Computer_wiki&amp;diff=2337"/>
		<updated>2022-05-23T12:40:36Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Welcome!==&lt;br /&gt;
&lt;br /&gt;
This is a general source of information about the &#039;&#039;&#039;Internet Computer (IC)&#039;&#039;&#039;, the world&#039;s fastest and most powerful blockchain network&amp;lt;ref&amp;gt;https://medium.com/dfinity/the-internet-computers-transaction-speed-and-finality-outpace-other-l1-blockchains-8e7d25e4b2ef&amp;lt;/ref&amp;gt;. Created for and by the IC community, topics vary from cryptography, network governance, user experience, tokenomics, developer tutorials and more.&lt;br /&gt;
&lt;br /&gt;
==Introduction to the Internet Computer==&lt;br /&gt;
The Internet computer is the fastest and most scalable general-purpose blockchain. It was launched as an open source project by [https://dfinity.org/ DFINITY] in May 2021 with the aim of realising a blockchain singularity through hosting dapps, content, and performing computation for billions of users. In building the Internet Computer there have been a number of notable technological developments in cryptography ([https://medium.com/dfinity/chain-key-technology-one-public-key-for-the-internet-computer-6a3644901e28 chain-key cryptography]), programming languages such as [https://wiki.internetcomputer.org/wiki/Motoko Motoko] and others. &lt;br /&gt;
&lt;br /&gt;
===Most common place to start===&lt;br /&gt;
* [https://dfinity.org/icig.pdf Internet Computer: Infographic]&lt;br /&gt;
* [https://internetcomputer.org/education#online-courses/ Internet Computer: Online Courses]&lt;br /&gt;
* [[Glossary]]&lt;br /&gt;
&lt;br /&gt;
===For a general audience===&lt;br /&gt;
* [[Internet Computer overview]]&lt;br /&gt;
* [[Internet Computer vision]]&lt;br /&gt;
* [https://dfinity.org/roadmap/ Internet Computer roadmap]&lt;br /&gt;
&lt;br /&gt;
===For a more technical audience===&lt;br /&gt;
* [https://eprint.iacr.org/2022/087 &amp;quot;Internet Computer for Geeks&amp;quot; paper]&lt;br /&gt;
* [https://www.reddit.com/r/dfinity/comments/ozboyi/megathread_technical_amas/ Technical AMAs on Reddit by different IC and DFINITY teams]&lt;br /&gt;
&lt;br /&gt;
== Internet Identity Introduction == &lt;br /&gt;
One of the core benefits of building on the Internet Computer is that end users do not need to pay fees or use tokens to access and use dapps. As an alternative to authenticating from a wallet, users can authenticate with an Internet Identity. Learn more information about Internet Identity (II), a blockchain authentication framework supported by the Internet Computer:&lt;br /&gt;
&lt;br /&gt;
* [[What is Internet Identity]]&lt;br /&gt;
* [[Internet Identity for dapp users]]&lt;br /&gt;
* [[Internet Identity technical overview]]&lt;br /&gt;
* [https://identity.ic0.app/ Create an Internet Identity]&lt;br /&gt;
&lt;br /&gt;
==IC for Dapp Users ==&lt;br /&gt;
&lt;br /&gt;
If you use or are interested in using dapps on the Internet Computer, this section will help you understand the user experience benefits of the IC, how to use Internet Identity, or find more IC dapps.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* [[Introduction to the Internet Computer for dapp users]]&lt;br /&gt;
* [[Index of dapps on the Internet Computer]]&lt;br /&gt;
&lt;br /&gt;
See more in [[Internet Computer for dapp users]]&lt;br /&gt;
&lt;br /&gt;
== IC for ICP Token-holders, Stakers, and Neuron Holders==&lt;br /&gt;
&lt;br /&gt;
The Internet Computer is governed by on-chain governance system called the Network Nervous System (NNS). To participate on governance, users need to stake ICP tokens. This section will explain how the NNS works, ICP tokens, staking, voting, rewards, and options for managing one&#039;s ICP.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* [[ICP token]]&lt;br /&gt;
* [[Tutorials for acquiring, managing, and staking ICP]]&lt;br /&gt;
* [[Staking, voting and rewards]]&lt;br /&gt;
* [[Governance of the Internet Computer]]&lt;br /&gt;
* [[Network Nervous System]]&lt;br /&gt;
* [[Total supply, circulating supply, and staked_ICP]]&lt;br /&gt;
&lt;br /&gt;
See more in [[Internet Computer token-holders, investors, and neuron holders]].&lt;br /&gt;
&lt;br /&gt;
== IC for Smart Contract and Dapp Developers ==&lt;br /&gt;
&lt;br /&gt;
The Internet Computer (IC) is a new platform for executing smart contracts. This section contains information for developers, including links to documentation, developer forums, and relevant dashboards.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* [[Canisters (dapps/smart contracts)]]&lt;br /&gt;
* [https://smartcontracts.org/ Developer documentation on smartcontract.org]&lt;br /&gt;
* [https://forum.dfinity.org/ IC community developer forum]&lt;br /&gt;
&amp;lt;!--* [[Index of libraries for Internet Computer development]]--&amp;gt;&lt;br /&gt;
&amp;lt;!--* [[Best practices for a high traffic dapp launch]]--&amp;gt;&lt;br /&gt;
* [[Bitcoin integration]]&lt;br /&gt;
&lt;br /&gt;
See more in [[Internet Computer for smart contract and dapp developers]].&lt;br /&gt;
&lt;br /&gt;
== IC for the Curious, Researchers and Blockchain Enthusiasts ==&lt;br /&gt;
&lt;br /&gt;
This section is for those interested in how the Internet Computer works under the hood. It touches many different subject areas from cryptography, consensus protocols, virtual machines, operating systems, networking, distributed systems, etc.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* [https://dfinity.org/howitworks/ How the Internet Computer Works]&lt;br /&gt;
* [https://dashboard.internetcomputer.org/ Internet Computer dashboard] &lt;br /&gt;
* [[Internet Computer performance]]&lt;br /&gt;
* [[DFINITY Foundation]]&lt;br /&gt;
* [[Bitcoin integration]]&lt;br /&gt;
&lt;br /&gt;
See more in [[Internet Computer for researchers and blockchain enthusiasts]].&lt;br /&gt;
&lt;br /&gt;
== For Node Providers == &lt;br /&gt;
Node providers invest in and operate node hardware, which powers the Internet Computer with processing and storage capacity. Running these nodes in data centers provides the high performance and the cost-effectiveness of the Internet Computer. Every node provider is allowed a limited amount of nodes.&lt;br /&gt;
* [[Node Provider Onboarding]]&lt;br /&gt;
* [[IC OS Installation Runbook - Supermicro]]&lt;br /&gt;
* [[IC OS Installation Runbook - Dell Poweredge]]&lt;br /&gt;
&lt;br /&gt;
== Technical Working Groups == &lt;br /&gt;
* [[Identity &amp;amp; Authentication]]&lt;br /&gt;
* [[Developer Tooling]]&lt;br /&gt;
* [[Ledger &amp;amp; Tokenization]]&lt;br /&gt;
&lt;br /&gt;
== FAQs, Tutorials, and How-tos==&lt;br /&gt;
Tutorials are guided introductions to user stories, intended for first-time users and characterized by a shallow learning curve. How-Tos are step-by-step instructions for specific, narrow goals.&lt;br /&gt;
&lt;br /&gt;
===FAQs===&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Example:&lt;br /&gt;
* [[Managing ICP holdings]]&lt;br /&gt;
* [[Managing Internet Identity]]&lt;br /&gt;
* [[Maximizing Voting and NNS Rewards]] &lt;br /&gt;
See more in [[Best Practices]]&lt;br /&gt;
&lt;br /&gt;
=== Tutorials ===&lt;br /&gt;
Example:&lt;br /&gt;
* [[Tutorials for acquiring, managing, and staking ICP]]&lt;br /&gt;
* [[How-To: Claim neurons for seed participants]]&lt;br /&gt;
* [[How-To: Create an NNS motion proposal]]&lt;br /&gt;
* [[How-To: Set your neuron to follow another neuron]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See more in [[How-Tos]].&lt;br /&gt;
&lt;br /&gt;
==Contributing to the Wiki==&lt;br /&gt;
&lt;br /&gt;
=== How to contribute ===&lt;br /&gt;
Anyone can read the wiki. You can also edit pages, all you need to do is [https://wiki.internetcomputer.org/wiki/Special:CreateAccount create an account]. See more in [[Contributing to the wiki]].&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2257</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2257"/>
		<updated>2022-04-28T11:06:07Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of for proposal deposit) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 11 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 11 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 358138 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument and their corresponding values in --summary with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --summary &amp;quot;Register a Flexential datacenter as dl1 in North America,US,Texas&amp;quot; \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.4., &amp;lt;code&amp;gt;DC_ID&amp;lt;/code&amp;gt; variable value with id of your datacenter from step 6, &amp;lt;code&amp;gt;NODE_ALLOWANCE&amp;lt;/code&amp;gt; variable value with number of nodes you&#039;re providing, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2, &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; variable value with your node provider principal from step 3.5.2., and &amp;lt;code&amp;gt;NODE_PROVIDER_NAME&amp;lt;/code&amp;gt; variable value with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&lt;br /&gt;
NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
NODE_ALLOWANCE=28&lt;br /&gt;
DC_ID=dl1&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        $NODE_PROVIDER_PRINCIPAL \&lt;br /&gt;
        --summary &amp;quot;Node provider &#039;$NODE_PROVIDER_NAME&#039; is adding $NODE_ALLOWANCE nodes in the $DC_ID data center&amp;quot; \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --node-operator-principal-id $NODE_OPERATOR_PRINCIPAL \&lt;br /&gt;
        --node-allowance $NODE_ALLOWANCE \&lt;br /&gt;
        --dc-id $DC_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2256</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2256"/>
		<updated>2022-04-28T10:55:44Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of for proposal deposit) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 11 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 358138 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument and their corresponding values in --summary with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --summary &amp;quot;Register a Flexential datacenter as dl1 in North America,US,Texas&amp;quot; \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.4., &amp;lt;code&amp;gt;DC_ID&amp;lt;/code&amp;gt; variable value with id of your datacenter from step 6, &amp;lt;code&amp;gt;NODE_ALLOWANCE&amp;lt;/code&amp;gt; variable value with number of nodes you&#039;re providing, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2, &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; variable value with your node provider principal from step 3.5.2., and &amp;lt;code&amp;gt;NODE_PROVIDER_NAME&amp;lt;/code&amp;gt; variable value with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&lt;br /&gt;
NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
NODE_ALLOWANCE=28&lt;br /&gt;
DC_ID=dl1&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        $NODE_PROVIDER_PRINCIPAL \&lt;br /&gt;
        --summary &amp;quot;Node provider &#039;$NODE_PROVIDER_NAME&#039; is adding $NODE_ALLOWANCE nodes in the $DC_ID data center&amp;quot; \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --node-operator-principal-id $NODE_OPERATOR_PRINCIPAL \&lt;br /&gt;
        --node-allowance $NODE_ALLOWANCE \&lt;br /&gt;
        --dc-id $DC_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2255</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2255"/>
		<updated>2022-04-28T10:55:06Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of for proposal deposit) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 11 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 358138 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument and their corresponding values in --summary with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --summary &amp;quot;Register a Flexential datacenter as dl1 in North America,US,Texas&amp;quot; \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.4., &amp;lt;code&amp;gt;DC_ID&amp;lt;/code&amp;gt; variable value with id of your datacenter from step 6, &amp;lt;code&amp;gt;NODE_ALLOWANCE&amp;lt;/code&amp;gt; variable value with number of nodes you&#039;re providing, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2, &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; variable value with your node provider principal from step 3.5.2., and &amp;lt;code&amp;gt;NODE_PROVIDER_NAME&amp;lt;/code&amp;gt; variable value with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
NODE_PROVIDER_PRINCIPAL=fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&lt;br /&gt;
NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
NODE_ALLOWANCE=28&lt;br /&gt;
DC_ID=dl1&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        $NODE_PROVIDER_PRINCIPAL \&lt;br /&gt;
        --summary &amp;quot;Node provider &#039;$NODE_PROVIDER_NAME&#039; is adding $NODE_ALLOWANCE nodes in the $DC_ID data center&amp;quot; \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --node-operator-principal-id $NODE_OPERATOR_PRINCIPAL \&lt;br /&gt;
        --node-allowance $NODE_ALLOWANCE \&lt;br /&gt;
        --dc-id $DC_ID&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2254</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2254"/>
		<updated>2022-04-28T10:52:41Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of for proposal deposit) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 11 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 358138 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument and their corresponding values in --summary with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --summary &amp;quot;Register a Flexential datacenter as dl1 in North America,US,Texas&amp;quot; \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.4., &amp;lt;code&amp;gt;DC_ID&amp;lt;/code&amp;gt; variable value with id of your datacenter from step 6, &amp;lt;code&amp;gt;NODE_ALLOWANCE&amp;lt;/code&amp;gt; variable value with number of nodes you&#039;re providing, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2, &amp;lt;code&amp;gt;NODE_PROVIDER_PRINCIPAL&amp;lt;/code&amp;gt; variable value with your node provider principal from step 3.5.2., and &amp;lt;code&amp;gt;NODE_PROVIDER_NAME&amp;lt;/code&amp;gt; variable value with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2253</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2253"/>
		<updated>2022-04-28T10:50:27Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of for proposal deposit) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 11 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 358138 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument and their corresponding values in --summary with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --summary &amp;quot;Register a Flexential datacenter as dl1 in North America,US,Texas&amp;quot; \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.4., `DC_ID` variable value with id of your datacenter from step 6, `NODE_ALLOWANCE` variable value with number of nodes you&#039;re providing, `NODE_OPERATOR_PRINCIPAL` variable value with the principal from step 4.3.2, `NODE_PROVIDER_PRINCIPAL` variable value with your node provider principal from step 3.5.2., and `NODE_PROVIDER_NAME` variable value with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2252</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2252"/>
		<updated>2022-04-28T10:45:54Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of for proposal deposit) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 11 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 358138 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument and their corresponding values in --summary with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --summary &amp;quot;Register a Flexential datacenter as dl1 in North America,US,Texas&amp;quot; \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2251</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2251"/>
		<updated>2022-04-28T10:45:16Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of for proposal deposit) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 11 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 358138 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument and their corresponding values in --summary with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2249</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2249"/>
		<updated>2022-04-26T15:54:14Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of for proposal deposit) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 11 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 358138 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2248</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2248"/>
		<updated>2022-04-26T15:53:47Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
* 11 ICP (10 of for proposal deposit) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 358138 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2247</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2247"/>
		<updated>2022-04-26T15:52:09Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 358138&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 358138 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2238</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2238"/>
		<updated>2022-04-21T18:59:45Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7/ NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2237</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2237"/>
		<updated>2022-04-21T18:53:52Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* Rack space with a 10GB connectivity, RJ45 terminated on the nodes&lt;br /&gt;
* Public /29 IPv4 range and /64 IPv6 range&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2236</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2236"/>
		<updated>2022-04-21T18:50:16Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed. Note: The current maximum number of nodes per node operator are 28.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2235</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2235"/>
		<updated>2022-04-21T18:43:37Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2234</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2234"/>
		<updated>2022-04-21T18:06:42Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2233</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2233"/>
		<updated>2022-04-21T18:06:17Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a Node Provider and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_PowerEdge_R6525 For Dell Servers]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;[https://wiki.internetcomputer.org/wiki/IC_OS_Installation_Runbook_-_Supermicro For Supermicro Servers&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2232</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2232"/>
		<updated>2022-04-21T18:02:35Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;For Dell Servers&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;For Supermicro Servers&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2231</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2231"/>
		<updated>2022-04-21T17:59:40Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;For Dell Servers&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;For Supermicro Servers&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2230</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2230"/>
		<updated>2022-04-21T17:57:45Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
**For Dell Servers&lt;br /&gt;
**For Supermicro Servers&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2229</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2229"/>
		<updated>2022-04-21T17:57:07Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&lt;br /&gt;
**For Dell Servers&lt;br /&gt;
**For Supermicro Servers&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2228</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2228"/>
		<updated>2022-04-21T17:56:06Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;For Dell Servers&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;For Supermicro Servers&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2227</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2227"/>
		<updated>2022-04-21T17:55:29Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;li&amp;gt;For Dell Servers&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;For Supermicro Servers&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2226</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2226"/>
		<updated>2022-04-21T17:54:10Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to onboard new nodes.&amp;lt;/p&amp;gt;&amp;lt;li&amp;gt;For Dell Servers&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;For Supermicro Servers&amp;lt;/li&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Datacenter_region.png&amp;diff=2225</id>
		<title>File:Datacenter region.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Datacenter_region.png&amp;diff=2225"/>
		<updated>2022-04-21T17:40:04Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Datacenter region&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Maps.png&amp;diff=2224</id>
		<title>File:Maps.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Maps.png&amp;diff=2224"/>
		<updated>2022-04-21T17:39:39Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Maps&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Datacenter_owner.png&amp;diff=2223</id>
		<title>File:Datacenter owner.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Datacenter_owner.png&amp;diff=2223"/>
		<updated>2022-04-21T17:39:23Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Datacenter owner&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Onboarded_nodes.png&amp;diff=2222</id>
		<title>File:Onboarded nodes.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Onboarded_nodes.png&amp;diff=2222"/>
		<updated>2022-04-21T17:39:09Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Onboarded nodes&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2221</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2221"/>
		<updated>2022-04-21T17:35:52Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:dc_id.png|1024px]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:datacenter_region.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:datacenter_owner.png|1024px]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:maps.png|480px|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:onboarded_nodes.png|1024px|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2220</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2220"/>
		<updated>2022-04-21T17:31:25Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:dc_id.png|1024px]]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Dc_id.png&amp;diff=2219</id>
		<title>File:Dc id.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Dc_id.png&amp;diff=2219"/>
		<updated>2022-04-21T17:30:35Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;dc_id&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2218</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2218"/>
		<updated>2022-04-21T17:26:19Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Node_provider_principal_2.png&amp;diff=2217</id>
		<title>File:Node provider principal 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Node_provider_principal_2.png&amp;diff=2217"/>
		<updated>2022-04-21T17:26:01Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;node_provider_principal_2&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2216</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2216"/>
		<updated>2022-04-21T17:24:18Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Node provider principal 1.png|1024px]]&lt;br /&gt;
[[File:/docs/node_provider_principal_1.png|hardware wallet account]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. [[File:/docs/node_provider_principal_2.png|hardware wallet account]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Node_provider_principal_1.png&amp;diff=2215</id>
		<title>File:Node provider principal 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Node_provider_principal_1.png&amp;diff=2215"/>
		<updated>2022-04-21T17:24:07Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;node_provider_principal_1&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2214</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2214"/>
		<updated>2022-04-21T17:22:23Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 2.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. [[File:/docs/node_provider_principal_1.png|hardware wallet account]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. [[File:/docs/node_provider_principal_2.png|hardware wallet account]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Hotkey_2.png&amp;diff=2213</id>
		<title>File:Hotkey 2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Hotkey_2.png&amp;diff=2213"/>
		<updated>2022-04-21T17:22:02Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hotkey_2&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2212</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2212"/>
		<updated>2022-04-21T17:21:02Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button.&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:Hotkey 1.png|800px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. [[File:/docs/hotkey_2.png|confirm hotkey]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. [[File:/docs/node_provider_principal_1.png|hardware wallet account]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. [[File:/docs/node_provider_principal_2.png|hardware wallet account]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Hotkey_1.png&amp;diff=2211</id>
		<title>File:Hotkey 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Hotkey_1.png&amp;diff=2211"/>
		<updated>2022-04-21T17:20:39Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;hotkey_1&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2210</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2210"/>
		<updated>2022-04-21T17:19:06Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button. [[File:/docs/hotkey_1.png|add hotkey button]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. [[File:/docs/hotkey_2.png|confirm hotkey]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. [[File:/docs/node_provider_principal_1.png|hardware wallet account]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. [[File:/docs/node_provider_principal_2.png|hardware wallet account]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2209</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2209"/>
		<updated>2022-04-21T17:18:33Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button. [[File:/docs/hotkey_1.png|add hotkey button]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. [[File:/docs/hotkey_2.png|confirm hotkey]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. [[File:/docs/node_provider_principal_1.png|hardware wallet account]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. [[File:/docs/node_provider_principal_2.png|hardware wallet account]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2208</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2208"/>
		<updated>2022-04-21T17:17:59Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|1024px]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button. [[File:/docs/hotkey_1.png|add hotkey button]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. [[File:/docs/hotkey_2.png|confirm hotkey]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. [[File:/docs/node_provider_principal_1.png|hardware wallet account]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. [[File:/docs/node_provider_principal_2.png|hardware wallet account]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2207</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2207"/>
		<updated>2022-04-21T17:16:55Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. &lt;br /&gt;
[[File:Neuron id.png|thumb]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button. [[File:/docs/hotkey_1.png|add hotkey button]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. [[File:/docs/hotkey_2.png|confirm hotkey]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. [[File:/docs/node_provider_principal_1.png|hardware wallet account]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. [[File:/docs/node_provider_principal_2.png|hardware wallet account]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Neuron_id.png&amp;diff=2206</id>
		<title>File:Neuron id.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Neuron_id.png&amp;diff=2206"/>
		<updated>2022-04-21T17:16:51Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;neuron_id&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2205</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2205"/>
		<updated>2022-04-21T17:15:19Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;&lt;br /&gt;
[[File:dissolve_delay.png|480px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. [[File:dissolve_delay.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button. [[File:/docs/hotkey_1.png|add hotkey button]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. [[File:/docs/hotkey_2.png|confirm hotkey]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. [[File:/docs/node_provider_principal_1.png|hardware wallet account]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. [[File:/docs/node_provider_principal_2.png|hardware wallet account]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2204</id>
		<title>Node Provider Onboarding</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=2204"/>
		<updated>2022-04-21T17:14:36Z</updated>

		<summary type="html">&lt;p&gt;Luis: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span id=&amp;quot;becoming-a-node-provider&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
= Becoming a Node Provider =&lt;br /&gt;
&lt;br /&gt;
To participate in the Internet Computer network as a [[TODO:%20link|Node Provider]] and receive the rewards for supporting the network.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;requirements&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* [https://support.internetcomputer.org/hc/en-us/articles/4402245887764-What-are-the-Hardware-Requirements-to-be-a-Node-Provider- Node Hardware]&lt;br /&gt;
* [https://www.ledger.com/ Hardware wallet]&lt;br /&gt;
* [https://shop.nitrokey.com/shop/product/nkhs2-nitrokey-hsm-2-7 NitroKey HSM]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;setup&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the required tools&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;ic-admin&amp;lt;/code&amp;gt; to enable you to create proposals&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/nix-release/x86_64-darwin/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo da20f751b705de5a75a370fa9d2c5f09e553abaa8893692104fb260b247d336d)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the version&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Download ic-admin (TODO: change to same version as above and update sha256sum)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ curl &amp;quot;https://download.dfinity.systems/blessed/ic/0ef2aebde4ff735a1a93efa342dcf966b6df5061/release/ic-admin.gz&amp;quot; -o - | gunzip &amp;gt; ./ic-admin&lt;br /&gt;
$ chmod +x ./ic-admin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify the binary&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diff &amp;lt;(sha256sum ./ic-admin | cut -d&#039; &#039; -f1) &amp;lt;(echo c5bf9996dd009d1eeb22c59f77ee881d4044cd8c8a040204bfc95a9b21f085f2)&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 1.0 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin --version&lt;br /&gt;
&lt;br /&gt;
ic-admin 1.0&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;dfx&amp;lt;/code&amp;gt; to enable you to generate a neuron hotkey&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install dfx&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ sh -ci &amp;quot;$(curl -fsSL https://sdk.dfinity.org/install.sh)&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that the version is 0.8.1 or greater&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx --version&lt;br /&gt;
&lt;br /&gt;
dfx 0.8.1&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a wallet hotkey principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ dfx identity new node-provider-hotkey&lt;br /&gt;
&lt;br /&gt;
Creating identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
Created identity: &amp;quot;node-provider-hotkey&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
$ dfx --identity node-provider-hotkey identity get-principal&lt;br /&gt;
&lt;br /&gt;
wuyst-x5tpn-g5wri-mp3ps-vjtba-de3xs-w5xgb-crvek-tucbe-o5rqi-mae&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create and Manage Neuron via NNS Dapp and Internet Identity&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Setup your hardware wallet: https://medium.com/dfinity/integrating-ledger-nano-with-the-nns-front-end-dapp-user-manual-9c5600925e16&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Send at least 2 ICPs to the hardware wallet address.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a neuron&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate to Neurons tab and create a Neuron by staking 1 ICP from your hardware wallet, and confirming the transaction on your hardware wallet. &lt;br /&gt;
[[File:-docs-stake_neuron_1.png|1024px|stake neuron]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;After the neuron has been created successfully, confirm to add NNS Dapp as hotkey in the dialogue and on your hardware wallet, and close the dialog after the action completes. [[File:-docs-stake_neuron_2.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set the dissolve delay to at least 6 months, and confirm the choice in the dialogue and on your hardware wallet. After the action completes, you can close the &amp;quot;Follow Neurons&amp;quot;&lt;br /&gt;
[[File:dissolve_delay.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You will now see a neuron listed with its ID. You’ll need the neuron ID in the next steps to place the necessary proposals. [[File:dissolve_delay.png|1024px|neuron id]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Add a hotkey&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the neuron you just created to open neuron management view and press “Add hotkey” button. [[File:/docs/hotkey_1.png|add hotkey button]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;A dialog will pop up where you can enter the principal you generated in step 2.2. Press the confirm button and confirm the transactions on your hardware wallet. [[File:/docs/hotkey_2.png|confirm hotkey]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Get the hardware principal id&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Navigate back to ICP page and select your hardware wallet account. [[File:/docs/node_provider_principal_1.png|hardware wallet account]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Here you can get your node provider principal by clicking on the copy icon after the principal id. You’ll need it in the next steps. [[File:/docs/node_provider_principal_2.png|hardware wallet account]]&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure your HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install the necessary tools:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download this OpenSC binary: https://github.com/OpenSC/OpenSC/releases/download/0.22.0/OpenSC-0.22.0.dmg&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Double click the DMG image that you downloaded and then double click the OpenSC PKG file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If your system doesn’t allow the installation software from an unidentified developer please follow these steps or contact your system administrator:&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the Apple menu &amp;amp;gt; System Preferences &amp;amp;gt; click Security and Privacy.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click the lock Icon to unlock it, then enter an administrator name and password.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Ensure that you’re on the tab named “General”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;You should see the OpenSC app and you should be able to enable its installation by choosing “Open anyway”.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click continue and install until the installation is complete.&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Install pcscd and opensc&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo apt install pcscd opensc&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Setup the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Initialize the HSM&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sc-hsm-tool --initialize --so-pin 3537363231383830 --pin 648219&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Change the HSM so pin&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool --login --login-type so --so-pin 3537363231383830 --change-pin&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a keypair on the HSM. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;pkcs11-tool -k --key-type EC:prime256v1 --login -d 01&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the node operator principal&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure dfx identity (skip this step if you already configured it for an other HSM).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;p&amp;gt;Warning: Depending on your installation, the path to the &amp;lt;code&amp;gt;--hsm-pkcs11-lib-path&amp;lt;/code&amp;gt; might be different. You can locate it with the following command:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;find / -name opensc-pkcs11.so 2&amp;gt; /dev/null&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;MacOS:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /Library/OpenSC/lib/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Linux:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;dfx identity new hsm --hsm-key-id 01 --hsm-pkcs11-lib-path /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Get the principal. Enter the default pin 648219 when prompted.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ echo -n PIN:; read -s DFX_HSM_PIN; export DFX_HSM_PIN; echo; dfx --identity hsm identity get-principal; unset DFX_HSM_PIN&lt;br /&gt;
&lt;br /&gt;
PIN:&lt;br /&gt;
uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Register your NP principal to the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-provider-pid&amp;lt;/code&amp;gt; with your NP principal from step 3.5.2, and ‘My Company’, with the name of the entity that will provide the nodes.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;NODE_PROVIDER_NAME=&amp;quot;My Company&amp;quot;&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-node-provider add \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --title &amp;quot;Register &#039;${NODE_PROVIDER_NAME}&#039; node provider&amp;quot; \&lt;br /&gt;
        --summary &amp;quot;Register a node provider for &#039;${NODE_PROVIDER_NAME}&#039;&amp;quot; \&lt;br /&gt;
        --node-provider-pid &amp;quot;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Ensure that your datacenter is registered in the network&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Search for your data center on https://dashboard.internetcomputer.org/centers. If you found the datacenter that’s hosting your nodes, remember its ID, and skip to step 7. Otherwise, proceed to the next step. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a data center record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3. and JSON fields from –data-centers-to-add argument with:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;id&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The ID should be combination of two letters representing a city that your datacenter is in, and an incrementing number. Search data center IDs on https://dashboard.internetcomputer.org, and find a combination of two letters and a number that’s not yet registered. [[File:/docs/dc_id.png|dc id]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;dl1 (Dallas, no IDs with “dl” prefix)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;zh10 (Zurich, numbers 0-9 are already registered)&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;region&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Region represents the local region of a datacenter and is formulated as a three-part string divided by commas. The three parts making the string are continent, country code, and region, in the given order. [[File:/docs/datacenter_region.png|datacenter region]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Examples:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;North America,US,Florida&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Europe,DE,Bavaria&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Asia,SG,Singapore&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;owner&amp;amp;quot;&amp;lt;/code&amp;gt; The entity that provides your datacenter facilities. Search https://dashboard.internetcomputer.org for existing data center providers. If there’s match, make sure you use the same exact some name for your datacenter. Otherwise, name the data center owner to your best knowledge. [[File:/docs/datacenter_owner.png|datacenter owner]]&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &amp;lt;code&amp;gt;&amp;amp;quot;gps&amp;amp;quot;&amp;lt;/code&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find your datacenter on https://www.google.com/maps/. Right click on location, and select the GPS coordinates (first item in the menu) in order to copy them.&amp;lt;/p&amp;gt;&lt;br /&gt;
[[File:/docs/maps.png|thumb|none|alt=Getting GPS coordinates|Getting GPS coordinates]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-or-remove-data-centers \&lt;br /&gt;
        --skip-confirmation \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --data-centers-to-add &#039;{&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;dl1&amp;quot;,&lt;br /&gt;
            &amp;quot;region&amp;quot;: &amp;quot;North America,US,Texas&amp;quot;,&lt;br /&gt;
            &amp;quot;owner&amp;quot;: &amp;quot;Flexential&amp;quot;,&lt;br /&gt;
            &amp;quot;gps&amp;quot;: [&lt;br /&gt;
                33.00803, -96.66614&lt;br /&gt;
            ]&lt;br /&gt;
        }&#039;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Create a node operator record&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--dc-id&amp;lt;/code&amp;gt; argument with id of your datacenter from step 6, &amp;lt;code&amp;gt;--node-allowance&amp;lt;/code&amp;gt; argument with number of nodes you’re providing, &amp;lt;code&amp;gt;--node-operator-principal-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, and the first positional argument (&amp;lt;code&amp;gt;fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae&amp;lt;/code&amp;gt;) with your node provider principal from step 3.5.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-add-node-operator \&lt;br /&gt;
        fharn-5vyi2-4xb4a-64yyi-3jpmj-pga23-mxy25-d5uim-fqcro-eoefh-tae \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --node-operator-principal-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --node-allowance 28 \&lt;br /&gt;
        --dc-id dl2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Configure firewall rules&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;PROPOSER&amp;lt;/code&amp;gt; variable value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;NODES_IPV6_PREFIX&amp;lt;/code&amp;gt; variable value with IPv6 prefix of the network of your nodes, &amp;lt;code&amp;gt;NODE_OPERATOR_PRINCIPAL&amp;lt;/code&amp;gt; variable value with the principal from step 4.3.2.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;PROPOSER=13419667327548602649&lt;br /&gt;
NODES_IPV6_PREFIX=2001:4d78:700:10a::/64&lt;br /&gt;
NODE_OPERATOR_PRINCIPAL=uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe&lt;br /&gt;
&lt;br /&gt;
NFTABLES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | grep &amp;quot;firewall_config&amp;quot; | cut -d&#039;:&#039; -f2 | cut -c2- | rev | cut -c2- | rev | xargs printf)&lt;br /&gt;
IPV6_PREFIXES=$(./ic-admin --nns-url &amp;quot;https://nns.ic0.app&amp;quot; get-firewall-config | tr -d &#039;\n&#039; | grep -oE &#039;ipv6_prefixes: \[[^]]+&#039; | cut -d&#039;[&#039; -f2 | tr -d &#039;&amp;quot;&#039; | tr -d &#039; &#039; | tr -d &#039;\n&#039;; echo $NODES_IPV6_PREFIX)&lt;br /&gt;
&lt;br /&gt;
./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-set-firewall-config \&lt;br /&gt;
        --proposer $PROPOSER \&lt;br /&gt;
        --summary &amp;quot;Set the firewall rules for node operator ${NODE_OPERATOR_PRINCIPAL}&amp;quot; \&lt;br /&gt;
        &amp;lt;(echo $NFTABLES) \&lt;br /&gt;
        - \&lt;br /&gt;
        $IPV6_PREFIXES&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Find the proposal on https://dashboard.internetcomputer.org/governance and wait until it’s executed before proceeding to next step.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Onboard nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type: decimal;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Follow the instructions to [[TODO:%20link%20to%20the%20new%20wiki%20page%20which%20will%20have%20contents%20of%20these%20two%20docs:%20https://docs.google.com/presentation/d/1H6J3LKkgphKC_GRrBrltEsbWSA3kJcTfkzRt9sTovkc/edit,%20https://docs.google.com/presentation/d/1FSzh_eHIDd0w-YCRfEQSTlfoSSut3IIVoZgj-eiT8Bs|onboard new nodes]].&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Verify that all the nodes were successfully onboarded by checking their status on the dashboard is set to either “Up” or “Unassigned”. You can find all your nodes by entering your node provider principal from step 3.5.2. in the search bar. [[File:/docs/onboarded_nodes.png|onboarded nodes]]&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;Set the reward configuration for your nodes&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Replace the &amp;lt;code&amp;gt;--proposer&amp;lt;/code&amp;gt; argument value with your neuron ID from step 3.1.3., &amp;lt;code&amp;gt;--node-operator-id&amp;lt;/code&amp;gt; argument with the principal from step 4.3.2, &amp;lt;code&amp;gt;&amp;amp;lt;NODE_X_PRINCIPAL&amp;amp;gt;&amp;lt;/code&amp;gt; placeholders with your node principals from step 9.2., and &amp;lt;code&amp;gt;&amp;amp;lt;number-of-nodes&amp;amp;gt;&amp;lt;/code&amp;gt; placeholder with the number of nodes you listed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;$ ./ic-admin \&lt;br /&gt;
        --nns-url https://nns.ic0.app \&lt;br /&gt;
        -s ~/.config/dfx/identity/node-provider-hotkey/identity.pem \&lt;br /&gt;
    propose-to-update-node-operator-config \&lt;br /&gt;
        --proposer 13419667327548602649 \&lt;br /&gt;
        --summary &amp;amp;quot;Set rewards for the following nodes:&lt;br /&gt;
&lt;br /&gt;
        * &amp;amp;lt;NODE_1_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * &amp;amp;lt;NODE_2_PRINCIPAL&amp;amp;gt;&lt;br /&gt;
        * ...&lt;br /&gt;
        &amp;amp;quot; \&lt;br /&gt;
        --node-operator-id uqquy-76uhn-2mys5-xa3j3-oynfv-rrorc-pygn7-dldbd-4dr6n-lbhz7-zqe \&lt;br /&gt;
        --rewardable-nodes &#039;{&amp;amp;quot;type0&amp;amp;quot;: &amp;amp;lt;number-of-nodes&amp;amp;gt;}&#039;&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ol&amp;gt;&lt;/div&gt;</summary>
		<author><name>Luis</name></author>
	</entry>
</feed>