<?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=Gary.mcelroy</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=Gary.mcelroy"/>
	<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/wiki/Special:Contributions/Gary.mcelroy"/>
	<updated>2026-04-30T17:03:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.17</generator>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=7229</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=7229"/>
		<updated>2024-02-20T18:26:52Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Appendix 1: Number of IPv4 Addresses Required */ Clarify table - #&amp;#039;s imply nothing about ipv4 configuration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide is designed to provide an overview of the networking requirements and guide Node Providers through setting up their servers into a rack with functioning networking.&lt;br /&gt;
&lt;br /&gt;
Configuring networks is not trivial. You should be familiar with IP networking, network equipment and network cabling.  &lt;br /&gt;
&lt;br /&gt;
Resources to learn about networking: &lt;br /&gt;
&lt;br /&gt;
* [https://learningnetwork.cisco.com/s/article/200-301-ccna-study-materials CCNA Study Materials]&lt;br /&gt;
* Kevin Wallace [https://www.youtube.com/@kwallaceccie YouTube Training Videos]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DFINITY does not provide support for network configuration.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you hire technical assistance, keep decentralization and security in mind. Use a local technician you personally know and carefully monitor their work.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps per node&lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (serving responses to client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** &#039;&#039;&#039;(For Gen2 Node Providers - Gen1 Node Providers will receive different requirements)&#039;&#039;&#039; One IPv4 address allocated for every 4 nodes in a given data center per node provider (IPv4 addresses cannot be shared between node providers). See [[Node Provider Networking Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for table.&lt;br /&gt;
***Additionally, one domain name for each node configured with an IPv4 address. See [[Node Provider Domain Name Guide]] for details.&lt;br /&gt;
**&#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
***This is configured in the [[IC-OS Installation Runbook#6. Add configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
==Network Cabling==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;at least one 10G network port&#039;&#039;&#039; on each server is connected to the 10G switch. SFP+ and Ethernet are supported.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png|480px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the 10G ports are in a cluster as seen above. Vendors differ.  &lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
==Network Configuration==&lt;br /&gt;
Node machines require:&lt;br /&gt;
&lt;br /&gt;
*The ability to acquire a public static IPv6 address on a /64 subnet&lt;br /&gt;
* An IPv6 gateway to communicate with other nodes on the broad internet&lt;br /&gt;
*Unfiltered internet access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(For Gen2 Node Providers - Gen1 Node Providers will receive different requirements)&#039;&#039;&#039; One of every four nodes requires:&lt;br /&gt;
&lt;br /&gt;
*The ability to acquire a public static IPv4 address&lt;br /&gt;
* An IPv4 gateway to communicate with other nodes on the broad internet&lt;br /&gt;
*Unfiltered internet access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are many many ways to configure the network and some details depend on the ISP and data center. Here are some [[Example Network Configuration Scenarios]]. &lt;br /&gt;
&lt;br /&gt;
See the [[Node Provider Networking Troubleshooting Guide]] for help. &lt;br /&gt;
&lt;br /&gt;
==BMC Setup Recommendations==&lt;br /&gt;
&lt;br /&gt;
===What’s a BMC?===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations===&lt;br /&gt;
&lt;br /&gt;
====Change the password====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
====No broad internet access====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
*Don’t connect the BMC to the internet.&lt;br /&gt;
**Maintenance or node recovery will require physical access in this case.&lt;br /&gt;
**Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart.&lt;br /&gt;
* Connect the BMC to a separate dumb switch, and the dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
*Connect the BMC to a managed switch, and create a separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
*[https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
*[https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
*[https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== Network monitoring==&lt;br /&gt;
&lt;br /&gt;
===SNMP-based Network Monitoring: ===&lt;br /&gt;
&lt;br /&gt;
* Device Compatibility: Make sure your network devices support and enable SNMP agents. Choose the version of SNMP that aligns with your security needs as different versions offer varying security levels and functionality.&lt;br /&gt;
*Secure Configuration: Implement SNMPv3 to enhance security through authentication and encryption, protecting against unauthorized access and data interception.&lt;br /&gt;
*Monitoring Points: Select specific network parameters critical for performance. (such as bandwidth utilization, CPU usage, and memory usage). Set up SNMP polling for these parameters.&lt;br /&gt;
*Thresholds and Alerts: Predefine alerts when monitored parameters exceed limits to identify issues proactively and take corrective actions.&lt;br /&gt;
* Data Retention: Establish data retention policies for storing SNMP data for trend and capacity analysis.&lt;br /&gt;
*Regular Review: It is important to regularly review SNMP monitoring configurations and thresholds to ensure that they are up-to-date and aligned with the changing network environment..&lt;br /&gt;
&lt;br /&gt;
===GNMI/gRPC-based Network Monitoring:===&lt;br /&gt;
&lt;br /&gt;
*Protocol Familiarity: Get familiar with GNMI data models for your network devices and understand how they use gRPC (Remote Procedure Call) for network management.&lt;br /&gt;
* Device Support: Verify that your network devices support GNMI, which is more commonly found in modern networking equipment that supports programmability.&lt;br /&gt;
*Authentication and Encryption: Implement TLS for gRPC security to protect communication between the monitoring system and devices.&lt;br /&gt;
*Model Definitions: Make sure you either have access to or create GNMI data models for the devices you&#039;re monitoring. These models define the structure and hierarchy of the data that is accessible through GNMI.&lt;br /&gt;
*Data Subscription: GNMI allows for real-time updates through subscriptions. Set up subscriptions for relevant data points to receive continuous updates without frequent polling.&lt;br /&gt;
*Streaming Mode: Use gNMI&#039;s streaming mode for efficient real-time data transfer.&lt;br /&gt;
&lt;br /&gt;
== Server monitoring==&lt;br /&gt;
&lt;br /&gt;
===SNMP-based Server Hardware Monitoring:===&lt;br /&gt;
&lt;br /&gt;
*Determine SNMP Compatibility: Before configuring SNMP monitoring, make sure you enable SNMP agents on your servers. Also, verify the compatibility of the SNMP version with your monitoring system.&lt;br /&gt;
*Secure Configuration: Implement SNMPv3 to enhance security through authentication and encryption, protecting against unauthorized access and data interception.&lt;br /&gt;
* Monitoring Parameters: It&#039;s important to monitor the CPU utilization to ensure that the performance is optimal and to identify any potential bottlenecks. Keeping track of the memory usage is crucial to prevent resource exhaustion. It&#039;s also important to check the network interface traffic to identify any bandwidth bottlenecks. Finally, monitoring the server temperatures and hardware health indicators can help detect any hardware issues.&lt;br /&gt;
*SNMP Polling: SNMP polling should be set up regularly to collect data on critical parameters.- Thresholds and Alerts: Set Thresholds: Define appropriate thresholds for each monitored parameter. These thresholds determine when alerts should be triggered.&lt;br /&gt;
*Data Retention and Trend Analysis: Retain historical SNMP data for trend analysis, capacity planning and performance identification.&lt;br /&gt;
*Regular Review: It is important to regularly check the SNMP monitoring configurations and thresholds in order to ensure that they are appropriate for the environment. This helps to maintain proper alignment and accuracy in monitoring.&lt;br /&gt;
&lt;br /&gt;
==What NOT to do==&lt;br /&gt;
&lt;br /&gt;
===Don’t use external firewalls, packet filters, rate limiters===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
====What about network security?====&lt;br /&gt;
IC-OS manages its own software firewalls and rate limiters strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
===Don&#039;t configure the switch to use LACP bonding===&lt;br /&gt;
This feature is on the roadmap for investigation but IC nodes do not support LACP bonding at the moment. Configuring it on the switch may cause problems with nodes.&lt;br /&gt;
&lt;br /&gt;
==How DFINITY manages its servers==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist==&lt;br /&gt;
&lt;br /&gt;
*Did you deploy a 10G switch?&lt;br /&gt;
*Is at least &#039;&#039;&#039;one 10G port&#039;&#039;&#039; on each server plugged into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
*&#039;&#039;&#039;(Gen2)&#039;&#039;&#039; Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
*Does each node have ~300Mbps bandwidth?&lt;br /&gt;
*Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
*[[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
==Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
&#039;&#039;&#039;(For Gen2 Node Providers - Gen1 Node Providers will receive different requirements)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This table refers to quantities - the same IPv4 address should not be reused on different nodes. &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;How many nodes you have&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;IPv4 Addresses needed for the whole DC&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1 to 4&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|5 to 8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9 to 12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13 to 16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17 to 20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21 to 24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25 to 28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=7228</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=7228"/>
		<updated>2024-02-20T18:25:03Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Requirements */ Distinguish Gen1 vs Gen2 ipv4 req&amp;#039;s&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide is designed to provide an overview of the networking requirements and guide Node Providers through setting up their servers into a rack with functioning networking.&lt;br /&gt;
&lt;br /&gt;
Configuring networks is not trivial. You should be familiar with IP networking, network equipment and network cabling.  &lt;br /&gt;
&lt;br /&gt;
Resources to learn about networking: &lt;br /&gt;
&lt;br /&gt;
* [https://learningnetwork.cisco.com/s/article/200-301-ccna-study-materials CCNA Study Materials]&lt;br /&gt;
* Kevin Wallace [https://www.youtube.com/@kwallaceccie YouTube Training Videos]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DFINITY does not provide support for network configuration.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you hire technical assistance, keep decentralization and security in mind. Use a local technician you personally know and carefully monitor their work.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps per node&lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (serving responses to client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** &#039;&#039;&#039;(For Gen2 Node Providers - Gen1 Node Providers will receive different requirements)&#039;&#039;&#039; One IPv4 address allocated for every 4 nodes in a given data center per node provider (IPv4 addresses cannot be shared between node providers). See [[Node Provider Networking Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for table.&lt;br /&gt;
***Additionally, one domain name for each node configured with an IPv4 address. See [[Node Provider Domain Name Guide]] for details.&lt;br /&gt;
**&#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
***This is configured in the [[IC-OS Installation Runbook#6. Add configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
==Network Cabling==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;at least one 10G network port&#039;&#039;&#039; on each server is connected to the 10G switch. SFP+ and Ethernet are supported.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png|480px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the 10G ports are in a cluster as seen above. Vendors differ.  &lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
==Network Configuration==&lt;br /&gt;
Node machines require:&lt;br /&gt;
&lt;br /&gt;
*The ability to acquire a public static IPv6 address on a /64 subnet&lt;br /&gt;
* An IPv6 gateway to communicate with other nodes on the broad internet&lt;br /&gt;
*Unfiltered internet access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;(For Gen2 Node Providers - Gen1 Node Providers will receive different requirements)&#039;&#039;&#039; One of every four nodes requires:&lt;br /&gt;
&lt;br /&gt;
*The ability to acquire a public static IPv4 address&lt;br /&gt;
* An IPv4 gateway to communicate with other nodes on the broad internet&lt;br /&gt;
*Unfiltered internet access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are many many ways to configure the network and some details depend on the ISP and data center. Here are some [[Example Network Configuration Scenarios]]. &lt;br /&gt;
&lt;br /&gt;
See the [[Node Provider Networking Troubleshooting Guide]] for help. &lt;br /&gt;
&lt;br /&gt;
==BMC Setup Recommendations==&lt;br /&gt;
&lt;br /&gt;
===What’s a BMC?===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations===&lt;br /&gt;
&lt;br /&gt;
====Change the password====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
====No broad internet access====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
*Don’t connect the BMC to the internet.&lt;br /&gt;
**Maintenance or node recovery will require physical access in this case.&lt;br /&gt;
**Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart.&lt;br /&gt;
* Connect the BMC to a separate dumb switch, and the dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
*Connect the BMC to a managed switch, and create a separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
*[https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
*[https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
*[https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== Network monitoring==&lt;br /&gt;
&lt;br /&gt;
===SNMP-based Network Monitoring: ===&lt;br /&gt;
&lt;br /&gt;
* Device Compatibility: Make sure your network devices support and enable SNMP agents. Choose the version of SNMP that aligns with your security needs as different versions offer varying security levels and functionality.&lt;br /&gt;
*Secure Configuration: Implement SNMPv3 to enhance security through authentication and encryption, protecting against unauthorized access and data interception.&lt;br /&gt;
*Monitoring Points: Select specific network parameters critical for performance. (such as bandwidth utilization, CPU usage, and memory usage). Set up SNMP polling for these parameters.&lt;br /&gt;
*Thresholds and Alerts: Predefine alerts when monitored parameters exceed limits to identify issues proactively and take corrective actions.&lt;br /&gt;
* Data Retention: Establish data retention policies for storing SNMP data for trend and capacity analysis.&lt;br /&gt;
*Regular Review: It is important to regularly review SNMP monitoring configurations and thresholds to ensure that they are up-to-date and aligned with the changing network environment..&lt;br /&gt;
&lt;br /&gt;
===GNMI/gRPC-based Network Monitoring:===&lt;br /&gt;
&lt;br /&gt;
*Protocol Familiarity: Get familiar with GNMI data models for your network devices and understand how they use gRPC (Remote Procedure Call) for network management.&lt;br /&gt;
* Device Support: Verify that your network devices support GNMI, which is more commonly found in modern networking equipment that supports programmability.&lt;br /&gt;
*Authentication and Encryption: Implement TLS for gRPC security to protect communication between the monitoring system and devices.&lt;br /&gt;
*Model Definitions: Make sure you either have access to or create GNMI data models for the devices you&#039;re monitoring. These models define the structure and hierarchy of the data that is accessible through GNMI.&lt;br /&gt;
*Data Subscription: GNMI allows for real-time updates through subscriptions. Set up subscriptions for relevant data points to receive continuous updates without frequent polling.&lt;br /&gt;
*Streaming Mode: Use gNMI&#039;s streaming mode for efficient real-time data transfer.&lt;br /&gt;
&lt;br /&gt;
== Server monitoring==&lt;br /&gt;
&lt;br /&gt;
===SNMP-based Server Hardware Monitoring:===&lt;br /&gt;
&lt;br /&gt;
*Determine SNMP Compatibility: Before configuring SNMP monitoring, make sure you enable SNMP agents on your servers. Also, verify the compatibility of the SNMP version with your monitoring system.&lt;br /&gt;
*Secure Configuration: Implement SNMPv3 to enhance security through authentication and encryption, protecting against unauthorized access and data interception.&lt;br /&gt;
* Monitoring Parameters: It&#039;s important to monitor the CPU utilization to ensure that the performance is optimal and to identify any potential bottlenecks. Keeping track of the memory usage is crucial to prevent resource exhaustion. It&#039;s also important to check the network interface traffic to identify any bandwidth bottlenecks. Finally, monitoring the server temperatures and hardware health indicators can help detect any hardware issues.&lt;br /&gt;
*SNMP Polling: SNMP polling should be set up regularly to collect data on critical parameters.- Thresholds and Alerts: Set Thresholds: Define appropriate thresholds for each monitored parameter. These thresholds determine when alerts should be triggered.&lt;br /&gt;
*Data Retention and Trend Analysis: Retain historical SNMP data for trend analysis, capacity planning and performance identification.&lt;br /&gt;
*Regular Review: It is important to regularly check the SNMP monitoring configurations and thresholds in order to ensure that they are appropriate for the environment. This helps to maintain proper alignment and accuracy in monitoring.&lt;br /&gt;
&lt;br /&gt;
==What NOT to do==&lt;br /&gt;
&lt;br /&gt;
===Don’t use external firewalls, packet filters, rate limiters===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
====What about network security?====&lt;br /&gt;
IC-OS manages its own software firewalls and rate limiters strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
===Don&#039;t configure the switch to use LACP bonding===&lt;br /&gt;
This feature is on the roadmap for investigation but IC nodes do not support LACP bonding at the moment. Configuring it on the switch may cause problems with nodes.&lt;br /&gt;
&lt;br /&gt;
==How DFINITY manages its servers==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist==&lt;br /&gt;
&lt;br /&gt;
*Did you deploy a 10G switch?&lt;br /&gt;
*Is at least &#039;&#039;&#039;one 10G port&#039;&#039;&#039; on each server plugged into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
*&#039;&#039;&#039;(Gen2)&#039;&#039;&#039; Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
*Does each node have ~300Mbps bandwidth?&lt;br /&gt;
*Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
*[[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
==Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
&#039;&#039;&#039;(For Gen2 Node Providers - Gen1 Node Providers will receive different requirements)&#039;&#039;&#039; &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&#039;&#039;&#039;# Nodes&#039;&#039;&#039;&lt;br /&gt;
|&#039;&#039;&#039;# IPv4 Addresses&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|1 to 4&lt;br /&gt;
| 1&lt;br /&gt;
|-&lt;br /&gt;
|5 to 8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9 to 12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13 to 16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17 to 20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21 to 24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25 to 28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Removing_a_Node_From_the_Registry&amp;diff=7151</id>
		<title>Removing a Node From the Registry</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Removing_a_Node_From_the_Registry&amp;diff=7151"/>
		<updated>2024-02-05T23:08:53Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Steps */ Add note to alert the matrix channel&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Removing a node from the registry via DFX =&lt;br /&gt;
&lt;br /&gt;
== When is this necessary? ==&lt;br /&gt;
Node operator records allow for some number of nodes to be joined to the network. This is called the &#039;&#039;&#039;node allowance&#039;&#039;&#039;. Redeploying the same machine will result in the node generating the same IPv6 address. When joining the network any old node-id associated with this address will be removed - and the node allowance will not be affected. &lt;br /&gt;
&lt;br /&gt;
But if the BMC changes - because of a motherboard replacement for example - a new IPv6 address will be generated. In this case the node will appear new to the network upon joining. If the number of nodes deployed matches the node allowance, no new nodes can join. &lt;br /&gt;
&lt;br /&gt;
In this case - the &#039;&#039;&#039;old node-id must be removed.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
# Ensure that the node does not exist in any subnet.&lt;br /&gt;
## If the node is in a subnet - request help on the [[Node Provider Matrix channel|matrix channel]]. &lt;br /&gt;
## As a last resort, unplugging the node will work. Please alert the matrix channel you are doing this.&lt;br /&gt;
# If applicable, get the HSM (NodeOperator Key) from the data center. Skip if you used a `pem` file to create the node operator record.&lt;br /&gt;
## Insert it into a computer that has DFX installed and has internet access.&lt;br /&gt;
# Using the terminal, execute the following command (Where NODE_ID is the principal as shown on the dashboard of the node to remove):&lt;br /&gt;
&lt;br /&gt;
=== IF USING PHYSICAL HSM: ===&lt;br /&gt;
&amp;lt;code&amp;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;
&lt;br /&gt;
$ dfx canister --network ic  --identity node-operator-hsm call rwlgt-iiaaa-aaaaa-aaaaa-cai remove_node_directly &#039;(record { node_id = principal &amp;quot;NODE_ID&amp;quot; })&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IF USING NO HSM: ===&lt;br /&gt;
&amp;lt;code&amp;gt;$ dfx identity import node_operator node_operator_private_key.pem --storage-mode=plaintext&lt;br /&gt;
&lt;br /&gt;
$ dfx canister --network ic  --identity node_operator call rwlgt-iiaaa-aaaaa-aaaaa-cai remove_node_directly &#039;(record { node_id = principal &amp;quot;NODE_ID&amp;quot; })&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== When the node is ready to be re-registered: ===&lt;br /&gt;
* If it was healthy, has had no problems, and does not need firmware or anything else updated, then simply re-insert the HSM and reboot the server, and it will rejoin with the same node ID principal it was deployed with.&lt;br /&gt;
* If it had problems, had hardware replaced, had firmware updated, etc., then please do a fresh redeployment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Documentation|Return to Node Provider Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Troubleshooting|Return to Node Provider Troubleshooting]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Removing_a_Node_From_the_Registry&amp;diff=7150</id>
		<title>Removing a Node From the Registry</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Removing_a_Node_From_the_Registry&amp;diff=7150"/>
		<updated>2024-02-05T23:05:04Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Steps */ Added details about &amp;#039;ensure the node does not exist in any subnet&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Removing a node from the registry via DFX =&lt;br /&gt;
&lt;br /&gt;
== When is this necessary? ==&lt;br /&gt;
Node operator records allow for some number of nodes to be joined to the network. This is called the &#039;&#039;&#039;node allowance&#039;&#039;&#039;. Redeploying the same machine will result in the node generating the same IPv6 address. When joining the network any old node-id associated with this address will be removed - and the node allowance will not be affected. &lt;br /&gt;
&lt;br /&gt;
But if the BMC changes - because of a motherboard replacement for example - a new IPv6 address will be generated. In this case the node will appear new to the network upon joining. If the number of nodes deployed matches the node allowance, no new nodes can join. &lt;br /&gt;
&lt;br /&gt;
In this case - the &#039;&#039;&#039;old node-id must be removed.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
# Ensure that the node does not exist in any subnet.&lt;br /&gt;
## If the node is in a subnet - request help on the [[Node Provider Matrix channel|matrix channel]]. Alternatively just unplug the node. &lt;br /&gt;
# If applicable, get the HSM (NodeOperator Key) from the data center. Skip if you used a `pem` file to create the node operator record.&lt;br /&gt;
## Insert it into a computer that has DFX installed and has internet access.&lt;br /&gt;
# Using the terminal, execute the following command (Where NODE_ID is the principal as shown on the dashboard of the node to remove):&lt;br /&gt;
&lt;br /&gt;
=== IF USING PHYSICAL HSM: ===&lt;br /&gt;
&amp;lt;code&amp;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;
&lt;br /&gt;
$ dfx canister --network ic  --identity node-operator-hsm call rwlgt-iiaaa-aaaaa-aaaaa-cai remove_node_directly &#039;(record { node_id = principal &amp;quot;NODE_ID&amp;quot; })&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IF USING NO HSM: ===&lt;br /&gt;
&amp;lt;code&amp;gt;$ dfx identity import node_operator node_operator_private_key.pem --storage-mode=plaintext&lt;br /&gt;
&lt;br /&gt;
$ dfx canister --network ic  --identity node_operator call rwlgt-iiaaa-aaaaa-aaaaa-cai remove_node_directly &#039;(record { node_id = principal &amp;quot;NODE_ID&amp;quot; })&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== When the node is ready to be re-registered: ===&lt;br /&gt;
* If it was healthy, has had no problems, and does not need firmware or anything else updated, then simply re-insert the HSM and reboot the server, and it will rejoin with the same node ID principal it was deployed with.&lt;br /&gt;
* If it had problems, had hardware replaced, had firmware updated, etc., then please do a fresh redeployment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Documentation|Return to Node Provider Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Troubleshooting|Return to Node Provider Troubleshooting]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Removing_a_Node_From_the_Registry&amp;diff=7135</id>
		<title>Removing a Node From the Registry</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Removing_a_Node_From_the_Registry&amp;diff=7135"/>
		<updated>2024-02-05T22:09:01Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Add context&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Removing a node from the registry via DFX =&lt;br /&gt;
&lt;br /&gt;
== When is this necessary? ==&lt;br /&gt;
Node operator records allow for some number of nodes to be joined to the network. This is called the &#039;&#039;&#039;node allowance&#039;&#039;&#039;. Redeploying the same machine will result in the node generating the same IPv6 address. When joining the network any old node-id associated with this address will be removed - and the node allowance will not be affected. &lt;br /&gt;
&lt;br /&gt;
But if the BMC changes - because of a motherboard replacement for example - a new IPv6 address will be generated. In this case the node will appear new to the network upon joining. If the number of nodes deployed matches the node allowance, no new nodes can join. &lt;br /&gt;
&lt;br /&gt;
In this case - the &#039;&#039;&#039;old node-id must be removed.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
# Ensure that the node does not exist in any subnet.&lt;br /&gt;
# If applicable, get the HSM (NodeOperator Key) from the data center. Skip if you used a `pem` file to create the node operator record.&lt;br /&gt;
## Insert it into a computer that has DFX installed and has internet access.&lt;br /&gt;
# Using the terminal, execute the following command (Where NODE_ID is the principal as shown on the dashboard of the node to remove):&lt;br /&gt;
&lt;br /&gt;
=== IF USING PHYSICAL HSM: ===&lt;br /&gt;
&amp;lt;code&amp;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;
&lt;br /&gt;
$ dfx canister --network ic  --identity node-operator-hsm call rwlgt-iiaaa-aaaaa-aaaaa-cai remove_node_directly &#039;(record { node_id = principal &amp;quot;NODE_ID&amp;quot; })&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IF USING NO HSM: ===&lt;br /&gt;
&amp;lt;code&amp;gt;$ dfx identity import node_operator node_operator_private_key.pem --storage-mode=plaintext&lt;br /&gt;
&lt;br /&gt;
$ dfx canister --network ic  --identity node_operator call rwlgt-iiaaa-aaaaa-aaaaa-cai remove_node_directly &#039;(record { node_id = principal &amp;quot;NODE_ID&amp;quot; })&#039;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== When the node is ready to be re-registered: ===&lt;br /&gt;
* If it was healthy, has had no problems, and does not need firmware or anything else updated, then simply re-insert the HSM and reboot the server, and it will rejoin with the same node ID principal it was deployed with.&lt;br /&gt;
* If it had problems, had hardware replaced, had firmware updated, etc., then please do a fresh redeployment.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Documentation|Return to Node Provider Documentation]]&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Troubleshooting|Return to Node Provider Troubleshooting]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=7122</id>
		<title>Node Deployment Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=7122"/>
		<updated>2024-02-05T17:05:27Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 5. Create Bootable USB Stick */ Add status progress to dd commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS).&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to its respective manual.&lt;br /&gt;
&lt;br /&gt;
To complete these steps, you are expected to by physically present with your machine(s). Once you successfully onboarded your first node, you can bring up the other nodes in parallel.&lt;br /&gt;
&lt;br /&gt;
If you encounter issues through any of these steps, check the [[Node Provider Troubleshooting]] page. If that does not solve your problem, you are encouraged to ask for assistance in the [[Node Provider Matrix channel]].&lt;br /&gt;
&lt;br /&gt;
==1. Choose onboarding path (HSM vs. no HSM)==&lt;br /&gt;
If you chose the [[Node Provider Onboarding#5. Choose onboarding path .28HSM vs no HSM.29|HSM Node Provider Onboarding Path]], follow the [[NitroKey HSM installation runbook]] to onboard your nodes.&lt;br /&gt;
&lt;br /&gt;
If you chose to onboard &#039;&#039;&#039;without&#039;&#039;&#039; a Nitrokey HSM, &#039;&#039;&#039;continue to the next step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2. Obtain requirements ==&lt;br /&gt;
*A USB (3.0 speed that can hold at least 4GB) to put the image file on.&lt;br /&gt;
**Faster USBs will allow the process to go much faster.&lt;br /&gt;
*The &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; for your data center (Acquired from [[Node Provider Onboarding#6. Setup the Node Operator keys|Node Provider Onboarding step 6]])&lt;br /&gt;
* It is recommended that each server have a label with the BMC&#039;s MAC address for ease of identification in future dashboard upgrades.&lt;br /&gt;
&lt;br /&gt;
== 3. Download installation image==&lt;br /&gt;
Download the latest release of the &#039;&#039;&#039;IC-OS USB Installer Image&#039;&#039;&#039; and the &#039;&#039;&#039;corresponding checksum&#039;&#039;&#039; from the [https://dashboard.internetcomputer.org/releases Internet Computer Dashboard Releases]. &lt;br /&gt;
*Note that you should always use a release that is less than 6 weeks old in order to ensure that your node can correctly connect to the network.&lt;br /&gt;
&lt;br /&gt;
== 4. Verify checksum and unarchive file==&lt;br /&gt;
===Mac OS X ===&lt;br /&gt;
#Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Linux / Ubuntu===&lt;br /&gt;
#Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
#Open PowerShell and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==5. Create Bootable USB Stick ==&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/disk4s1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. Additionally, replace the path to your downloaded IC-OS &#039;&#039;disk.img&#039;&#039; file. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive.  &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M status=progress&amp;lt;/syntaxhighlight&amp;gt;If you get a “device is busy” error from the dd command, you can try running the following command to unmount all of the partitions on the disk, then re-run the dd command:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmountDisk /dev/YOUR_USB_DEVICE # E.g. /dev/disk4&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu===&lt;br /&gt;
#Open the Terminal and type &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/sdb1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. Additionally, replace the path to your downloaded IC-OS &#039;&#039;disk.img&#039;&#039; file. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive.  &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/home/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M status=progress&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
#Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
#Start Rufus&lt;br /&gt;
#Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#:[[File:05.png|480px|screenshot]]&lt;br /&gt;
#You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#:[[File:06.png|480px|screenshot]]&lt;br /&gt;
#:[[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
==6. Add configuration==&lt;br /&gt;
&lt;br /&gt;
===A. Open Config.ini in a text editor===&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Mac OS X&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
#Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#:[[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
#Double-click &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; to open it in TextEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Linux&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
#Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#:[[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
#Double-click &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; to open it in KWrite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Windows&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
#Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#:[[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
#Right click the CONFIG partition&lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#:[[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#:[[File:11-b.png|480px|screenshot]]&lt;br /&gt;
#Click OK.&lt;br /&gt;
#You should now be able to see the CONFIG partition in your Windows Explorer. Select the &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; configuration file &lt;br /&gt;
#:[[File:12-b.png|780px|screenshot]]&lt;br /&gt;
#Click on Edit to open it.&lt;br /&gt;
&lt;br /&gt;
===B. Edit Config.ini===&lt;br /&gt;
&lt;br /&gt;
#Insert your IPv6 prefix and gateway.&lt;br /&gt;
#:[[File:Config.ini ipv6 info.png|780px|screenshot]]&lt;br /&gt;
#:*The IPv6 prefix should consist of four groups of hexadecimal digits, separated by colons (&#039;:&#039;). Each group can contain up to four hex digits.&lt;br /&gt;
#:* For example, a valid prefix could look like this: &amp;lt;code&amp;gt;2a00:fb01:400:200&amp;lt;/code&amp;gt;&lt;br /&gt;
#:*&#039;&#039;&#039;Important:&#039;&#039;&#039;&lt;br /&gt;
#:**The prefix should not have a trailing &#039;:&#039;&lt;br /&gt;
#:**IPv6 CIDR notation allows for a double colon (&#039;::&#039;) to represent consecutive groups of zeroes in an address. However, the  prefix configuration in this context does &#039;&#039;&#039;not&#039;&#039;&#039; support &#039;::&#039;. The &#039;::&#039; shorthand should &#039;&#039;&#039;not&#039;&#039;&#039; be used. Even if some groups are all zeros, they must be explicitly written out.&lt;br /&gt;
#[Optional] Insert your IPv4 info and domain name.&lt;br /&gt;
#:[[File:Config.ini ipv4 info.png|780px|screenshot]]&lt;br /&gt;
#:*Configuring your node with IPv4 settings is optional, but if you do configure your node with IPv4 settings, you must also define the domain name for your node.&lt;br /&gt;
#:*&#039;&#039;&#039;Important:&#039;&#039;&#039;&lt;br /&gt;
#:**Please note that you must reconfigure the IC-OS image for every IPv4 node you deploy. This means that you cannot use a single IC-OS image to configure multiple nodes like you were able to do when just configuring IPv6 nodes. &#039;&#039;&#039;After each IPv4 node deployment, you must plug your USB stick back into your laptop and return to [[Node Deployment Guide#6. Add configuration|step 6]] in the node deployment guide to reconfigure your installation image.&#039;&#039;&#039;&lt;br /&gt;
#Save the changes. &lt;br /&gt;
#:*If you have trouble saving this file directly, you may need to save to a known location first, then copy the file into place.&lt;br /&gt;
#:*If you need help, please do not hesitate to post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:*:[[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== C. Copy Node Operator private key to config partition===&lt;br /&gt;
&lt;br /&gt;
#Copy &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; (created in [[Node Provider Onboarding#6. Setup the Node Operator keys|Node Provider Onboarding step 6]]) to the &amp;lt;code&amp;gt;CONFIG&amp;lt;/code&amp;gt; partition. This file should have the name &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt;, and sit next to &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt;, NOT inside the &amp;lt;code&amp;gt;ssh_authorized_keys&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
==7. Connect Crash Cart==&lt;br /&gt;
#In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine.&lt;br /&gt;
#Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#:[[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
==8. UEFI Setup and Boot Menu==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make sure that server date/time is set to UTC (Universal Time Coordinated) &lt;br /&gt;
&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
*[[Node Provider Machine Hardware Guide#Gen 2 Node Machine requirements|Gen2 hardware]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen2 Dell]]&lt;br /&gt;
** [[IC-OS Installation - UEFI Configuration - Gen2 Supermicro]]&lt;br /&gt;
** [[IC-OS Installation - UEFI Configuration - Gen2 Gigabyte]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen2 ASUS]]&lt;br /&gt;
*[[Node Provider Machine Hardware Guide#Gen 1 Node Machine requirements|Gen1 hardware]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen1 Dell|IC-OS Installation - UEFI Configuration - Gen1 Dell (Poweredge R6525)]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen1 Supermicro]]&lt;br /&gt;
***&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Do NOT enable the RAID bios setting. Doing so will cause issues with the IC-OS installation.&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished configuring the BIOS.&lt;br /&gt;
&lt;br /&gt;
==9. IC-OS Installation==&lt;br /&gt;
#Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#:[[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
#The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 10 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#:[[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
#If the installation finished successfully, it will initiate a reboot. &lt;br /&gt;
#:[[File:38-sm.png|580px|screenshot]]&amp;lt;br /&amp;gt;&lt;br /&gt;
==10. First Boot==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
#Once you see this message, you may unplug the USB stick and VGA/Video. &lt;br /&gt;
#:[[File:Node join message.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your machine successfully joined the Internet Computer! The machine has joined the IC and the Node Provider will start receiving rewards!&lt;br /&gt;
&lt;br /&gt;
==11. Verify node onboarding==&lt;br /&gt;
&lt;br /&gt;
#Verify that your node was successfully onboarded by checking its status on the [https://dashboard.internetcomputer.org/ dashboard] is set to either “Awaiting Subnet” or “Active in Subnet”. &lt;br /&gt;
#*The dashboard can be searched by your Node Provider principal. There, you should see the Node ID of your node (Node ID is outputted in step 10).&lt;br /&gt;
#*If the status of your node is not either “Awaiting Subnet” or “Active in Subnet”, or if it is not listed under your Node Provider principal, you should contact the [[Node Provider Matrix channel]] for assistance.&lt;br /&gt;
#*:[[File:Node onboarding verification.png|680px|screenshot]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide_(with_an_HSM)&amp;diff=7121</id>
		<title>Node Deployment Guide (with an HSM)</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide_(with_an_HSM)&amp;diff=7121"/>
		<updated>2024-02-05T17:04:03Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 4. Verify checksum and unarchive file */ Add status progress to dd commands&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS) using the legacy NitroKey HSM instructions. To use the non-HSM onboarding instructions, follow the [[IC-OS Installation Runbook]].&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to its respective manual.&lt;br /&gt;
&lt;br /&gt;
To complete these steps, you are expected to be physically present in the data center your machine(s) reside(s). Once you successfully onboard your first node, you can bring up the others in parallel.&lt;br /&gt;
&lt;br /&gt;
If you encounter issues through any of these steps, check the [[Node Provider Troubleshooting]] page. If that does not solve your problem, you are encouraged to ask for assistance in the [[Node Provider Matrix channel]].&lt;br /&gt;
&lt;br /&gt;
==1. Choose onboarding path (HSM vs no HSM)==&lt;br /&gt;
If you chose the [[Node Provider Onboarding#5. Choose onboarding path .28HSM vs no HSM.29|HSM Node Provider Onboarding Path]], &#039;&#039;&#039;continue to the next step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you chose to onboard &#039;&#039;&#039;without&#039;&#039;&#039; a Nitrokey HSM, follow the [[IC-OS Installation Runbook]] to onboard your nodes.&lt;br /&gt;
&lt;br /&gt;
==2. Obtain requirements==&lt;br /&gt;
*A USB (3.0 speed that can hold at least 4GB) to put the image file on.&lt;br /&gt;
** Faster USBs will allow the process to go much faster.&lt;br /&gt;
*The NitroKey HSM for your data center.&lt;br /&gt;
*[Optional] A USB hub&lt;br /&gt;
** This is helpful at some data centers for simultaneously connecting keyboard, mouse, Nitrokey, etc.&lt;br /&gt;
*It is recommended that each server has a label with the BMC&#039;s MAC address for ease of identification in future dashboard upgrades.&lt;br /&gt;
&lt;br /&gt;
==3. Download installation image==&lt;br /&gt;
Download the latest release of the &#039;&#039;&#039;IC-OS USB Installer Image&#039;&#039;&#039; and the &#039;&#039;&#039;corresponding checksum&#039;&#039;&#039; from the [https://dashboard.internetcomputer.org/releases Internet Computer Dashboard Releases]. &lt;br /&gt;
*&#039;&#039;&#039;Note that you should always use a release from the last 6 weeks (newer is better) in order to ensure that your node can correctly correct to the network.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==4. Verify checksum and unarchive file==&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
#Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Linux / Ubuntu===&lt;br /&gt;
#Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
#Open PowerShell and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==5. Create Bootable USB Stick==&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
#Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/disk4s1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. Additionally, replace the path to your downloaded IC-OS &#039;&#039;disk.img&#039;&#039; file. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive.  &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M status=progress&amp;lt;/syntaxhighlight&amp;gt;If you get a “device is busy” error from the dd command, you can try running the following command to unmount all of the partitions on the disk, then re-run the dd command:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmountDisk /dev/YOUR_USB_DEVICE # E.g. /dev/disk4&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Linux / Ubuntu===&lt;br /&gt;
#Open the Terminal and type &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/sdb1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. Additionally, replace the path to your downloaded IC-OS &#039;&#039;disk.img&#039;&#039; file. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive.  &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/home/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M status=progress&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
#Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
#Start Rufus&lt;br /&gt;
#Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#:[[File:05.png|480px|screenshot]]&lt;br /&gt;
#You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#:[[File:06.png|480px|screenshot]]&lt;br /&gt;
#:[[File:07.png|480px|screenshot]]&lt;br /&gt;
#The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
==6. Add configuration ==&lt;br /&gt;
&lt;br /&gt;
===A. Open Config.ini in a text editor===&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Mac OS X&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
#Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#:[[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
#Double-click &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; to open it in TextEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Linux&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
#Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#:[[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
#Double-click &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; to open it in KWrite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Windows&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
#Open the Disk Management utility with a right click on the Start menu. &lt;br /&gt;
#:[[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
#Right click the CONFIG partition.&lt;br /&gt;
#Select Change drive letter or paths...&lt;br /&gt;
#:[[File:10-b.png|780px|screenshot]]&lt;br /&gt;
#Select any letter from the drop-down list. &lt;br /&gt;
#:[[File:11-b.png|480px|screenshot]]&lt;br /&gt;
# Click OK.&lt;br /&gt;
# You should now be able to see the CONFIG partition in your Windows Explorer. Select the &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; configuration file. &lt;br /&gt;
#:[[File:12-b.png|780px|screenshot]]&lt;br /&gt;
#Click on Edit to open it.&lt;br /&gt;
&lt;br /&gt;
===B. Edit Config.ini===&lt;br /&gt;
&lt;br /&gt;
#Insert your IPv6 prefix and gateway.&lt;br /&gt;
#:[[File:Config.ini ipv6 info.png|780px|screenshot]]&lt;br /&gt;
#:*The IPv6 prefix should consist of four groups of hexadecimal digits, separated by colons (&#039;:&#039;). Each group can contain up to four hex digits.&lt;br /&gt;
#:* For example, a valid prefix could look like this: &amp;lt;code&amp;gt;2a00:fb01:400:200&amp;lt;/code&amp;gt;&lt;br /&gt;
#:*&#039;&#039;&#039;Important:&#039;&#039;&#039;&lt;br /&gt;
#:**The prefix should not have a trailing &#039;:&#039;&lt;br /&gt;
#:**IPv6 CIDR notation allows for a double colon (&#039;::&#039;) to represent consecutive groups of zeroes in an address. However, the  prefix configuration in this context does &#039;&#039;&#039;not&#039;&#039;&#039; support &#039;::&#039;. The &#039;::&#039; shorthand should &#039;&#039;&#039;not&#039;&#039;&#039; be used. Even if some groups are all zeros, they must be explicitly written out.&lt;br /&gt;
#[Optional] Insert your IPv4 info and domain name.&lt;br /&gt;
#:[[File:Config.ini ipv4 info.png|780px|screenshot]]&lt;br /&gt;
#:*Configuring your node with IPv4 settings is optional, but if you do configure your node with IPv4 settings, you must also define the domain name for your node.&lt;br /&gt;
#:*&#039;&#039;&#039;Important:&#039;&#039;&#039;&lt;br /&gt;
#:**Please note that you must reconfigure the IC-OS image for every IPv4 node you deploy. This means that you cannot use a single IC-OS image to configure multiple nodes like you were able to do when just configuring IPv6 nodes. &#039;&#039;&#039;After each IPv4 node deployment, you must plug your USB stick back into your laptop and return to [[Node Deployment Guide (with an HSM)#6. Add configuration|step 6]] in the node deployment guide to reconfigure your installation image.&#039;&#039;&#039;&lt;br /&gt;
#Save the changes. &lt;br /&gt;
#:*If you have trouble saving this file directly, you may need to save to a known location first, then copy the file into place.&lt;br /&gt;
#:*If you need help, please do not hesitate to post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:*:[[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
==7. Connect Crash Cart==&lt;br /&gt;
#In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine.&lt;br /&gt;
#Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#:[[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
==8. UEFI Setup and Boot Menu==&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
*[[Node Provider Machine Hardware Guide#Gen 2 Node Machine requirements|Gen2 hardware]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen2 Dell]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen2 Supermicro]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen2 Gigabyte]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen2 ASUS]]&lt;br /&gt;
*[[Node Provider Machine Hardware Guide#Gen 1 Node Machine requirements|Gen1 hardware]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen1 Dell|IC-OS Installation - UEFI Configuration - Gen1 Dell (Poweredge R6525)]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen1 Supermicro]]&lt;br /&gt;
***&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Do NOT enable the RAID bios setting. Doing so will cause issues with the IC-OS installation.&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished configuring the BIOS.&lt;br /&gt;
&lt;br /&gt;
==9. IC-OS Installation ==&lt;br /&gt;
#Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#:[[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
#The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 10 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#:[[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
#Once you get asked to insert the HSM, please remove the keyboard and instead insert the HSM USB device. &lt;br /&gt;
#:[[File:37-sm.png|580px|screenshot]]&lt;br /&gt;
#If the installation finished successfully, it will initiate a reboot. &#039;&#039;&#039;Please do not unplug the USB stick or HSM USB&#039;&#039;&#039; device at this point.&lt;br /&gt;
#:[[File:38-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==10. First Boot==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
&lt;br /&gt;
🚨 &#039;&#039;&#039;Do NOT re-try the IC-OS installation after completing this section, as this can cause duplication within the registry.&#039;&#039;&#039;&lt;br /&gt;
#The first boot of the IC-OS still requires the HSM USB device. Please wait until further instructions. This step can take up to 2 minutes.&lt;br /&gt;
#:[[File:39-sm.png|580px|screenshot]]&lt;br /&gt;
#Once you see this message, you may unplug the HSM USB device, USB stick and VGA/Video. Your machine successfully joined the Internet Computer! **&#039;&#039;&#039;Label the server with the node ID for easy future identification in the dashboard (at least the first 10 characters).***&#039;&#039;&#039; Note that each redeployment will assign a new node ID, so you will need to update your label if this was a 2nd redeployment.&lt;br /&gt;
#:[[File:Node join message.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your machine successfully joined the Internet Computer! The machine has joined the IC and the Node Provider will start receiving rewards!&lt;br /&gt;
&lt;br /&gt;
🚨 Again: Once you reach this stage and see this message, &#039;&#039;&#039;do not attempt to restart the onboarding process.&#039;&#039;&#039; Doing so may cause duplicate entries in the registry.&lt;br /&gt;
==11. Verify node onboarding ==&lt;br /&gt;
&lt;br /&gt;
#Verify that your node was successfully onboarded by checking its status on the [https://dashboard.internetcomputer.org/ dashboard] is set to either “Awaiting Subnet” or “Active in Subnet”. &lt;br /&gt;
#*The dashboard can be searched by your Node Provider principal. There, you should see the Node ID of your node (Node ID outputted in step 10).&lt;br /&gt;
#*If the status of your node is not either “Awaiting Subnet” or “Active in Subnet”, or if it is not listed under your Node Provider principal, you should contact the [[Node Provider Matrix channel]] for assistance.&lt;br /&gt;
#*:[[File:Node onboarding verification.png|680px|screenshot]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=7068</id>
		<title>Node Deployment Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=7068"/>
		<updated>2024-01-29T17:19:54Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Correct wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS).&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to its respective manual.&lt;br /&gt;
&lt;br /&gt;
To complete these steps, you are expected to by physically present with your machine(s). Once you successfully onboarded your first node, you can bring up the other nodes in parallel.&lt;br /&gt;
&lt;br /&gt;
If you encounter issues through any of these steps, check the [[Node Provider Troubleshooting]] page. If that does not solve your problem, you are encouraged to ask for assistance in the [[Node Provider Matrix channel]].&lt;br /&gt;
&lt;br /&gt;
==1. Choose onboarding path (HSM vs. no HSM)==&lt;br /&gt;
If you chose the [[Node Provider Onboarding#5. Choose onboarding path .28HSM vs no HSM.29|HSM Node Provider Onboarding Path]], follow the [[NitroKey HSM installation runbook]] to onboard your nodes.&lt;br /&gt;
&lt;br /&gt;
If you chose to onboard &#039;&#039;&#039;without&#039;&#039;&#039; a Nitrokey HSM, &#039;&#039;&#039;continue to the next step.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==2. Obtain requirements ==&lt;br /&gt;
*A USB (3.0 speed that can hold at least 4GB) to put the image file on.&lt;br /&gt;
**Faster USBs will allow the process to go much faster.&lt;br /&gt;
*The &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; for your data center (Acquired from [[Node Provider Onboarding#6. Setup the Node Operator keys|Node Provider Onboarding step 6]])&lt;br /&gt;
* It is recommended that each server have a label with the BMC&#039;s MAC address for ease of identification in future dashboard upgrades.&lt;br /&gt;
&lt;br /&gt;
== 3. Download installation image==&lt;br /&gt;
Download the latest release of the &#039;&#039;&#039;IC-OS USB Installer Image&#039;&#039;&#039; and the &#039;&#039;&#039;corresponding checksum&#039;&#039;&#039; from the [https://dashboard.internetcomputer.org/releases Internet Computer Dashboard Releases]. &lt;br /&gt;
*Note that you should always use a release that is less than 6 weeks old in order to ensure that your node can correctly connect to the network.&lt;br /&gt;
&lt;br /&gt;
== 4. Verify checksum and unarchive file==&lt;br /&gt;
===Mac OS X ===&lt;br /&gt;
#Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Linux / Ubuntu===&lt;br /&gt;
#Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
#Open PowerShell and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==5. Create Bootable USB Stick ==&lt;br /&gt;
===Mac OS X===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/disk4s1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#The file path is an example. Use the absolute path to the downloaded image. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong device. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt;If you get a “device is busy” error from the dd command, you can try running the following command to unmount all of the partitions on the disk, then re-run the dd command:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmountDisk /dev/YOUR_USB_DEVICE # E.g. /dev/disk4&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu===&lt;br /&gt;
#Open the Terminal and type &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/sdb1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
#Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=~/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
#Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
#Start Rufus&lt;br /&gt;
#Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#:[[File:05.png|480px|screenshot]]&lt;br /&gt;
#You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#:[[File:06.png|480px|screenshot]]&lt;br /&gt;
#:[[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
==6. Add configuration==&lt;br /&gt;
&lt;br /&gt;
===A. Open Config.ini in a text editor===&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Mac OS X&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
#Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#:[[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
#Double-click &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; to open it in TextEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Linux&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
#Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#:[[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
#Double-click &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; to open it in KWrite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Windows&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
#Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#:[[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
#Right click the CONFIG partition&lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#:[[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#:[[File:11-b.png|480px|screenshot]]&lt;br /&gt;
#Click OK.&lt;br /&gt;
#You should now be able to see the CONFIG partition in your Windows Explorer. Select the &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; configuration file &lt;br /&gt;
#:[[File:12-b.png|780px|screenshot]]&lt;br /&gt;
#Click on Edit to open it.&lt;br /&gt;
&lt;br /&gt;
===B. Edit Config.ini===&lt;br /&gt;
&lt;br /&gt;
#Insert your IPv6 prefix, subnet and gateway.&lt;br /&gt;
#:[[File:Edit config ini.png|580px|screenshot]]&lt;br /&gt;
#:*The IPv6 prefix should consist of four groups of hexadecimal digits, separated by colons (&#039;:&#039;). Each group can contain up to four hex digits.&lt;br /&gt;
#:*For example, a valid prefix could look like this: &amp;lt;code&amp;gt;2a00:fb01:400:100&amp;lt;/code&amp;gt;&lt;br /&gt;
#:*&#039;&#039;&#039;Important:&#039;&#039;&#039;&lt;br /&gt;
#:**The prefix should not have a trailing &#039;:&#039;&lt;br /&gt;
#:**IPv6 CIDR notation allows for a double colon (&#039;::&#039;) to represent consecutive groups of zeroes in an address. However, the prefix configuration in this context does &#039;&#039;&#039;not&#039;&#039;&#039; support &#039;::&#039;. Hence, the &#039;::&#039; shorthand should &#039;&#039;&#039;not&#039;&#039;&#039; be used: even if some groups are all zeros, they must be explicitly written out.&lt;br /&gt;
#Save the changes. &lt;br /&gt;
#:* If you have trouble saving this file directly, you may need to save to a known location first, then copy the file into place.&lt;br /&gt;
#:* If you need help, please do not hesitate to post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:*:[[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== C. Copy Node Operator private key to config partition===&lt;br /&gt;
&lt;br /&gt;
#Copy &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; (created in [[Node Provider Onboarding#6. Setup the Node Operator keys|Node Provider Onboarding step 6]]) to the &amp;lt;code&amp;gt;CONFIG&amp;lt;/code&amp;gt; partition. This file should have the name &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt;, and sit next to &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt;, NOT inside the &amp;lt;code&amp;gt;ssh_authorized_keys&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
==7. Connect Crash Cart==&lt;br /&gt;
#In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine.&lt;br /&gt;
#Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#:[[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
==8. UEFI Setup and Boot Menu==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Make sure that server date/time is set to UTC (Universal Time Coordinated) &lt;br /&gt;
&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
*[[Node Provider Machine Hardware Guide#Gen 2 Node Machine requirements|Gen2 hardware]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen2 Dell]]&lt;br /&gt;
** [[IC-OS Installation - UEFI Configuration - Gen2 Supermicro]]&lt;br /&gt;
** [[IC-OS Installation - UEFI Configuration - Gen2 Gigabyte]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen2 ASUS]]&lt;br /&gt;
*[[Node Provider Machine Hardware Guide#Gen 1 Node Machine requirements|Gen1 hardware]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen1 Dell|IC-OS Installation - UEFI Configuration - Gen1 Dell (Poweredge R6525)]]&lt;br /&gt;
**[[IC-OS Installation - UEFI Configuration - Gen1 Supermicro]]&lt;br /&gt;
***&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Do NOT enable the RAID bios setting. Doing so will cause issues with the IC-OS installation.&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished configuring the BIOS.&lt;br /&gt;
&lt;br /&gt;
==9. IC-OS Installation==&lt;br /&gt;
#Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#:[[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
#The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 10 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#:[[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
#If the installation finished successfully, it will initiate a reboot. &lt;br /&gt;
#:[[File:38-sm.png|580px|screenshot]]&amp;lt;br /&amp;gt;&lt;br /&gt;
==10. First Boot==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
#Once you see this message, you may unplug the USB stick and VGA/Video. &lt;br /&gt;
#:[[File:Node join message.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your machine successfully joined the Internet Computer! The machine has joined the IC and the Node Provider will start receiving rewards!&lt;br /&gt;
&lt;br /&gt;
==11. Verify node onboarding==&lt;br /&gt;
&lt;br /&gt;
#Verify that your node was successfully onboarded by checking its status on the [https://dashboard.internetcomputer.org/ dashboard] is set to either “Awaiting Subnet” or “Active in Subnet”. &lt;br /&gt;
#*The dashboard can be searched by your Node Provider principal. There, you should see the Node ID of your node (Node ID is outputted in step 10).&lt;br /&gt;
#*If the status of your node is not either “Awaiting Subnet” or “Active in Subnet”, or if it is not listed under your Node Provider principal, you should contact the [[Node Provider Matrix channel]] for assistance.&lt;br /&gt;
#*:[[File:Node onboarding verification.png|680px|screenshot]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=6934</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=6934"/>
		<updated>2023-12-20T22:41:16Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Added note about LACP bonding&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide is designed to provide an overview of the networking requirements and guide Node Providers through setting up their servers into a rack with functioning networking.&lt;br /&gt;
&lt;br /&gt;
Configuring networks is not trivial. You should be familiar with IP networking, network equipment and network cabling.  &lt;br /&gt;
&lt;br /&gt;
Resources to learn about networking: &lt;br /&gt;
&lt;br /&gt;
* [https://learningnetwork.cisco.com/s/article/200-301-ccna-study-materials CCNA Study Materials]&lt;br /&gt;
* Kevin Wallace [https://www.youtube.com/@kwallaceccie YouTube Training Videos]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DFINITY does not provide support for network configuration.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you hire technical assistance, keep decentralization and security in mind. Use a local technician you personally know and carefully monitor their work.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps per node&lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (serving responses to client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes in a given data center per node provider (IPv4 addresses cannot be shared between node providers). See [[Node Provider Networking Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for table.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC-OS Installation Runbook#6. Add configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;at least one 10G network port&#039;&#039;&#039; on each server is connected to the 10G switch. SFP+ and Ethernet are supported.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the 10G ports are in a cluster as seen above. Vendors differ.  &lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== Network Configuration ==&lt;br /&gt;
Node machines require:&lt;br /&gt;
&lt;br /&gt;
* The ability to acquire a public static IPv6 address on a /64 subnet&lt;br /&gt;
* An IPv6 gateway to communicate with other nodes on the broad internet&lt;br /&gt;
* Unfiltered internet access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of every four nodes requires:&lt;br /&gt;
&lt;br /&gt;
* The ability to acquire a public static IPv4 address&lt;br /&gt;
* An IPv4 gateway to communicate with other nodes on the broad internet&lt;br /&gt;
* Unfiltered internet access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are many many ways to configure the network and some details depend on the ISP and data center. Here are some [[Example Network Configuration Scenarios]]. &lt;br /&gt;
&lt;br /&gt;
See the [[Node Provider Networking Troubleshooting Guide]] for help. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Maintenance or node recovery will require physical access in this case.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart.&lt;br /&gt;
* Connect the BMC to a separate dumb switch, and the dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, and create a separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own software firewalls and rate limiters strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
=== Don&#039;t configure the switch to use LACP bonding ===&lt;br /&gt;
This feature is on the roadmap for investigation but IC nodes do not support LACP bonding at the moment. Configuring it on the switch may cause problems with nodes.&lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Is at least &#039;&#039;&#039;one 10G port&#039;&#039;&#039; on each server plugged into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=6716</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=6716"/>
		<updated>2023-11-23T13:51:13Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Network Cabling */ Change 2 ports requirement, other verbiage.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide is designed to provide an overview of the networking requirements and guide Node Providers through setting up their servers into a rack with functioning networking.&lt;br /&gt;
&lt;br /&gt;
Configuring networks is not trivial. You should be familiar with IP networking, network equipment and network cabling.  &lt;br /&gt;
&lt;br /&gt;
Resources to learn about networking: &lt;br /&gt;
&lt;br /&gt;
* [https://learningnetwork.cisco.com/s/article/200-301-ccna-study-materials CCNA Study Materials]&lt;br /&gt;
* Kevin Wallace [https://www.youtube.com/@kwallaceccie YouTube Training Videos]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DFINITY does not provide support for network configuration.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If you hire technical assistance, keep decentralization and security in mind. Use a local technician you personally know and carefully monitor their work.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps per node&lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (serving responses to client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes in a given data center per node provider (IPv4 addresses cannot be shared between node providers). See [[Node Provider Networking Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for table.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC-OS Installation Runbook#6. Add configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;at least one 10G network port&#039;&#039;&#039; on each server is connected to the 10G switch. SFP+ and Ethernet are supported.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the 10G ports are in a cluster as seen above. Vendors differ.  &lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== Network Configuration ==&lt;br /&gt;
Node machines require:&lt;br /&gt;
&lt;br /&gt;
* The ability to acquire a public static IPv6 address on a /64 subnet&lt;br /&gt;
* An IPv6 gateway to communicate with other nodes on the broad internet&lt;br /&gt;
* Unfiltered internet access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of every four nodes requires:&lt;br /&gt;
&lt;br /&gt;
* The ability to acquire a public static IPv4 address&lt;br /&gt;
* An IPv4 gateway to communicate with other nodes on the broad internet&lt;br /&gt;
* Unfiltered internet access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are many many ways to configure the network and some details depend on the ISP and data center. Here are some [[Example Network Configuration Scenarios]]. &lt;br /&gt;
&lt;br /&gt;
See the [[Node Provider Networking Troubleshooting Guide]] for help. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Maintenance or node recovery will require physical access in this case.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart.&lt;br /&gt;
* Connect the BMC to a separate dumb switch, and the dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, and create a separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own software firewalls and rate limiters strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Is at least &#039;&#039;&#039;one 10G port&#039;&#039;&#039; on each server plugged into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide_(with_an_HSM)&amp;diff=5928</id>
		<title>Node Deployment Guide (with an HSM)</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide_(with_an_HSM)&amp;diff=5928"/>
		<updated>2023-07-13T19:34:59Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 1. Download installation image */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS) on [[Node Provider Machine Hardware Guide#Gen 2 Node Machine requirements|Gen-2 hardware]] using the legacy NitroKey HSM instructions. To use the current instructions, follow the [[IC OS Installation Runbook]].&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to its respective manual.&lt;br /&gt;
&lt;br /&gt;
In case you encounter any issues during the installation process, check the [[Possible Node Onboarding Errors]] page. Otherwise, post your issue in the [https://app.element.io/#/room/#ic-node-providers:matrix.org IC Node Provider Matrix channel].&lt;br /&gt;
&lt;br /&gt;
Many thanks for your efforts in building the Internet Computer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A USB (3.0 speed that can hold at least 4GB) to put the image file on (Faster USBs will allow the process to go much faster.)&lt;br /&gt;
* The NitroKey HSM for your data center.&lt;br /&gt;
* [Optional] A USB hub&lt;br /&gt;
** This is helpful at some data centers for simultaneously connecting keyboard, mouse, Nitrokey, etc.. &lt;br /&gt;
&lt;br /&gt;
== 1. Download installation image ==&lt;br /&gt;
Download the latest release of the &#039;&#039;&#039;IC-OS USB Installer Image&#039;&#039;&#039; and the &#039;&#039;&#039;corresponding checksum&#039;&#039;&#039; from the [https://dashboard.internetcomputer.org/releases Internet Computer Dashboard Releases].&lt;br /&gt;
&lt;br /&gt;
== 2. Verify checksum and unarchive file ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [https://app.element.io/#/room/#ic-node-providers:matrix.org IC Node Provider Matrix channel].&lt;br /&gt;
#: Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [https://app.element.io/#/room/#ic-node-providers:matrix.org IC Node Provider Matrix channel].&lt;br /&gt;
#: Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open PowerShell and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [https://app.element.io/#/room/#ic-node-providers:matrix.org IC Node Provider Matrix channel].&lt;br /&gt;
#: Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Create Bootable USB Stick ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/disk4s1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# The file path is an example. Use the absolute path to the downloaded image. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong device. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/sdb1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=~/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
# Start Rufus &lt;br /&gt;
# Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#: [[File:05.png|480px|screenshot]]&lt;br /&gt;
# You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#: [[File:06.png|480px|screenshot]]&lt;br /&gt;
#: [[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
== 4. Add configuration ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in TextEdit.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:mac_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to post your issue in the [https://app.element.io/#/room/#ic-node-providers:matrix.org IC Node Provider Matrix channel].&lt;br /&gt;
#:[[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#: [[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
# Right click the CONFIG partition &lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#: [[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#: [[File:11-b.png|480px|screenshot]]&lt;br /&gt;
# Click OK.&lt;br /&gt;
# You should now be able to see the CONFIG partition in your Windows Explorer. Select the config.ini configuration file &lt;br /&gt;
#: [[File:12-b.png|780px|screenshot]]&lt;br /&gt;
# Click on Edit to open it.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:13-b.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to post your issue in the [https://app.element.io/#/room/#ic-node-providers:matrix.org IC Node Provider Matrix channel].&lt;br /&gt;
#:[[File:14-b.png|580px|screenshot]]&lt;br /&gt;
# If onboarding without a NitroKey HSM, copy &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; (created in [[Node Provider Onboarding#7.%20Setup%20the%20Node%20Operator%20keys|Node Provider Onboarding step 7]]) to the &amp;lt;code&amp;gt;CONFIG&amp;lt;/code&amp;gt; partition. This file should have the name &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt;, and sit next to &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt;, NOT inside the &amp;lt;code&amp;gt;ssh_authorized_keys&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
# Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in KWrite.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:linux_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to post your issue in the [https://app.element.io/#/room/#ic-node-providers:matrix.org IC Node Provider Matrix channel].&lt;br /&gt;
#:[[File:linux_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 5. Connect Crash Cart ==&lt;br /&gt;
# In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine. &lt;br /&gt;
# Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#: [[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 6. UEFI Setup and Boot Menu ==&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Dell]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Supermicro]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* * [[IC OS Installation - UEFI Configuration - ASUS]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Gigabyte]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - HPE]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished.&lt;br /&gt;
&lt;br /&gt;
== 7. IC-OS Installation ==&lt;br /&gt;
# Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#: [[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
# The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 10 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#:[[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you get asked to insert the HSM, please remove the keyboard and instead insert the HSM USB device. &lt;br /&gt;
#:[[File:37-sm.png|580px|screenshot]]&lt;br /&gt;
# If the installation finished successfully, it will initiate a reboot. &#039;&#039;&#039;Please do not unplug the USB stick or HSM USB&#039;&#039;&#039; device at this point.&lt;br /&gt;
#:[[File:38-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. First Boot ==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
&#039;&#039;&#039;Do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039;&lt;br /&gt;
# The first boot of the IC-OS still requires the HSM USB device. Please wait until further instructions. This step can take up to 2 minutes.&lt;br /&gt;
#:[[File:39-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you see this message, you may unplug the HSM USB device, USB stick and VGA/Video. Your machine successfully joined the Internet Computer!&lt;br /&gt;
#:[[File:40-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your machine successfully joined the Internet Computer! Again, once you see this message, &#039;&#039;&#039;do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039; The machine has joined the IC and the node provider will start receiving rewards!&lt;br /&gt;
&lt;br /&gt;
== 9. Verify node onboarding ==&lt;br /&gt;
&lt;br /&gt;
# Return to the [[Node Provider Onboarding#10. Onboard nodes|Node Provider Onboarding]] instructions to verify that your nodes were successfully onboarded&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Troubleshooting_Node_Deployment_Errors&amp;diff=5927</id>
		<title>Troubleshooting Node Deployment Errors</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Troubleshooting_Node_Deployment_Errors&amp;diff=5927"/>
		<updated>2023-07-13T19:34:10Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Suggested Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has some error codes that may display as you are onboarding your nodes. Please review the examples, causes, and proposed solutions before contacting support. &lt;br /&gt;
&lt;br /&gt;
If you need Dell to service your machine, then these links will assist in [[Retrieving a Dell TSR Log|retrieving a Dell TSR Log]] and in resetting the iDRAC password.&lt;br /&gt;
&lt;br /&gt;
If you encounter an error not listed here, please capture a screenshot and detail when it happened, which stage in onboarding you were at, the status of any lights on the server, and any other relevant details. Post your issue and accompanying screenshots in the [https://app.element.io/#/room/#ic-node-providers:matrix.org IC Node Provider Matrix channel].&lt;br /&gt;
&lt;br /&gt;
== Orchestrator Started ==&lt;br /&gt;
This message is not an error, nor is it confirmation that the node is running properly. &lt;br /&gt;
&lt;br /&gt;
* Check [https://dashboard.internetcomputer.org/ the dashboard] to check the status of that particular node. (Status explanations are [[Node Provider Troubleshooting#Node%20Status%20on%20the%20Dashboard|here]].) Use the principal ID that was assigned to the node when it was onboarded to identify it. Use the principal ID that was assigned to the node when it was onboarded to identify it.&lt;br /&gt;
* If the node is not visible on the dashboard then it has not registered with the Internet Computer. &lt;br /&gt;
** If you have recently installed a current IC-OS image, then you can try inserting the HSM and/or a reboot to see if it joins. This would work if the IC-OS installation was successful and only the registration and joining was interrupted. &lt;br /&gt;
** If you have &#039;&#039;not&#039;&#039; recently installed a current IC-OS image, then do &#039;&#039;not&#039;&#039; insert the HSM. You do not want the node to rejoin with an old IC-OS image, as it will only fail again. Instead, you should consider [[Updating Firmware|upgrading the firmware]] if it is running on old versions, and then redeploy the node with [[Node Provider Documentation|a fresh/current IC-OS image]] (which will assign a new principal to the node so that you can identify it in the dashboard.)&lt;br /&gt;
&lt;br /&gt;
== General Troubleshooting ==&lt;br /&gt;
During the IC OS installation, you may hit enter to obtain console access to troubleshoot any issues you are encountering. You can also hit enter at the error page in order to access the console.&lt;br /&gt;
&lt;br /&gt;
Once you have console access, in order to stop the IC OS installation service, enter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;$ systemctl stop setupos&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Missing Drives ==&lt;br /&gt;
==== Example Error ====&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                       INTERNET COMPUTER - SETUP - FAILED&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        Please contact the Node Provider Matrix channel for support.&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                                     ERROR&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 Not enough drives found. Are all drives correctly installed?&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                                     ERROR&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Another version of it might say  &amp;quot;Aggregate Disk size does not meet requirements&amp;quot;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Common Causes ====&lt;br /&gt;
This error means that the IC-OS installation medium could not detect all required drives. This is a common issue, even if you believe that all drives are installed correctly. Some of them may not be functioning properly, or may not be fully seated into the chassis.&lt;br /&gt;
&lt;br /&gt;
==== Suggested Solutions ====&lt;br /&gt;
Check that all drives are fully seated and installed correctly, or install the required number of drives. You may be able to check the drives for indication LEDs to see which may not be installed or functioning correctly.&lt;br /&gt;
&lt;br /&gt;
== Invalid CPU Configuration ==&lt;br /&gt;
==== Example Error ====&lt;br /&gt;
&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                       INTERNET COMPUTER - SETUP - FAILED&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        Please contact the Node Provider Matrix channel for support.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                                     ERROR&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 Number of threads (16/32) does NOT meet system requirements.&lt;br /&gt;
 &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                                     ERROR&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Common Causes ====&lt;br /&gt;
Issues related to CPU capability usually mean that the CPUs are not configured correctly in the system BIOS.&lt;br /&gt;
&lt;br /&gt;
==== Suggested Solutions ====&lt;br /&gt;
Please check that BIOS settings are configured correctly. It may be helpful to reset all settings to factory defaults, and go through the BIOS configuration again.&lt;br /&gt;
== Unable to Reach Internet ==&lt;br /&gt;
==== Example Error ====&lt;br /&gt;
&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                       INTERNET COMPUTER - SETUP - FAILED&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        Please contact the Node Provider Matrix channel for support.&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                                     ERROR&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Unable to ping IPv6 gateway.&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                                     ERROR&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
==== Common Causes ====&lt;br /&gt;
This error means that the node is not able to communicate with the network properly. This can be due to a misconfigured network configuration, or due to issues somewhere between the node and the rest of the internet.&lt;br /&gt;
&lt;br /&gt;
==== Suggested Solutions ====&lt;br /&gt;
Please try to capture any output that is displayed before this error shows. For example:&lt;br /&gt;
 * Printing user defined network settings...&lt;br /&gt;
  IPv6 Prefix : XXX&lt;br /&gt;
  IPv6 Subnet : XXX&lt;br /&gt;
  IPv6 Gateway: XXX&lt;br /&gt;
  &lt;br /&gt;
 * Printing system&#039;s network settings...&lt;br /&gt;
  IPv6 Prefix : XXX&lt;br /&gt;
  IPv6 Subnet : XXX&lt;br /&gt;
  IPv6 Gateway: XXX&lt;br /&gt;
  &lt;br /&gt;
 * Printing IPv6 addresses...&lt;br /&gt;
  SetupOS: XXX&lt;br /&gt;
  HostOS : XXX&lt;br /&gt;
  GuestOS: XXX&lt;br /&gt;
&lt;br /&gt;
Please compare this, and the initial configuration, to what you expect. If this configuration does not match, please update the initial configuration, and try again.&lt;br /&gt;
&lt;br /&gt;
If this does match the expected configuration, please attempt to diagnose any machines between this node and the rest of the internet. This could be due to improper firewall configuration, or an issue with the data center’s network. If all configuration looks correct, please attempt to reboot any machines between this node and the rest of the internet. In most cases, this would be a firewall. Rebooting the firewall - even if it seems to be operating correctly - has resolved this issue many times.&lt;br /&gt;
&lt;br /&gt;
== Unable to setup PV ==&lt;br /&gt;
==== Example Error ====&lt;br /&gt;
&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                       INTERNET COMPUTER - SETUP - FAILED&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        Please contact the Node Provider Matrix channel for support.&lt;br /&gt;
  &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                                     ERROR&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Unable to setup PV on drive &#039;/dev/nvme8n1&#039;.&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
                                     ERROR&lt;br /&gt;
 --------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
==== Common Causes ====&lt;br /&gt;
This error means that the node is able to recognize that a drive is installed, but is unable to write to it. This could indicate that there is a hardware issue with the drive.&lt;br /&gt;
&lt;br /&gt;
==== Suggested Solutions ====&lt;br /&gt;
Please try to remove and re-install all drives, before attempting to install the node again. It may be helpful to independently verify that each drive is functioning correctly.&lt;br /&gt;
== Long Wait on Node Join ==&lt;br /&gt;
==== Example Error ====&lt;br /&gt;
 Orchestrator started.&lt;br /&gt;
 Starting node registration.&lt;br /&gt;
 Attaching HSM.&lt;br /&gt;
 Sending add_node request.&lt;br /&gt;
&lt;br /&gt;
But not:&lt;br /&gt;
 Join request successful!&lt;br /&gt;
 You may now safely remove the HSM.&lt;br /&gt;
&lt;br /&gt;
==== Common Causes ====&lt;br /&gt;
The node has installed and launched successfully, but is unable to join the network. This could be due to an out-of-date IC-OS installation image, trouble contacting the NNS, or node installation limits on the network.&lt;br /&gt;
&lt;br /&gt;
==== Suggested Solutions ====&lt;br /&gt;
Please verify that a recent [https://dashboard.internetcomputer.org/releases IC-OS installation] image version is being used, and check https://dashboard.internetcomputer.org/ to see how many nodes are currently registered under your Node Provider. If there are more nodes listed than expected, or if there are multiple nodes overlapping, please have any extra nodes removed from the network before attempting to install again. This can be caused if multiple installations have been performed on the same hardware, without cleaning up the records from the network.&lt;br /&gt;
&lt;br /&gt;
* [[Internet Computer wiki|Return to Wiki Home]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=5923</id>
		<title>Node Deployment Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=5923"/>
		<updated>2023-07-13T19:24:43Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 1. Download installation image */ Replaced link for download - dynamic download links!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS) on [[Node Provider Machine Hardware Guide#Gen 2 Node Machine requirements|Gen-2 hardware]]. Gen-1 hardware Node Providers should use the [[Node Provider Documentation#Onboarding for accepted node providers|Gen-1 runbooks]].&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to its respective manual.&lt;br /&gt;
&lt;br /&gt;
If you encounter issues through any of these steps, check the [[Node Provider Troubleshooting]] page. If that does not solve your problem, you are encouraged to ask for assistance in the [[Node Provider Matrix channel]].&lt;br /&gt;
&lt;br /&gt;
Note: the following instructions are for onboarding nodes without using a NitroKey HSM. If you wish to follow the legacy procedure to onboard using a NitroKey HSM, follow the [[NitroKey HSM installation runbook]].&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A USB (3.0 speed that can hold at least 4GB) to put the image file on (Faster USBs will allow the process to go much faster.)&lt;br /&gt;
* The &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; for your data center (Acquired from [[Node Provider Onboarding#5. Setup the Node Operator keys|Node Provider Onboarding step 7]])&lt;br /&gt;
* It is recommended that each server have a label with the BMC&#039;s MAC address for ease of identification in future dashboard upgrades.&lt;br /&gt;
&lt;br /&gt;
== 1. Download installation image ==&lt;br /&gt;
Download the latest release of the &#039;&#039;&#039;IC-OS USB Installer Image&#039;&#039;&#039; and the &#039;&#039;&#039;corresponding checksum&#039;&#039;&#039; from the [https://dashboard.internetcomputer.org/releases Internet Computer Dashboard Releases]. &lt;br /&gt;
&lt;br /&gt;
== 2. Verify checksum and unarchive file ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#: Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#: Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open PowerShell and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Compare the calculated checksum with the &#039;&#039;&#039;IC-OS installation image checksum&#039;&#039;&#039; file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#: Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Create Bootable USB Stick ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/disk4s1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# The file path is an example. Use the absolute path to the downloaded image. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong device. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/sdb1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=~/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
# Start Rufus &lt;br /&gt;
# Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#: [[File:05.png|480px|screenshot]]&lt;br /&gt;
# You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#: [[File:06.png|480px|screenshot]]&lt;br /&gt;
#: [[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
== 4. Add configuration ==&lt;br /&gt;
&lt;br /&gt;
=== A. Open Config.ini in a text editor ===&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Mac OS X&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
# Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#:[[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; to open it in TextEdit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Linux&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
# Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#:[[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; to open it in KWrite.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;Windows&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
# Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#:[[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
# Right click the CONFIG partition&lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#:[[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#:[[File:11-b.png|480px|screenshot]]&lt;br /&gt;
# Click OK.&lt;br /&gt;
# You should now be able to see the CONFIG partition in your Windows Explorer. Select the &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt; configuration file &lt;br /&gt;
#:[[File:12-b.png|780px|screenshot]]&lt;br /&gt;
# Click on Edit to open it.&lt;br /&gt;
&lt;br /&gt;
=== B. Edit Config.ini ===&lt;br /&gt;
&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway.&lt;br /&gt;
#:[[File:Edit config ini.png|580px|screenshot]]&lt;br /&gt;
#:* The IPv6 prefix should consist of four groups of hexadecimal digits, separated by colons (&#039;:&#039;). Each group can contain up to four hex digits.&lt;br /&gt;
#:* For example, a valid prefix could look like this: &amp;lt;code&amp;gt;2a00:fb01:400:100&amp;lt;/code&amp;gt;&lt;br /&gt;
#:*&#039;&#039;&#039;Important:&#039;&#039;&#039;&lt;br /&gt;
#:** The prefix should not have a trailing &#039;:&#039;&lt;br /&gt;
#:** IPv6 CIDR notation allows for a double colon (&#039;::&#039;) to represent consecutive groups of zeroes in an address. However, the  prefix configuration in this context does &#039;&#039;&#039;not&#039;&#039;&#039; support &#039;::&#039;. The &#039;::&#039; shorthand should &#039;&#039;&#039;not&#039;&#039;&#039; be used. Even if some groups are all zeros, they must be explicitly written out.&lt;br /&gt;
# Save the changes. &lt;br /&gt;
#:* If you have trouble saving this file directly, you may need to save to a known location first, then copy the file into place.&lt;br /&gt;
#:* If you need help, please do not hesitate to post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:*:[[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== C. Copy Node Operator private key to config partition ===&lt;br /&gt;
&lt;br /&gt;
# Copy &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; (created in [[Node Provider Onboarding#7. Setup the Node Operator keys|Node Provider Onboarding step 7]]) to the &amp;lt;code&amp;gt;CONFIG&amp;lt;/code&amp;gt; partition. This file should have the name &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt;, and sit next to &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt;, NOT inside the &amp;lt;code&amp;gt;ssh_authorized_keys&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
== 5. Connect Crash Cart ==&lt;br /&gt;
# In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine. &lt;br /&gt;
# Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#: [[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 6. UEFI Setup and Boot Menu ==&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Dell]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Supermicro]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* * [[IC OS Installation - UEFI Configuration - ASUS]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Gigabyte]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - HPE]]&lt;br /&gt;
--&amp;gt;&#039;&#039;&#039;Important:&#039;&#039;&#039; Do NOT enable the RAID bios setting. Doing so will cause issues with the IC-OS installation.&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished configuring the BIOS.&lt;br /&gt;
&lt;br /&gt;
== 7. IC-OS Installation ==&lt;br /&gt;
# Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#: [[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
# The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 10 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#:[[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
# If the installation finished successfully, it will initiate a reboot. &lt;br /&gt;
#:[[File:38-sm.png|580px|screenshot]]&amp;lt;br /&amp;gt;&lt;br /&gt;
== 8. First Boot ==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
&#039;&#039;&#039;Do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039;&lt;br /&gt;
# Once you see this message, you may unplug the USB stick and VGA/Video. You can ignore the message to remove the HSM, as you did not use an HSM to onboard your nodes. &lt;br /&gt;
#:[[File:40-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your machine successfully joined the Internet Computer! Again, once you see this message, &#039;&#039;&#039;do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039; The machine has joined the IC and the Node Provider will start receiving rewards!&lt;br /&gt;
&lt;br /&gt;
== 9. Verify node onboarding ==&lt;br /&gt;
&lt;br /&gt;
# Verify that your node was successfully onboarded by checking its status on the [https://dashboard.internetcomputer.org/ dashboard] is set to either “Awaiting Subnet” or “Active in Subnet”. &lt;br /&gt;
#* The dashboard can be searched by your Node Provider principal. There, you should see the Node ID of your node (Node ID outputted in step 8). &lt;br /&gt;
#* If the status of your node is not either “Awaiting Subnet” or “Active in Subnet”, or if it is not listed under your Node Provider principal, you should contact the [[Node Provider Matrix channel]] for assistance.&lt;br /&gt;
#*:[[File:Dashboard-node-verification.png|thumb|998x998px]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Machine_Hardware_Guide&amp;diff=5882</id>
		<title>Node Provider Machine Hardware Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Machine_Hardware_Guide&amp;diff=5882"/>
		<updated>2023-07-11T20:10:19Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Purchasing Hardware Guide */ Edits to &amp;quot;purchase hardware&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Node Providers operate one or more node machines than run in the Internet Computer network. &lt;br /&gt;
&lt;br /&gt;
Gen1 hardware requirements have been used by Node Providers to set up node machines during the Genesis launch. &lt;br /&gt;
&lt;br /&gt;
The Gen2 hardware requirements have been defined for the further growth of the Internet Computer network. The specifications for the Gen2 node machines are generic (instead of vendor specific) and support VM memory encryption and attestation, which will be needed in future features on the Internet Computer. &lt;br /&gt;
&lt;br /&gt;
While Gen2 Node Providers are only strictly required to follow the generic specifications &#039;&#039;&#039;(the IC-OS installation will fail if the generic specifications are not met)&#039;&#039;&#039;, it is strongly recommended for Node Providers to purchase one of the validated configurations listed below. &lt;br /&gt;
== Gen 2 Node Machine requirements ==&lt;br /&gt;
==== Generic specification ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Dual Socket AMD EPYC Milan CPU - Recommended: [https://en.wikichip.org/wiki/amd/epyc/7313 7313] (16C/32T 3 Ghz)&lt;br /&gt;
[https://en.wikichip.org/wiki/amd/epyc#7003_Series_.28Zen_3.29 optionally] 7343, 7373, 73F3&lt;br /&gt;
|-&lt;br /&gt;
| 16x 32GB RDIMM, 3200MT/s, Dual Rank&lt;br /&gt;
|-&lt;br /&gt;
| 5x 6.4TB NVMe Mixed Mode (DWPD &amp;gt;= 3)&lt;br /&gt;
|-&lt;br /&gt;
| Dual Port 10G SFP or BASE-T&lt;br /&gt;
|-&lt;br /&gt;
| TPM 2.0&lt;br /&gt;
|}&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; Do NOT order a RAID controller for your node machine. If a RAID controller is included in your setup, it will cause issues with the installation of IC-OS on your machine.&lt;br /&gt;
&lt;br /&gt;
=== Dfinity-validated configurations ===&lt;br /&gt;
DFINITY has [https://forum.dfinity.org/t/draft-motion-proposal-new-hardware-specification-and-remuneration-for-ic-nodes/14202/14?u=garym validated] the following Gen2 hardware configurations.&lt;br /&gt;
==== Dell ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7343 3.2GHz, 16C/32T, 128M Cache (190W) &lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB RDIMM, 3200MT/s, Dual Rank 16Gb BASE x8&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4TB Enterprise NVMe Mixed Use AG Drive U.2 Gen4 with carrier&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PowerEdge R6525 Motherboard, with 2 x 1Gb Onboard LOM (BCM5720)MLK V2&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Dual, Hot-plug, Redundant Power Supply (1+1) 1100W, Mixed Mode Titanium&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Intel X710 Dual Port 10GbE SFP+, OCP NIC 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Trusted Platform Module 2.0 V3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ASUS ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7313 (3,00 GHz, 16-Core, 128 MB)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB ECC Reg ATP DDR4 3200 RAM &lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4 TB NVMe Kioxia SSD 3D-NAND TLC U.3 (Kioxia CM6-V)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Asus Mainboard KMPP-D32 Series (without OCP 3.0, without Pike)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1600 Watt redundant PSU&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Broadcom 25 Gigabit P225P SFP28 Dual Port Network Card&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|TPM 2.0*&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Note Gen2 machines require TPM 2.0 hardware but this specific test machine did not include it. &lt;br /&gt;
&lt;br /&gt;
==== Supermicro ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7313 (3,00 GHz, 16-Core, 128 MB)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB ECC Reg DDR4 3200 RAM&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4 TB NVMe TLC SSD, PCIe 4.0 x4, U.3 2.5&amp;quot;, 3 DWPD&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SuperMicro H12DSU-iN&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1200 Watt redundant PSU&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual Port 10GBase-T Network Adapter Intel® X710-TM4*&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Dual Port 10GbE Network Adapter Intel® X710-TM4, SFP+*&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Trusted Platform Module 2.0&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Only one dual port network adaptor is required.&lt;br /&gt;
&lt;br /&gt;
==== Currently pending validation: Gigabyte ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7313 (3,00 GHz, 16-Core, 128 MB)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB ECC Reg DDR4 3200 RAM&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4 TB NVMe TLC SSD, PCIe 4.0 x4, U.3 2.5&amp;quot;, 3 DWPD&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Gigabyte MZ92-FS1 Rev. 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1200 Watt redundant PSU&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual Port 1000Base-T Network Adapter Intel® I350-AM2*&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Dual Port 10GbE Network Adapter, Broadcom NetXtreme E-Series*&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Trusted Platform Module 2.0&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Only one dual port network adaptor is required.&lt;br /&gt;
&lt;br /&gt;
=== Community-validated configurations ===&lt;br /&gt;
Node Providers have validated the following Gen2 hardware configurations:&lt;br /&gt;
&lt;br /&gt;
==== Dell PowerEdge R7525 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|2&lt;br /&gt;
|AMD 7313 3.0GHz,16C/32T,128M,155W,3200&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|32GB RDIMM, 3200MT/s, Dual Rank 16Gb BASE x8&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|6.4TB Enterprise NVMe Mixed Use AG Drive U.2 Gen4 with carrier&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|PowerEdge R7525 Motherboard, with 2 x 1Gb Onboard LOM (BCM5720)MLK V2&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|Dual, Hot-plug, Power Supply Redundant (1+1), 800W, Mixed Mode, NAF&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Intel X710 Dual Port 10GbE SFP+, OCP NIC 3.0&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Trusted Platform Module 2.0 V3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Gen 1 Node Machine requirements ==&lt;br /&gt;
If you&#039;re a Node Provider acquiring machines to join the IC, use the Gen2 specifications listed  above. This section is for Gen1 Node Providers who joined before 2022. &lt;br /&gt;
&lt;br /&gt;
==== SuperMicro ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || AS - 1023US - TR4&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Rome 7302 DP/UP 16C/32T 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB DDR4-3200 2Rx4 ECC REG DIMM&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Samsung PM983 3.2TB NVMe PCIE/SATA Hybrid M.2 &amp;amp; 1 PCIE&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 800W Power Supply&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Std LP 2-port 10G RJ45, Intel x540&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Micron 5300 PRO 7.4TB, SATA, 2.5&#039;, 3D TLC, .6DWPD (with Caddie)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C13/C14 13A Power Cord&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Dell - type 1 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R6525&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Chassis - Supports Up to 10 NVMe drives, 12 drives total&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual 1 GB on Motherboard&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Low Profile PCIe Slots&lt;br /&gt;
|-&lt;br /&gt;
| - || 3 Year Basic NBD Support&lt;br /&gt;
|-&lt;br /&gt;
| - || iDrac Enterprise&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual port 10GbE Base - T Adapter Broadcom, PCIe Low Profile&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 3.2TB NVMe, Mixed Use, 2.5&amp;quot; with Carrier&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB RDIMM (3200MT/s)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD 7302 3GHz, 16C/32T, 128M, 155W, 3200&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Single Power Supply (800W)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C13-C14, 3M, 125V 15A Power Cored&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Dell - type 2 ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R6515&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3.5&amp;quot; Chassis with up to 4 Hot-Plug Hard Drives and OS RAID&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual 1 Gb on Motherboard&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Low Profile PCIe Slots&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Standard Fan&lt;br /&gt;
|-&lt;br /&gt;
| - || 3 Year Basic NBD Support&lt;br /&gt;
|-&lt;br /&gt;
| - || iDrac Enterprise&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Dual Port 10GbE Base - T Adapter Broadcom, PCIe LOw Profile&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 480GB SSD SATA Mix Use 6Gbps 512 2.5in Hot-Plug AG Drive, 3.5in&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 8GB RDIMM, 3200 MT/s, Single Rank&lt;br /&gt;
|-&lt;br /&gt;
| 1 || AMD EPYC 7232P 3.10GHz, 8C/16T, 64M Cache (120W) DDR4-3200&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual Hot-Plug Redundant Power Supply (1+1), 550W&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Jumper Cord - C13/C14, .6M, 250V, 13A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Purchasing Hardware ==&lt;br /&gt;
# &#039;&#039;&#039;Choose your node machine configuration&#039;&#039;&#039;&lt;br /&gt;
#* Stick with the configurations above. Anything else is unsupported.&lt;br /&gt;
# &#039;&#039;&#039;Where to buy?&#039;&#039;&#039;&lt;br /&gt;
#* [https://www.supermicro.com/en/wheretobuy Supermicro]&lt;br /&gt;
#* [https://www.dell.com/en-us/shop/dell-poweredge-servers/sc/servers Dell]&lt;br /&gt;
#* [https://www.gigabyte.com/WheretoBuy/Enterprise Gigabyte]&lt;br /&gt;
#* [https://servers.asus.com/support/wheretobuy/117 ASUS]&lt;br /&gt;
# &#039;&#039;&#039;Place your order&#039;&#039;&#039;&lt;br /&gt;
#* Double check the components meet the generic specs above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lead times can be weeks to months. Plan accordingly with respect to [[Node Provider Onboarding|onboarding]].&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5835</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5835"/>
		<updated>2023-06-29T20:51:25Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Requirements */ Added network configuration guidance and explicit limits to guidance&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide is designed to provide an overview of the networking requirements and guide Node Providers through setting up their servers into a rack with functioning networking.&lt;br /&gt;
&lt;br /&gt;
Configuring networks is not trivial. You should be familiar with IP networking, network equipment and network cabling.  &lt;br /&gt;
&lt;br /&gt;
Resources to learn about networking: &lt;br /&gt;
&lt;br /&gt;
* [https://learningnetwork.cisco.com/s/article/200-301-ccna-study-materials CCNA Study Materials]&lt;br /&gt;
* Kevin Wallace [https://www.youtube.com/@kwallaceccie YouTube Training Videos]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DFINITY does not provide support for network configuration.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps per node&lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (serving responses to client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes in a given data center per node provider (IPv4 addresses cannot be shared between node providers). See [[Node Provider Networking Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for table.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC OS Installation Runbook#4.%20Add%20configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;first two 10G network ports&#039;&#039;&#039; on each server are connected to the 10G switch.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the bottom two ports are considered ports 1 and 2 and will be enumerated by Linux in this order. Connect the bottom two ports to the switch. &lt;br /&gt;
&lt;br /&gt;
Servers from other vendors will differ! See the server documentation for guidance. &lt;br /&gt;
&lt;br /&gt;
This is subject to change - the IC-OS network configuration logic is undergoing improvements to make it more flexible.&lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== Network Configuration ==&lt;br /&gt;
Node machines require:&lt;br /&gt;
&lt;br /&gt;
* The ability to acquire a public static IPv6 address on a /64 subnet&lt;br /&gt;
* An IPv6 gateway to communicate with other nodes on the broad internet&lt;br /&gt;
* Unfiltered internet access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One of every four nodes requires:&lt;br /&gt;
&lt;br /&gt;
* The ability to acquire a public static IPv4 address&lt;br /&gt;
* An IPv4 gateway to communicate with other nodes on the broad internet&lt;br /&gt;
* Unfiltered internet access&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are many many ways to configure the network and some details depend on the ISP and data center. It is out of the scope of this document to provide complete guidance about this.&lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Maintenance or node recovery will require physical access in this case.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart.&lt;br /&gt;
* Connect the BMC to a separate dumb switch, and the dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, and create a separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own firewall(s) and rate limiters very strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Do the &#039;&#039;&#039;first and second 10G ports&#039;&#039;&#039; on each server plug into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5834</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5834"/>
		<updated>2023-06-29T20:07:54Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Added note about dfinity support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide is designed to provide an overview of the networking requirements and guide Node Providers through setting up their servers into a rack with functioning networking.&lt;br /&gt;
&lt;br /&gt;
Configuring networks is not trivial. You should be familiar with IP networking, network equipment and network cabling.  &lt;br /&gt;
&lt;br /&gt;
Resources to learn about networking: &lt;br /&gt;
&lt;br /&gt;
* [https://learningnetwork.cisco.com/s/article/200-301-ccna-study-materials CCNA Study Materials]&lt;br /&gt;
* Kevin Wallace [https://www.youtube.com/@kwallaceccie YouTube Training Videos]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;DFINITY does not provide support for network configuration.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps per node&lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (serving responses to client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes in a given data center per node provider (IPv4 addresses cannot be shared between node providers). See [[Node Provider Networking Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for table.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC OS Installation Runbook#4.%20Add%20configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;first two 10G network ports&#039;&#039;&#039; on each server are connected to the 10G switch.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the bottom two ports are considered ports 1 and 2 and will be enumerated by Linux in this order. Connect the bottom two ports to the switch. &lt;br /&gt;
&lt;br /&gt;
Servers from other vendors will differ! See the server documentation for guidance. &lt;br /&gt;
&lt;br /&gt;
This is subject to change - the IC-OS network configuration logic is undergoing improvements to make it more flexible.&lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Maintenance or node recovery will require physical access in this case.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart.&lt;br /&gt;
* Connect the BMC to a separate dumb switch, and the dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, and create a separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own firewall(s) and rate limiters very strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Do the &#039;&#039;&#039;first and second 10G ports&#039;&#039;&#039; on each server plug into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5833</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5833"/>
		<updated>2023-06-29T20:06:01Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Added CCNA resources&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide is designed to provide an overview of the networking requirements and guide Node Providers through setting up their servers into a rack with functioning networking.&lt;br /&gt;
&lt;br /&gt;
Configuring networks is not trivial. You should be familiar with IP networking, network equipment and network cabling. &lt;br /&gt;
&lt;br /&gt;
Resources to learn about networking:&lt;br /&gt;
&lt;br /&gt;
* [https://learningnetwork.cisco.com/s/article/200-301-ccna-study-materials CCNA Study Materials]&lt;br /&gt;
* Kevin Wallace [https://www.youtube.com/@kwallaceccie YouTube Training Videos]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps per node&lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (serving responses to client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes in a given data center per node provider (IPv4 addresses cannot be shared between node providers). See [[Node Provider Networking Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for table.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC OS Installation Runbook#4.%20Add%20configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;first two 10G network ports&#039;&#039;&#039; on each server are connected to the 10G switch.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the bottom two ports are considered ports 1 and 2 and will be enumerated by Linux in this order. Connect the bottom two ports to the switch. &lt;br /&gt;
&lt;br /&gt;
Servers from other vendors will differ! See the server documentation for guidance. &lt;br /&gt;
&lt;br /&gt;
This is subject to change - the IC-OS network configuration logic is undergoing improvements to make it more flexible.&lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Maintenance or node recovery will require physical access in this case.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart.&lt;br /&gt;
* Connect the BMC to a separate dumb switch, and the dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, and create a separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own firewall(s) and rate limiters very strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Do the &#039;&#039;&#039;first and second 10G ports&#039;&#039;&#039; on each server plug into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=5832</id>
		<title>Node Deployment Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=5832"/>
		<updated>2023-06-29T19:54:17Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 1. Download installation image */ Instructions for downloading clarified.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS) on [[Node Provider Machine Hardware Guide#Gen 2 Node Machine requirements|Gen-2 hardware]]. Gen-1 hardware Node Providers should use the [[Node Provider Documentation#Onboarding for accepted node providers|Gen-1 runbooks]].&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to its respective manual.&lt;br /&gt;
&lt;br /&gt;
If you encounter issues through any of these steps, check the [[Node Provider Troubleshooting]] page. If that does not solve your problem, you are encouraged to ask for assistance in the [[Node Provider Matrix channel]].&lt;br /&gt;
&lt;br /&gt;
Note: the following instructions are for onboarding nodes without using a NitroKey HSM. If you wish to follow the legacy procedure to onboard using a NitroKey HSM, follow the [[NitroKey HSM installation runbook]].&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A USB (3.0 speed that can hold at least 4GB) to put the image file on (Faster USBs will allow the process to go much faster.)&lt;br /&gt;
* The &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; for your data center (Acquired from [[Node Provider Onboarding#5. Setup the Node Operator keys|Node Provider Onboarding step 5. Setup the Node Operator keys]])&lt;br /&gt;
&lt;br /&gt;
== 1. Download installation image ==&lt;br /&gt;
Download both the &#039;&#039;&#039;IC-OS USB Installer Image&#039;&#039;&#039; and the &#039;&#039;&#039;corresponding checksum&#039;&#039;&#039; from the [[IC OS Download|IC-OS Download Page]]&lt;br /&gt;
&lt;br /&gt;
== 2. Verify checksum and unarchive file ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#: Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#: Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open PowerShell and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#: Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Create Bootable USB Stick ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/disk4s1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# The file path is an example. Use the absolute path to the downloaded image. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong device. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/sdb1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=~/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
# Start Rufus &lt;br /&gt;
# Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#: [[File:05.png|480px|screenshot]]&lt;br /&gt;
# You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#: [[File:06.png|480px|screenshot]]&lt;br /&gt;
#: [[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
== 4. Add configuration ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in TextEdit.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#:[[File:mac_02.png|580px|screenshot]]&lt;br /&gt;
#:* The IPv6 prefix should consist of four groups of hexadecimal digits, separated by colons (&#039;:&#039;). Each group can contain up to four hex digits.&lt;br /&gt;
#:* For example, a valid prefix could look like this: &amp;lt;code&amp;gt;2a00:fb01:400:100&amp;lt;/code&amp;gt;&lt;br /&gt;
#:* &#039;&#039;&#039;Important:&#039;&#039;&#039;&lt;br /&gt;
#:** The prefix should not have a trailing &#039;:&#039;&lt;br /&gt;
#:** IPv6 CIDR notation allows for a double colon (&#039;::&#039;) to represent consecutive groups of zeroes in an address. However, the  prefix configuration in this context does &#039;&#039;&#039;not&#039;&#039;&#039; support &#039;::&#039;. The &#039;::&#039; shorthand should &#039;&#039;&#039;not&#039;&#039;&#039; be used. Even if some groups are all zeros, they must be explicitly written out.&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:[[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
# Copy &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; from [[Node Provider Onboarding#5.%20Setup%20the%20Node%20Operator%20keys|Node Provider Onboarding step 5. Setup the Node Operator keys]] to the &amp;lt;code&amp;gt;CONFIG&amp;lt;/code&amp;gt; partition. This file should have the name &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt;, and sit next to &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt;, NOT inside the &amp;lt;code&amp;gt;ssh_authorized_keys&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#: [[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
# Right click the CONFIG partition &lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#: [[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#: [[File:11-b.png|480px|screenshot]]&lt;br /&gt;
# Click OK.&lt;br /&gt;
# You should now be able to see the CONFIG partition in your Windows Explorer. Select the config.ini configuration file &lt;br /&gt;
#: [[File:12-b.png|780px|screenshot]]&lt;br /&gt;
# Click on Edit to open it.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#:[[File:13-b.png|580px|screenshot]]&lt;br /&gt;
#:* The IPv6 prefix should consist of four groups of hexadecimal digits, separated by colons (&#039;:&#039;). Each group can contain up to four hex digits.&lt;br /&gt;
#:* For example, a valid prefix could look like this: &amp;lt;code&amp;gt;2a00:fb01:400:100&amp;lt;/code&amp;gt;&lt;br /&gt;
#:*&#039;&#039;&#039;Important:&#039;&#039;&#039;&lt;br /&gt;
#:** The prefix should not have a trailing &#039;:&#039;&lt;br /&gt;
#:** IPv6 CIDR notation allows for a double colon (&#039;::&#039;) to represent consecutive groups of zeroes in an address. However, the  prefix configuration in this context does &#039;&#039;&#039;not&#039;&#039;&#039; support &#039;::&#039;. The &#039;::&#039; shorthand should &#039;&#039;&#039;not&#039;&#039;&#039; be used. Even if some groups are all zeros, they must be explicitly written out.&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:[[File:14-b.png|580px|screenshot]]&lt;br /&gt;
# Copy &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; from [[Node Provider Onboarding#5. Setup the Node Operator keys|Node Provider Onboarding step 5. Setup the Node Operator keys]] to the &amp;lt;code&amp;gt;CONFIG&amp;lt;/code&amp;gt; partition. This file should have the name &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt;, and sit next to &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt;, NOT inside the &amp;lt;code&amp;gt;ssh_authorized_keys&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
# Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in KWrite.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#:[[File:linux_02.png|580px|screenshot]]&lt;br /&gt;
#:* The IPv6 prefix should consist of four groups of hexadecimal digits, separated by colons (&#039;:&#039;). Each group can contain up to four hex digits.&lt;br /&gt;
#:* For example, a valid prefix could look like this: &amp;lt;code&amp;gt;2a00:fb01:400:100&amp;lt;/code&amp;gt;&lt;br /&gt;
#:*&#039;&#039;&#039;Important:&#039;&#039;&#039;&lt;br /&gt;
#:** The prefix should not have a trailing &#039;:&#039;&lt;br /&gt;
#:** IPv6 CIDR notation allows for a double colon (&#039;::&#039;) to represent consecutive groups of zeroes in an address. However, the  prefix configuration in this context does &#039;&#039;&#039;not&#039;&#039;&#039; support &#039;::&#039;. The &#039;::&#039; shorthand should &#039;&#039;&#039;not&#039;&#039;&#039; be used. Even if some groups are all zeros, they must be explicitly written out.&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to post your issue in the [[Node Provider Matrix channel]].&lt;br /&gt;
#:[[File:linux_03.png|580px|screenshot]]&lt;br /&gt;
# Copy &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt; from [[Node Provider Onboarding#5. Setup the Node Operator keys|Node Provider Onboarding step 5. Setup the Node Operator keys]] to the &amp;lt;code&amp;gt;CONFIG&amp;lt;/code&amp;gt; partition. This file should have the name &amp;lt;code&amp;gt;node_operator_private_key.pem&amp;lt;/code&amp;gt;, and sit next to &amp;lt;code&amp;gt;config.ini&amp;lt;/code&amp;gt;, NOT inside the &amp;lt;code&amp;gt;ssh_authorized_keys&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
&lt;br /&gt;
== 5. Connect Crash Cart ==&lt;br /&gt;
# In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine. &lt;br /&gt;
# Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#: [[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 6. UEFI Setup and Boot Menu ==&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Dell]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Supermicro]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* * [[IC OS Installation - UEFI Configuration - ASUS]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Gigabyte]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - HPE]]&lt;br /&gt;
--&amp;gt;&#039;&#039;&#039;Important:&#039;&#039;&#039; Do NOT enable the RAID bios setting. Doing so will cause issues with the IC-OS installation.&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished configuring the BIOS.&lt;br /&gt;
&lt;br /&gt;
== 7. IC-OS Installation ==&lt;br /&gt;
# Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#: [[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
# The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 10 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#:[[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
# If the installation finished successfully, it will initiate a reboot. &lt;br /&gt;
#:[[File:38-sm.png|580px|screenshot]]&amp;lt;br /&amp;gt;&lt;br /&gt;
== 8. First Boot ==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
&#039;&#039;&#039;Do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039;&lt;br /&gt;
# Once you see this message, you may unplug the USB stick and VGA/Video. You can ignore the message to remove the HSM, as you did not use an HSM to onboard your nodes. &lt;br /&gt;
#:[[File:40-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
Congratulations! Your machine successfully joined the Internet Computer! Again, once you see this message, &#039;&#039;&#039;do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039; The machine has joined the IC and the Node Provider will start receiving rewards!&lt;br /&gt;
&lt;br /&gt;
== 9. Verify node onboarding ==&lt;br /&gt;
&lt;br /&gt;
# Verify that your node was successfully onboarded by checking its status on the [https://dashboard.internetcomputer.org/ dashboard] is set to either “Awaiting Subnet” or “Active in Subnet”. &lt;br /&gt;
#* The dashboard can be searched by your Node Provider principal. There, you should see the Node ID of your node (Node ID outputted in step 8). &lt;br /&gt;
#* If the status of your node is not either “Awaiting Subnet” or “Active in Subnet”, or if it is not listed under your Node Provider principal, you should contact the [[Node Provider Matrix channel]] for assistance.&lt;br /&gt;
#*:[[File:Dashboard-node-verification.png|thumb|998x998px]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5750</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5750"/>
		<updated>2023-06-26T17:09:54Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Clarified language&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide is designed to provide an overview of the networking requirements and guide Node Providers through setting up their servers into a rack with functioning networking.&lt;br /&gt;
&lt;br /&gt;
To follow this guide, you should be familiar with IP networking, network equipment and network cabling.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps per node&lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (serving responses to client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes in a given data center per node provider (IPv4 addresses cannot be shared between node providers). See [[Node Provider Networking Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for table.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC OS Installation Runbook#4.%20Add%20configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;first two 10G network ports&#039;&#039;&#039; on each server are connected to the 10G switch.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the bottom two ports are considered ports 1 and 2 and will be enumerated by Linux in this order. Connect the bottom two ports to the switch. &lt;br /&gt;
&lt;br /&gt;
Servers from other vendors will differ! See the server documentation for guidance. &lt;br /&gt;
&lt;br /&gt;
This is subject to change - the IC-OS network configuration logic is undergoing improvements to make it more flexible.&lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Maintenance or node recovery will require physical access in this case.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart.&lt;br /&gt;
* Connect the BMC to a separate dumb switch, and the dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, and create a separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own firewall(s) and rate limiters very strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Do the &#039;&#039;&#039;first and second 10G ports&#039;&#039;&#039; on each server plug into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=5514</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=5514"/>
		<updated>2023-06-15T13:24:46Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* V. Setup the Node Operator keys */ Add upgrade command&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn how to participate in the Internet Computer network as a Node Provider and to receive 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;
* [[Node Provider Network Setup Guide#The Bare Minimum Network Requirements|Public IP addresses]]:&lt;br /&gt;
** One /64 IPv6 range&lt;br /&gt;
** One IPv4 address for every 4 node machines&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)&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;
* 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/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 &#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;
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;
&lt;br /&gt;
=== Onboarding without a NitroKey HSM ===&lt;br /&gt;
If you will not be using a NitroKey HSM, continue to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Using a NitroKey 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 Node Operator keys ==&lt;br /&gt;
&lt;br /&gt;
=== Onboarding without a NitroKey HSM ===&lt;br /&gt;
&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;
&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;
&lt;br /&gt;
=== Using a NitroKey HSM ===&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.&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;
#*&#039;&#039;&#039;Note:&#039;&#039;&#039; Key backup may be possible with [https://github.com/OpenSC/OpenSC/wiki/SmartCardHSM#using-key-backup-and-restore these instructions].&lt;br /&gt;
&lt;br /&gt;
== VI. Get the node operator principal ==&lt;br /&gt;
&lt;br /&gt;
=== Onboarding without a NitroKey HSM ===&lt;br /&gt;
&lt;br /&gt;
# Confirm &amp;lt;code&amp;gt;node_operator&amp;lt;/code&amp;gt; identity was created successfully in step V.:&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;
# 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;
&lt;br /&gt;
=== Using a NitroKey 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 principal obtained in step VI.&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=uqquy-76uhn-2mys5-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx   # Node Operator principal from step VI&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;
&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;
#* 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;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;
== 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;br /&gt;
* &#039;&#039;&#039;IC Node Provider Matrix/Element channel:&#039;&#039;&#039; https://app.element.io/#/room/#ic-node-providers:matrix.org&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=5513</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=5513"/>
		<updated>2023-06-15T13:23:03Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /*  B. Install dfx  */ Added note about dfx version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn how to participate in the Internet Computer network as a Node Provider and to receive 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;
* [[Node Provider Network Setup Guide#The Bare Minimum Network Requirements|Public IP addresses]]:&lt;br /&gt;
** One /64 IPv6 range&lt;br /&gt;
** One IPv4 address for every 4 node machines&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)&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;
* 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/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 &#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;
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;
&lt;br /&gt;
=== Onboarding without a NitroKey HSM ===&lt;br /&gt;
If you will not be using a NitroKey HSM, continue to the next step.&lt;br /&gt;
&lt;br /&gt;
=== Using a NitroKey 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 Node Operator keys ==&lt;br /&gt;
&lt;br /&gt;
=== Onboarding without a NitroKey HSM ===&lt;br /&gt;
&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;. &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;
&lt;br /&gt;
=== Using a NitroKey HSM ===&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.&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;
#*&#039;&#039;&#039;Note:&#039;&#039;&#039; Key backup may be possible with [https://github.com/OpenSC/OpenSC/wiki/SmartCardHSM#using-key-backup-and-restore these instructions].&lt;br /&gt;
&lt;br /&gt;
== VI. Get the node operator principal ==&lt;br /&gt;
&lt;br /&gt;
=== Onboarding without a NitroKey HSM ===&lt;br /&gt;
&lt;br /&gt;
# Confirm &amp;lt;code&amp;gt;node_operator&amp;lt;/code&amp;gt; identity was created successfully in step V.:&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;
# 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;
&lt;br /&gt;
=== Using a NitroKey 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 principal obtained in step VI.&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=uqquy-76uhn-2mys5-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx-xxx   # Node Operator principal from step VI&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;
&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;
#* 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;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;
== 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;br /&gt;
* &#039;&#039;&#039;IC Node Provider Matrix/Element channel:&#039;&#039;&#039; https://app.element.io/#/room/#ic-node-providers:matrix.org&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_FAQ&amp;diff=5451</id>
		<title>Node Provider FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_FAQ&amp;diff=5451"/>
		<updated>2023-05-25T16:06:46Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Governance/Remuneration */ Added &amp;quot;Node Machine&amp;quot; question&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
== Governance/Remuneration ==&lt;br /&gt;
&lt;br /&gt;
== Technical ==&lt;br /&gt;
&lt;br /&gt;
=== What is a node? Just one machine? ===&lt;br /&gt;
Yes. &lt;br /&gt;
&lt;br /&gt;
Sometimes &amp;quot;Node Machine&amp;quot; - a single server participating with the IC - is used to differentiate from &amp;quot;[https://internetcomputer.org/docs/current/references/glossary/#node Node&amp;quot;], which is sometimes used to refer to the software that runs the IC. &lt;br /&gt;
&lt;br /&gt;
=== When purchasing node hardware can I deviate from the [[Node Machine Hardware#Gen 2 Node Machine|node hardware requirements]]? ===&lt;br /&gt;
The hardware components must meet the [[Node Machine Hardware#Generic specification|generic specification]] of the Gen2 node hardware. This is verified by the IC-OS installer. The installer will fail if the expected components are not found.&lt;br /&gt;
&lt;br /&gt;
Small details are expected to be different between vendors such as SSD manufacturer, chassis model, etc.. &lt;br /&gt;
&lt;br /&gt;
=== Do I need to configure RAID on my node machines? ===&lt;br /&gt;
No. RAID (hardware or software) should not be attempted. The IC-OS installer will verify there are 5x independent 6.4TB NVMe SSD’s and prepare them appropriately - formatting all disks as it installs. &lt;br /&gt;
&lt;br /&gt;
IC-OS uses a ‘striped’ LVM volume across all the disks (technically a software RAID 0).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What about redundancy?&#039;&#039;&#039; Replica nodes provide redundancy at a higher level than disk redundancy.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
* [[Node Provider Documentation]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Documentation&amp;diff=5445</id>
		<title>Node Provider Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Documentation&amp;diff=5445"/>
		<updated>2023-05-25T13:52:26Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Onboarding for accepted Node Providers */ Added link to FAQ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
ICP runs on a [[Sovereign Network]] that is a governed by a DAO using [[Deterministic Decentralization | deterministic decentralization]] to maximize its [[Decentralization in ICP: Infrastructure Governance | decentralization]]. To be part of the ICP infrastructure, any potential node providers can submit NNS proposals to the DAO controlling the ICP blockchain. ICP community then votes on whether to include the node provider. Node providers invest in and operate the node hardware which powers the Internet Computer. 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;
&lt;br /&gt;
This article is the hub for ICP node provider documentation.&lt;br /&gt;
&lt;br /&gt;
==Node Provider Tokenomics &amp;amp; Remuneration==&lt;br /&gt;
Node providers receive rewards (remuneration) for operating node machines that run the IC network. The single source of truth for node provider rewards is the NNS, where changes can only be made through NNS proposals adopted by the IC community.&lt;br /&gt;
&lt;br /&gt;
This page summarizes the current node provider rewards and serves to discuss proposals for future reward models: [[Node Provider Remuneration]]&lt;br /&gt;
&lt;br /&gt;
==Node Machine Hardware Requirements==&lt;br /&gt;
&lt;br /&gt;
Node machines on ICP network need to keep up with the requirements of the network, please see: [[Node Machine Hardware#Gen_2 | Gen-2 Node Machine Hardware]].&lt;br /&gt;
&lt;br /&gt;
==Submitting Proposal to Join the Network==&lt;br /&gt;
&lt;br /&gt;
As part of the process to become a node provider, a candidate node provider has to declare their intent and self-identify so the ICP DAO can make an informed decision. Please see [[Node Provider Self-declaration]] for more info.&lt;br /&gt;
&lt;br /&gt;
==Onboarding for accepted Node Providers==&lt;br /&gt;
&lt;br /&gt;
===Gen-2 Documentation===&lt;br /&gt;
&lt;br /&gt;
These articles are for candidate node providers considering becoming node providers or node providers recently accepted by the ICP DAO. The term &amp;quot;Gen-2&amp;quot; refers to &amp;quot;Generation 2&amp;quot;, which is the current set of protocols for new node providers. &lt;br /&gt;
&lt;br /&gt;
* [[Node Machine Hardware#Gen_2 |Gen-2 Node Machine Hardware]]&lt;br /&gt;
* [[Node Provider Network Setup Guide]]&lt;br /&gt;
* [[Node Provider Remuneration]]&lt;br /&gt;
* [[Node Provider Self-declaration]]&lt;br /&gt;
* [[Node Provider Onboarding]]&lt;br /&gt;
* [[IC OS Installation Runbook]] for Gen-2&lt;br /&gt;
* [[Node Provider FAQ]]&lt;br /&gt;
&lt;br /&gt;
Users accepted by the ICP DAO to be a node provider, can follow these instructions to add their node: [[Node Provider Onboarding]].&lt;br /&gt;
&lt;br /&gt;
===Node Provider Troubleshooting===&lt;br /&gt;
* [[Node Provider Troubleshooting]]&lt;br /&gt;
** [[Possible Node Onboarding Errors]]&lt;br /&gt;
** [[Unhealthy Nodes]]&lt;br /&gt;
** [[Updating Firmware]]&lt;br /&gt;
** [[iDRAC access and TSR logs]]&lt;br /&gt;
&lt;br /&gt;
===Gen-1 Documentation===&lt;br /&gt;
The first batch of ICP node providers joined under Gen-1 (Generation 1). These documents are for those legacy node providers.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation Runbook - Dell Poweredge]] for Gen-1&lt;br /&gt;
* [[IC OS Installation Runbook - Supermicro]] for Gen-1&lt;br /&gt;
* [[Storage Runbook]] for Gen-1&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Documentation&amp;diff=5444</id>
		<title>Node Provider Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Documentation&amp;diff=5444"/>
		<updated>2023-05-25T13:51:33Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Onboarding for accepted Node Providers */ Fixed formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
ICP runs on a [[Sovereign Network]] that is a governed by a DAO using [[Deterministic Decentralization | deterministic decentralization]] to maximize its [[Decentralization in ICP: Infrastructure Governance | decentralization]]. To be part of the ICP infrastructure, any potential node providers can submit NNS proposals to the DAO controlling the ICP blockchain. ICP community then votes on whether to include the node provider. Node providers invest in and operate the node hardware which powers the Internet Computer. 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;
&lt;br /&gt;
This article is the hub for ICP node provider documentation.&lt;br /&gt;
&lt;br /&gt;
==Node Provider Tokenomics &amp;amp; Remuneration==&lt;br /&gt;
Node providers receive rewards (remuneration) for operating node machines that run the IC network. The single source of truth for node provider rewards is the NNS, where changes can only be made through NNS proposals adopted by the IC community.&lt;br /&gt;
&lt;br /&gt;
This page summarizes the current node provider rewards and serves to discuss proposals for future reward models: [[Node Provider Remuneration]]&lt;br /&gt;
&lt;br /&gt;
==Node Machine Hardware Requirements==&lt;br /&gt;
&lt;br /&gt;
Node machines on ICP network need to keep up with the requirements of the network, please see: [[Node Machine Hardware#Gen_2 | Gen-2 Node Machine Hardware]].&lt;br /&gt;
&lt;br /&gt;
==Submitting Proposal to Join the Network==&lt;br /&gt;
&lt;br /&gt;
As part of the process to become a node provider, a candidate node provider has to declare their intent and self-identify so the ICP DAO can make an informed decision. Please see [[Node Provider Self-declaration]] for more info.&lt;br /&gt;
&lt;br /&gt;
==Onboarding for accepted Node Providers==&lt;br /&gt;
&lt;br /&gt;
===Gen-2 Documentation===&lt;br /&gt;
&lt;br /&gt;
These articles are for candidate node providers considering becoming node providers or node providers recently accepted by the ICP DAO. The term &amp;quot;Gen-2&amp;quot; refers to &amp;quot;Generation 2&amp;quot;, which is the current set of protocols for new node providers. &lt;br /&gt;
&lt;br /&gt;
* [[Node Machine Hardware#Gen_2 |Gen-2 Node Machine Hardware]]&lt;br /&gt;
* [[Node Provider Network Setup Guide]]&lt;br /&gt;
* [[Node Provider Remuneration]]&lt;br /&gt;
* [[Node Provider Self-declaration]]&lt;br /&gt;
* [[Node Provider Onboarding]]&lt;br /&gt;
* [[IC OS Installation Runbook]] for Gen-2&lt;br /&gt;
&lt;br /&gt;
Users accepted by the ICP DAO to be a node provider, can follow these instructions to add their node: [[Node Provider Onboarding]].&lt;br /&gt;
&lt;br /&gt;
===Node Provider Troubleshooting===&lt;br /&gt;
* [[Node Provider Troubleshooting]]&lt;br /&gt;
** [[Possible Node Onboarding Errors]]&lt;br /&gt;
** [[Unhealthy Nodes]]&lt;br /&gt;
** [[Updating Firmware]]&lt;br /&gt;
** [[iDRAC access and TSR logs]]&lt;br /&gt;
&lt;br /&gt;
===Gen-1 Documentation===&lt;br /&gt;
The first batch of ICP node providers joined under Gen-1 (Generation 1). These documents are for those legacy node providers.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation Runbook - Dell Poweredge]] for Gen-1&lt;br /&gt;
* [[IC OS Installation Runbook - Supermicro]] for Gen-1&lt;br /&gt;
* [[Storage Runbook]] for Gen-1&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_FAQ&amp;diff=5443</id>
		<title>Node Provider FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_FAQ&amp;diff=5443"/>
		<updated>2023-05-25T13:48:24Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Started NP FAQ. Added to items.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
== Governance/Remuneration ==&lt;br /&gt;
&lt;br /&gt;
== Technical ==&lt;br /&gt;
&lt;br /&gt;
=== When purchasing node hardware can I deviate from the [[Node Machine Hardware#Gen 2 Node Machine|node hardware requirements]]? ===&lt;br /&gt;
The hardware components must meet the [[Node Machine Hardware#Generic specification|generic specification]] of the Gen2 node hardware. This is verified by the IC-OS installer. The installer will fail if the expected components are not found.&lt;br /&gt;
&lt;br /&gt;
Small details are expected to be different between vendors such as SSD manufacturer, chassis model, etc.. &lt;br /&gt;
&lt;br /&gt;
=== Do I need to configure RAID on my node machines? ===&lt;br /&gt;
No. RAID (hardware or software) should not be attempted. The IC-OS installer will verify there are 5x independent 6.4TB NVMe SSD’s and prepare them appropriately - formatting all disks as it installs. &lt;br /&gt;
&lt;br /&gt;
IC-OS uses a ‘striped’ LVM volume across all the disks (technically a software RAID 0).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What about redundancy?&#039;&#039;&#039; Replica nodes provide redundancy at a higher level than disk redundancy.&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Machine_Hardware_Guide&amp;diff=5442</id>
		<title>Node Provider Machine Hardware Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Machine_Hardware_Guide&amp;diff=5442"/>
		<updated>2023-05-25T13:42:17Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Gen 1 Node Machine */ Clarified which section to use&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What are the Hardware Requirements for Node Machines? ==&lt;br /&gt;
Node providers operate one or more node machines than run in the IC network. Gen1 Hardware requirements have been used by Node Providers to set up node machines during Genesis launch.&lt;br /&gt;
&lt;br /&gt;
The Gen2 Hardware requirements have been defined for the further growth of the IC network. The specifications for the Gen2 node machines are generic (instead of vendor specific) and support VM memory encryption and attestation, which will be needed in future features on the IC.&lt;br /&gt;
&lt;br /&gt;
Below are the up-to-date specifications for both the Gen2 node machines and Gen1 node machines.&lt;br /&gt;
== Gen 2 Node Machine ==&lt;br /&gt;
=== Generic specification ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Dual Socket AMD EPYC Milan CPU - Recommended: [https://en.wikichip.org/wiki/amd/epyc/7313 7313] (16C/32T 3 Ghz)&lt;br /&gt;
[https://en.wikichip.org/wiki/amd/epyc#7003_Series_.28Zen_3.29 optionally] 7343, 7373, 73F3&lt;br /&gt;
|-&lt;br /&gt;
| 16x 32GB RDIMM, 3200MT/s, Dual Rank&lt;br /&gt;
|-&lt;br /&gt;
| 5x 6.4TB NVMe Mixed Mode (DWPD &amp;gt;= 3)&lt;br /&gt;
|-&lt;br /&gt;
| Dual Port 10G SFP or BASE-T&lt;br /&gt;
|-&lt;br /&gt;
| TPM 2.0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Validated Configurations ===&lt;br /&gt;
DFINITY has [https://forum.dfinity.org/t/draft-motion-proposal-new-hardware-specification-and-remuneration-for-ic-nodes/14202/14?u=garym validated] the following Gen2 hardware configurations.&lt;br /&gt;
==== Dell ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7343 3.2GHz, 16C/32T, 128M Cache (190W) &lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB RDIMM, 3200MT/s, Dual Rank 16Gb BASE x8&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4TB Enterprise NVMe Mixed Use AG Drive U.2 Gen4 with carrier&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PowerEdge R6525 Motherboard, with 2 x 1Gb Onboard LOM (BCM5720)MLK V2&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Dual, Hot-plug, Redundant Power Supply (1+1) 1100W, Mixed Mode Titanium&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Intel X710 Dual Port 10GbE SFP+, OCP NIC 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Trusted Platform Module 2.0 V3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ASUS ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7313 (3,00 GHz, 16-Core, 128 MB)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB ECC Reg ATP DDR4 3200 RAM &lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4 TB NVMe Kioxia SSD 3D-NAND TLC U.3 (Kioxia CM6-V)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Asus Mainboard KMPP-D32 Series (without OCP 3.0, without Pike)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1600 Watt redundant PSU&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Broadcom 25 Gigabit P225P SFP28 Dual Port Network Card&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|TPM 2.0*&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Note Gen2 machines require TPM 2.0 hardware but this specific test machine did not include it. &lt;br /&gt;
&lt;br /&gt;
==== Supermicro ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7313 (3,00 GHz, 16-Core, 128 MB)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB ECC Reg DDR4 3200 RAM&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4 TB NVMe TLC SSD, PCIe 4.0 x4, U.3 2.5&amp;quot;, 3 DWPD&lt;br /&gt;
|-&lt;br /&gt;
| 1 || SuperMicro H12DSU-iN&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1200 Watt redundant PSU&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual Port 10GBase-T Network Adapter Intel® X710-TM4*&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Dual Port 10GbE Network Adapter Intel® X710-TM4, SFP+*&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Trusted Platform Module 2.0&lt;br /&gt;
|}&lt;br /&gt;
==== Currently pending validation: Gigabyte ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7313 (3,00 GHz, 16-Core, 128 MB)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB ECC Reg DDR4 3200 RAM&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4 TB NVMe TLC SSD, PCIe 4.0 x4, U.3 2.5&amp;quot;, 3 DWPD&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Gigabyte MZ92-FS1 Rev. 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1200 Watt redundant PSU&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual Port 1000Base-T Network Adapter Intel® I350-AM2*&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Dual Port 10GbE Network Adapter, Broadcom NetXtreme E-Series*&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Trusted Platform Module 2.0&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Only one dual port network adaptor is required.&lt;br /&gt;
&lt;br /&gt;
== Gen 1 Node Machine ==&lt;br /&gt;
If you&#039;re a Node Provider acquiring machines to join the IC, use the Gen2 section above. This section is for Gen1 Node Providers who joined before 2022. &lt;br /&gt;
&lt;br /&gt;
=== Node Machine Type 1 - Dell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R6525&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Chassis - Supports Up to 10 NVMe drives, 12 drives total&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual 1 GB on Motherboard&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Low Profile PCIe Slots&lt;br /&gt;
|-&lt;br /&gt;
| - || 3 Year Basic NBD Support&lt;br /&gt;
|-&lt;br /&gt;
| - || iDrac Enterprise&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual port 10GbE Base - T Adapter Broadcom, PCIe Low Profile&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 3.2TB NVMe, Mixed Use, 2.5&amp;quot; with Carrier&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB RDIMM (3200MT/s)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD 7302 3GHz, 16C/32T, 128M, 155W, 3200&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Single Power Supply (800W)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C13-C14, 3M, 125V 15A Power Cored&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Node Machine Type 1 - SuperMicro ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || AS - 1023US - TR4&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Rome 7302 DP/UP 16C/32T 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB DDR4-3200 2Rx4 ECC REG DIMM&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Samsung PM983 3.2TB NVMe PCIE/SATA Hybrid M.2 &amp;amp; 1 PCIE&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 800W Power Supply&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Std LP 2-port 10G RJ45, Intel x540&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Micron 5300 PRO 7.4TB, SATA, 2.5&#039;, 3D TLC, .6DWPD (with Caddie)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C13/C14 13A Power Cord&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Node Machine Type 2 - Dell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R6515&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3.5&amp;quot; Chassis with up to 4 Hot-Plug Hard Drives and OS RAID&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual 1 Gb on Motherboard&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Low Profile PCIe Slots&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Standard Fan&lt;br /&gt;
|-&lt;br /&gt;
| - || 3 Year Basic NBD Support&lt;br /&gt;
|-&lt;br /&gt;
| - || iDrac Enterprise&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Dual Port 10GbE Base - T Adapter Broadcom, PCIe LOw Profile&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 480GB SSD SATA Mix Use 6Gbps 512 2.5in Hot-Plug AG Drive, 3.5in&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 8GB RDIMM, 3200 MT/s, Single Rank&lt;br /&gt;
|-&lt;br /&gt;
| 1 || AMD EPYC 7232P 3.10GHz, 8C/16T, 64M Cache (120W) DDR4-3200&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual Hot-Plug Redundant Power Supply (1+1), 550W&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Jumper Cord - C13/C14, .6M, 250V, 13A&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Machine_Hardware_Guide&amp;diff=5432</id>
		<title>Node Provider Machine Hardware Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Machine_Hardware_Guide&amp;diff=5432"/>
		<updated>2023-05-23T15:55:46Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Validated configuration: ASUS */ Fixed line spacing for real this time&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What are the Hardware Requirements for Node Machines? ==&lt;br /&gt;
Node providers operate one or more node machines than run in the IC network. Gen1 Hardware requirements have been used by Node Providers to set up node machines during Genesis launch.&lt;br /&gt;
&lt;br /&gt;
The Gen2 Hardware requirements have been defined for the further growth of the IC network. The specifications for the Gen2 node machines are generic (instead of vendor specific) and supports VM memory encryption and attestation which will be needed in future features on the IC.&lt;br /&gt;
&lt;br /&gt;
Below are the up-to-date specifications for both the Gen2 node machines and Gen1 node machines.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gen 2 Node Machine ==&lt;br /&gt;
=== Generic specification Gen2 Node Machine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Dual Socket AMD EPYC Milan CPU - Recommended: [https://en.wikichip.org/wiki/amd/epyc/7313 7313] (16C/32T 3 Ghz)&lt;br /&gt;
[https://en.wikichip.org/wiki/amd/epyc#7003_Series_.28Zen_3.29 optionally] 7343, 7373, 73F3&lt;br /&gt;
|-&lt;br /&gt;
| 16x 32GB RDIMM, 3200MT/s, Dual Rank&lt;br /&gt;
|-&lt;br /&gt;
| 5x 6.4TB NVMe Mixed Mode (DWPD &amp;gt;= 3)&lt;br /&gt;
|-&lt;br /&gt;
| Dual Port 10G SFP or BASE-T&lt;br /&gt;
|-&lt;br /&gt;
| TPM 2.0&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note the NVMe drives should be recognized by Linux as NVMe (i.e., show up as `/dev/nvme*` devices). SATA backplanes or any other hardware which prevents this should not be used.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Validated Configurations ===&lt;br /&gt;
DFINITY has [https://forum.dfinity.org/t/draft-motion-proposal-new-hardware-specification-and-remuneration-for-ic-nodes/14202/14?u=garym validated] the following Gen2 hardware configurations.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==== Validated configuration: Dell ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7343 3.2GHz, 16C/32T, 128M Cache (190W) &lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB RDIMM, 3200MT/s, Dual Rank 16Gb BASE x8&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4TB Enterprise NVMe Mixed Use AG Drive U.2 Gen4 with carrier&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PowerEdge R6525 Motherboard, with 2 x 1Gb Onboard LOM (BCM5720)MLK V2&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Dual, Hot-plug, Redundant Power Supply (1+1) 1100W, Mixed Mode Titanium&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Intel X710 Dual Port 10GbE SFP+, OCP NIC 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Trusted Platform Module 2.0 V3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Validated configuration: ASUS ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7313 (3,00 GHz, 16-Core, 128 MB)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB ECC Reg ATP DDR4 3200 RAM &lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4 TB NVMe Kioxia SSD 3D-NAND TLC U.3 (Kioxia CM6-V)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Asus Mainboard KMPP-D32 Series (without OCP 3.0, without Pike)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1600 Watt redundant PSU&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Broadcom 25 Gigabit P225P SFP28 Dual Port Network Card&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|TPM 2.0*&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Note Gen2 machines require TPM 2.0 hardware but this specific test machine did not include it. &amp;lt;br&amp;gt;&lt;br /&gt;
==== Validated configurations: Supermicro &amp;amp; Gigabyte ====&lt;br /&gt;
Validation is being re-run on Supermicro and Gigabyte machines which match the spec. This section will be updated when those results are ready.&lt;br /&gt;
&lt;br /&gt;
== Gen 1 Node Machine ==&lt;br /&gt;
=== Node Machine Type 1 - Dell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R6525&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Chassis - Supports Up to 10 NVMe drives, 12 drives total&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual 1 GB on Motherboard&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Low Profile PCIe Slots&lt;br /&gt;
|-&lt;br /&gt;
| - || 3 Year Basic NBD Support&lt;br /&gt;
|-&lt;br /&gt;
| - || iDrac Enterprise&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual port 10GbE Base - T Adapter Broadcom, PCIe Low Profile&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 3.2TB NVMe, Mixed Use, 2.5&amp;quot; with Carrier&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB RDIMM (3200MT/s)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD 7302 3GHz, 16C/32T, 128M, 155W, 3200&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Single Power Supply (800W)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C13-C14, 3M, 125V 15A Power Cored&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Node Machine Type 1 - SuperMicro ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || AS - 1023US - TR4&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Rome 7302 DP/UP 16C/32T 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB DDR4-3200 2Rx4 ECC REG DIMM&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Samsung PM983 3.2TB NVMe PCIE/SATA Hybrid M.2 &amp;amp; 1 PCIE&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 800W Power Supply&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Std LP 2-port 10G RJ45, Intel x540&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Micron 5300 PRO 7.4TB, SATA, 2.5&#039;, 3D TLC, .6DWPD (with Caddie)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C13/C14 13A Power Cord&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Node Machine Type 2 - Dell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R6515&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3.5&amp;quot; Chassis with up to 4 Hot-Plug Hard Drives and OS RAID&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual 1 Gb on Motherboard&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Low Profile PCIe Slots&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Standard Fan&lt;br /&gt;
|-&lt;br /&gt;
| - || 3 Year Basic NBD Support&lt;br /&gt;
|-&lt;br /&gt;
| - || iDrac Enterprise&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Dual Port 10GbE Base - T Adapter Broadcom, PCIe LOw Profile&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 480GB SSD SATA Mix Use 6Gbps 512 2.5in Hot-Plug AG Drive, 3.5in&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 8GB RDIMM, 3200 MT/s, Single Rank&lt;br /&gt;
|-&lt;br /&gt;
| 1 || AMD EPYC 7232P 3.10GHz, 8C/16T, 64M Cache (120W) DDR4-3200&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual Hot-Plug Redundant Power Supply (1+1), 550W&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Jumper Cord - C13/C14, .6M, 250V, 13A&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Machine_Hardware_Guide&amp;diff=5431</id>
		<title>Node Provider Machine Hardware Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Machine_Hardware_Guide&amp;diff=5431"/>
		<updated>2023-05-23T15:55:02Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Gen 2 Node Machine */ Added note about missing TPM on ASUS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What are the Hardware Requirements for Node Machines? ==&lt;br /&gt;
Node providers operate one or more node machines than run in the IC network. Gen1 Hardware requirements have been used by Node Providers to set up node machines during Genesis launch.&lt;br /&gt;
&lt;br /&gt;
The Gen2 Hardware requirements have been defined for the further growth of the IC network. The specifications for the Gen2 node machines are generic (instead of vendor specific) and supports VM memory encryption and attestation which will be needed in future features on the IC.&lt;br /&gt;
&lt;br /&gt;
Below are the up-to-date specifications for both the Gen2 node machines and Gen1 node machines.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gen 2 Node Machine ==&lt;br /&gt;
=== Generic specification Gen2 Node Machine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Dual Socket AMD EPYC Milan CPU - Recommended: [https://en.wikichip.org/wiki/amd/epyc/7313 7313] (16C/32T 3 Ghz)&lt;br /&gt;
[https://en.wikichip.org/wiki/amd/epyc#7003_Series_.28Zen_3.29 optionally] 7343, 7373, 73F3&lt;br /&gt;
|-&lt;br /&gt;
| 16x 32GB RDIMM, 3200MT/s, Dual Rank&lt;br /&gt;
|-&lt;br /&gt;
| 5x 6.4TB NVMe Mixed Mode (DWPD &amp;gt;= 3)&lt;br /&gt;
|-&lt;br /&gt;
| Dual Port 10G SFP or BASE-T&lt;br /&gt;
|-&lt;br /&gt;
| TPM 2.0&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note the NVMe drives should be recognized by Linux as NVMe (i.e., show up as `/dev/nvme*` devices). SATA backplanes or any other hardware which prevents this should not be used.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Validated Configurations ===&lt;br /&gt;
DFINITY has [https://forum.dfinity.org/t/draft-motion-proposal-new-hardware-specification-and-remuneration-for-ic-nodes/14202/14?u=garym validated] the following Gen2 hardware configurations.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==== Validated configuration: Dell ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7343 3.2GHz, 16C/32T, 128M Cache (190W) &lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB RDIMM, 3200MT/s, Dual Rank 16Gb BASE x8&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4TB Enterprise NVMe Mixed Use AG Drive U.2 Gen4 with carrier&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PowerEdge R6525 Motherboard, with 2 x 1Gb Onboard LOM (BCM5720)MLK V2&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Dual, Hot-plug, Redundant Power Supply (1+1) 1100W, Mixed Mode Titanium&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Intel X710 Dual Port 10GbE SFP+, OCP NIC 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Trusted Platform Module 2.0 V3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Validated configuration: ASUS ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7313 (3,00 GHz, 16-Core, 128 MB)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB ECC Reg ATP DDR4 3200 RAM &lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4 TB NVMe Kioxia SSD 3D-NAND TLC U.3 (Kioxia CM6-V)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Asus Mainboard KMPP-D32 Series (without OCP 3.0, without Pike)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1600 Watt redundant PSU&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Broadcom 25 Gigabit P225P SFP28 Dual Port Network Card&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|TPM 2.0*&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Note Gen2 machines require TPM 2.0 hardware but this specific test machine did not include it. &amp;lt;br&amp;gt;&lt;br /&gt;
==== Validated configurations: Supermicro &amp;amp; Gigabyte ====&lt;br /&gt;
Validation is being re-run on Supermicro and Gigabyte machines which match the spec. This section will be updated when those results are ready.&lt;br /&gt;
&lt;br /&gt;
== Gen 1 Node Machine ==&lt;br /&gt;
=== Node Machine Type 1 - Dell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R6525&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Chassis - Supports Up to 10 NVMe drives, 12 drives total&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual 1 GB on Motherboard&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Low Profile PCIe Slots&lt;br /&gt;
|-&lt;br /&gt;
| - || 3 Year Basic NBD Support&lt;br /&gt;
|-&lt;br /&gt;
| - || iDrac Enterprise&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual port 10GbE Base - T Adapter Broadcom, PCIe Low Profile&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 3.2TB NVMe, Mixed Use, 2.5&amp;quot; with Carrier&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB RDIMM (3200MT/s)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD 7302 3GHz, 16C/32T, 128M, 155W, 3200&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Single Power Supply (800W)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C13-C14, 3M, 125V 15A Power Cored&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Node Machine Type 1 - SuperMicro ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || AS - 1023US - TR4&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Rome 7302 DP/UP 16C/32T 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB DDR4-3200 2Rx4 ECC REG DIMM&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Samsung PM983 3.2TB NVMe PCIE/SATA Hybrid M.2 &amp;amp; 1 PCIE&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 800W Power Supply&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Std LP 2-port 10G RJ45, Intel x540&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Micron 5300 PRO 7.4TB, SATA, 2.5&#039;, 3D TLC, .6DWPD (with Caddie)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C13/C14 13A Power Cord&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Node Machine Type 2 - Dell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R6515&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3.5&amp;quot; Chassis with up to 4 Hot-Plug Hard Drives and OS RAID&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual 1 Gb on Motherboard&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Low Profile PCIe Slots&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Standard Fan&lt;br /&gt;
|-&lt;br /&gt;
| - || 3 Year Basic NBD Support&lt;br /&gt;
|-&lt;br /&gt;
| - || iDrac Enterprise&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Dual Port 10GbE Base - T Adapter Broadcom, PCIe LOw Profile&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 480GB SSD SATA Mix Use 6Gbps 512 2.5in Hot-Plug AG Drive, 3.5in&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 8GB RDIMM, 3200 MT/s, Single Rank&lt;br /&gt;
|-&lt;br /&gt;
| 1 || AMD EPYC 7232P 3.10GHz, 8C/16T, 64M Cache (120W) DDR4-3200&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual Hot-Plug Redundant Power Supply (1+1), 550W&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Jumper Cord - C13/C14, .6M, 250V, 13A&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=5415</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=5415"/>
		<updated>2023-05-19T16:22:18Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* V. Setup the HSM */ Removed dead link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn how to participate in the Internet Computer network as a Node Provider and to receive 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;
* [[Node Provider Network Setup Guide#The Bare Minimum Network Requirements|Public IP addresses]]:&lt;br /&gt;
** One /64 IPv6 range&lt;br /&gt;
** One IPv4 address for every 4 node machines&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 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;
* 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/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 &#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; Key backup may be possible with [https://github.com/OpenSC/OpenSC/wiki/SmartCardHSM#using-key-backup-and-restore these instructions]. &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;
#* 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;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;
== 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>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=5398</id>
		<title>Node Deployment Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=5398"/>
		<updated>2023-05-15T22:18:55Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 1. Download installation image */ Point at a single download page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS) on [[Node_provider_hardware#Gen_2|Gen-2 hardware]]. Gen-1 hardware Node Providers should use the [[Internet Computer wiki#For Node Providers|Gen-1 runbooks]].&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to the respective manual.&lt;br /&gt;
&lt;br /&gt;
In case you encounter any issues during the installation process, check the [[Possible Node Onboarding Errors]] page. Otherwise contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association]&lt;br /&gt;
&lt;br /&gt;
Many thanks for your efforts in building the Internet Computer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A USB (3.0 speed that can hold at least 4GB) to put the image file on (Faster USBs will allow the process to go much faster.)&lt;br /&gt;
* The Nitrokey HSM for your data center. &lt;br /&gt;
* [Optional] A USB hub&lt;br /&gt;
** This is helpful at some data centers for simultaneously connecting keyboard, mouse, Nitrokey, etc.. &lt;br /&gt;
&lt;br /&gt;
== 1. Download installation image ==&lt;br /&gt;
Follow the instructions on the [[IC OS Download|IC-OS Download Page]]&lt;br /&gt;
&lt;br /&gt;
== 2. Verify checksum and unarchive file ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
* Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
*  Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Create Bootable USB Stick ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/disk4s1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# The file path is an example. Use the absolute path to the downloaded image. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong device. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/sdb1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive. &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=~/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
# Start Rufus &lt;br /&gt;
# Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#: [[File:05.png|480px|screenshot]]&lt;br /&gt;
# You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#: [[File:06.png|480px|screenshot]]&lt;br /&gt;
#: [[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
== 4. Add configuration ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in TextEdit.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:mac_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#: [[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
# Right click the CONFIG partition &lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#: [[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#: [[File:11-b.png|480px|screenshot]]&lt;br /&gt;
# Click OK.&lt;br /&gt;
# You should now be able to see the CONFIG partition in your Windows Explorer. Select the config.ini configuration file &lt;br /&gt;
#: [[File:12-b.png|780px|screenshot]]&lt;br /&gt;
# Click on Edit to open it.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:13-b.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:14-b.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
# Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in KWrite.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:linux_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:linux_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 5. Connect Crash Cart ==&lt;br /&gt;
# In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine. &lt;br /&gt;
# Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#: [[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 6. UEFI Setup and Boot Menu ==&lt;br /&gt;
&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Dell]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Supermicro]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* * [[IC OS Installation - UEFI Configuration - ASUS]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Gigabyte]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - HPE]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished.&lt;br /&gt;
&lt;br /&gt;
== 7. IC-OS Installation ==&lt;br /&gt;
# Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#: [[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
# The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 8 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#: [[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you get asked to insert the HSM, please remove the keyboard and instead insert the HSM USB device. &lt;br /&gt;
#: [[File:37-sm.png|580px|screenshot]]&lt;br /&gt;
# If the installation finished successfully, it will initiate a reboot. &#039;&#039;&#039;Please do not unplug the USB stick or HSM USB&#039;&#039;&#039; device at this point.&lt;br /&gt;
#: [[File:38-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. First Boot ==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
&#039;&#039;&#039;Do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039;&lt;br /&gt;
# The first boot of the IC-OS still requires the HSM USB device. Please wait until further instructions. This step can take up to 2 minutes.&lt;br /&gt;
#: [[File:39-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you see this message, you may unplug the HSM USB device, USB stick and VGA/Video. Your machine successfully joined the Internet Computer.&lt;br /&gt;
#: [[File:40-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Onboarding|Return to the Onboarding Document]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=5396</id>
		<title>Node Deployment Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=5396"/>
		<updated>2023-05-15T22:13:30Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 1. Download installation image */ Updated to latest release&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS) on [[Node_provider_hardware#Gen_2|Gen-2 hardware]]. Gen-1 hardware Node Providers should use the [[Internet Computer wiki#For Node Providers|Gen-1 runbooks]].&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to the respective manual.&lt;br /&gt;
&lt;br /&gt;
In case you encounter any issues during the installation process, check the [[Possible Node Onboarding Errors]] page. Otherwise contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association]&lt;br /&gt;
&lt;br /&gt;
Many thanks for your efforts in building the Internet Computer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A USB (3.0 speed that can hold at least 4GB) to put the image file on (Faster USBs will allow the process to go much faster.)&lt;br /&gt;
* The Nitrokey HSM for your data center. &lt;br /&gt;
* [Optional] A USB hub&lt;br /&gt;
** This is helpful at some data centers for simultaneously connecting keyboard, mouse, Nitrokey, etc.. &lt;br /&gt;
&lt;br /&gt;
== 1. Download installation image ==&lt;br /&gt;
&lt;br /&gt;
# Download the IC-OS USB installer image. &#039;&#039;&#039;This link will always provide the current blessed version. Do NOT use an old USB image&#039;&#039;&#039;:&amp;lt;br&amp;gt;  https://download.dfinity.systems/ic/d6d395a480cd6986b4788f4aafffc5c03a07e46e/setup-os/disk-img/disk-img.tar.gz&lt;br /&gt;
# Download the corresponding checksum:&amp;lt;br&amp;gt;https://download.dfinity.systems/ic/d6d395a480cd6986b4788f4aafffc5c03a07e46e/setup-os/disk-img/SHA256SUMS&lt;br /&gt;
&lt;br /&gt;
== 2. Verify checksum and unarchive file ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
* Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
*  Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Create Bootable USB Stick ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/disk4s1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# The file path is an example. Use the absolute path to the downloaded image. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong device. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/sdb1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive. &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=~/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
# Start Rufus &lt;br /&gt;
# Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#: [[File:05.png|480px|screenshot]]&lt;br /&gt;
# You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#: [[File:06.png|480px|screenshot]]&lt;br /&gt;
#: [[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
== 4. Add configuration ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in TextEdit.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:mac_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#: [[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
# Right click the CONFIG partition &lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#: [[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#: [[File:11-b.png|480px|screenshot]]&lt;br /&gt;
# Click OK.&lt;br /&gt;
# You should now be able to see the CONFIG partition in your Windows Explorer. Select the config.ini configuration file &lt;br /&gt;
#: [[File:12-b.png|780px|screenshot]]&lt;br /&gt;
# Click on Edit to open it.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:13-b.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:14-b.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
# Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in KWrite.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:linux_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:linux_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 5. Connect Crash Cart ==&lt;br /&gt;
# In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine. &lt;br /&gt;
# Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#: [[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 6. UEFI Setup and Boot Menu ==&lt;br /&gt;
&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Dell]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Supermicro]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* * [[IC OS Installation - UEFI Configuration - ASUS]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Gigabyte]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - HPE]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished.&lt;br /&gt;
&lt;br /&gt;
== 7. IC-OS Installation ==&lt;br /&gt;
# Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#: [[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
# The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 8 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#: [[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you get asked to insert the HSM, please remove the keyboard and instead insert the HSM USB device. &lt;br /&gt;
#: [[File:37-sm.png|580px|screenshot]]&lt;br /&gt;
# If the installation finished successfully, it will initiate a reboot. &#039;&#039;&#039;Please do not unplug the USB stick or HSM USB&#039;&#039;&#039; device at this point.&lt;br /&gt;
#: [[File:38-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. First Boot ==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
&#039;&#039;&#039;Do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039;&lt;br /&gt;
# The first boot of the IC-OS still requires the HSM USB device. Please wait until further instructions. This step can take up to 2 minutes.&lt;br /&gt;
#: [[File:39-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you see this message, you may unplug the HSM USB device, USB stick and VGA/Video. Your machine successfully joined the Internet Computer.&lt;br /&gt;
#: [[File:40-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Onboarding|Return to the Onboarding Document]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=5377</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=5377"/>
		<updated>2023-05-11T22:11:48Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Requirements */ Added educational links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn how to participate in the Internet Computer network as a Node Provider and to receive 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;
* [[Node Provider Network Setup Guide#The Bare Minimum Network Requirements|Public IP addresses]]:&lt;br /&gt;
** One /64 IPv6 range&lt;br /&gt;
** One IPv4 address for every 4 node machines&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 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;
* 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/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 &#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;
#* 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;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;
== 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>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=5376</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=5376"/>
		<updated>2023-05-11T22:06:42Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Requirements */ Detailed IP address req&amp;#039;s&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn how to participate in the Internet Computer network as a Node Provider and to receive 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;
* [[Node Provider Network Setup Guide#The Bare Minimum Network Requirements|Public IP addresses]]:&lt;br /&gt;
** One /64 IPv6 range&lt;br /&gt;
** One IPv4 address for every 4 node machines&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/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 &#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;
#* 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;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;
== 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>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5375</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5375"/>
		<updated>2023-05-11T22:04:20Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* The Bare Minimum Network Requirements */ Changed wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NP Network Requirements - EZ Guide =&lt;br /&gt;
&#039;&#039;&#039;Who is this for?&#039;&#039;&#039; Node Providers (NP’s) who need to set up their servers into a rack and set up a functioning network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What skills are necessary?&#039;&#039;&#039; You should be familiar with IP networking, network equipment and network cabling.&lt;br /&gt;
&lt;br /&gt;
== The Bare Minimum Network Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* [[Node provider hardware#Gen%202|“Gen-2” node hardware]] &lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps per node&lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (serving responses to client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes. See [[Node Provider Network Setup Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for table.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC OS Installation Runbook#4.%20Add%20configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;first two 10G network ports&#039;&#039;&#039; on each server are connected to the 10G switch.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the bottom two ports are considered ports 1 and 2 and will be enumerated by Linux in this order. Connect the bottom two ports to the switch. &lt;br /&gt;
&lt;br /&gt;
Servers from other vendors will differ! See the server documentation for guidance. &lt;br /&gt;
&lt;br /&gt;
This is subject to change - the IC-OS network configuration logic is undergoing improvements to make it more flexible.&lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart (requires physical interaction with the machine).&lt;br /&gt;
* Connect the BMC to a separate dumb switch, dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own firewall(s) and rate limiters very strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Do the &#039;&#039;&#039;first and second 10G ports&#039;&#039;&#039; on each server plug into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5374</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5374"/>
		<updated>2023-05-11T22:03:26Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* The Bare Minimum Network Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NP Network Requirements - EZ Guide =&lt;br /&gt;
&#039;&#039;&#039;Who is this for?&#039;&#039;&#039; Node Providers (NP’s) who need to set up their servers into a rack and set up a functioning network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What skills are necessary?&#039;&#039;&#039; You should be familiar with IP networking, network equipment and network cabling.&lt;br /&gt;
&lt;br /&gt;
== The Bare Minimum Network Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* [[Node provider hardware#Gen%202|“Gen-2” node hardware]] &lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps minimum per node &lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes. See [[Node Provider Network Setup Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for table.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC OS Installation Runbook#4.%20Add%20configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;first two 10G network ports&#039;&#039;&#039; on each server are connected to the 10G switch.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the bottom two ports are considered ports 1 and 2 and will be enumerated by Linux in this order. Connect the bottom two ports to the switch. &lt;br /&gt;
&lt;br /&gt;
Servers from other vendors will differ! See the server documentation for guidance. &lt;br /&gt;
&lt;br /&gt;
This is subject to change - the IC-OS network configuration logic is undergoing improvements to make it more flexible.&lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart (requires physical interaction with the machine).&lt;br /&gt;
* Connect the BMC to a separate dumb switch, dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own firewall(s) and rate limiters very strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Do the &#039;&#039;&#039;first and second 10G ports&#039;&#039;&#039; on each server plug into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5367</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5367"/>
		<updated>2023-05-10T03:05:13Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* References */ Added small note&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NP Network Requirements - EZ Guide =&lt;br /&gt;
&#039;&#039;&#039;Who is this for?&#039;&#039;&#039; Node Providers (NP’s) who need to set up their servers into a rack and set up a functioning network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What skills are necessary?&#039;&#039;&#039; You should be familiar with IP networking, network equipment and network cabling.&lt;br /&gt;
&lt;br /&gt;
== The Bare Minimum Network Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* [[Node provider hardware#Gen%202|“Gen-2” node hardware]] &lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps minimum per node &lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes. See [[Node Provider Network Setup Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for more details.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC OS Installation Runbook#4.%20Add%20configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;first two 10G network ports&#039;&#039;&#039; on each server are connected to the 10G switch.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the bottom two ports are considered ports 1 and 2 and will be enumerated by Linux in this order. Connect the bottom two ports to the switch. &lt;br /&gt;
&lt;br /&gt;
Servers from other vendors will differ! See the server documentation for guidance. &lt;br /&gt;
&lt;br /&gt;
This is subject to change - the IC-OS network configuration logic is undergoing improvements to make it more flexible.&lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart (requires physical interaction with the machine).&lt;br /&gt;
* Connect the BMC to a separate dumb switch, dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own firewall(s) and rate limiters very strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Do the &#039;&#039;&#039;first and second 10G ports&#039;&#039;&#039; on each server plug into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Gen-2 Network Requirements|Gen2 Network Requirements]] - more detailed, possibly out of date.&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5366</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5366"/>
		<updated>2023-05-10T03:04:52Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Added link to Gen2 Network Requirements document&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NP Network Requirements - EZ Guide =&lt;br /&gt;
&#039;&#039;&#039;Who is this for?&#039;&#039;&#039; Node Providers (NP’s) who need to set up their servers into a rack and set up a functioning network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What skills are necessary?&#039;&#039;&#039; You should be familiar with IP networking, network equipment and network cabling.&lt;br /&gt;
&lt;br /&gt;
== The Bare Minimum Network Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* [[Node provider hardware#Gen%202|“Gen-2” node hardware]] &lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps minimum per node &lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes. See [[Node Provider Network Setup Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for more details.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC OS Installation Runbook#4.%20Add%20configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;first two 10G network ports&#039;&#039;&#039; on each server are connected to the 10G switch.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the bottom two ports are considered ports 1 and 2 and will be enumerated by Linux in this order. Connect the bottom two ports to the switch. &lt;br /&gt;
&lt;br /&gt;
Servers from other vendors will differ! See the server documentation for guidance. &lt;br /&gt;
&lt;br /&gt;
This is subject to change - the IC-OS network configuration logic is undergoing improvements to make it more flexible.&lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart (requires physical interaction with the machine).&lt;br /&gt;
* Connect the BMC to a separate dumb switch, dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own firewall(s) and rate limiters very strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Do the &#039;&#039;&#039;first and second 10G ports&#039;&#039;&#039; on each server plug into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Gen-2 Network Requirements|Gen2 Network Requirements]] - possibly out of date.&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Documentation&amp;diff=5365</id>
		<title>Node Provider Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Documentation&amp;diff=5365"/>
		<updated>2023-05-10T03:02:38Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Gen-2 Documentation */ Removed network req&amp;#039;s link, add network guide link, removed DFINITY network runbook link (available on network guide)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
ICP runs on a [[Sovereign Network]] that is a governed by a DAO using [[Deterministic Decentralization | deterministic decentralization]] to maximize its [[Decentralization in ICP: Infrastructure Governance | decentralization]]. To be part of the ICP infrastructure, any potential node providers can submit NNS proposals to the DAO controlling the ICP blockchain. ICP community then votes on whether to include the node provider. Node providers invest in and operate the node hardware which powers the Internet Computer. 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;
&lt;br /&gt;
This article is the hub for ICP node provider documentation.&lt;br /&gt;
&lt;br /&gt;
==Node Provider Tokenomics &amp;amp; Remuneration==&lt;br /&gt;
Node providers receive rewards (remuneration) for operating node machines that run the IC network. The single source of truth for node provider rewards is the NNS, where changes can only be made through NNS proposals adopted by the IC community.&lt;br /&gt;
&lt;br /&gt;
This page summarizes the current node provider rewards and serves to discuss proposals for future reward models: [[Node Provider Remuneration]]&lt;br /&gt;
&lt;br /&gt;
==Node Machine Hardware Requirements==&lt;br /&gt;
&lt;br /&gt;
Node machines on ICP network need to keep up with the requirements of the network, please see: [[Node Machine Hardware#Gen_2 | Gen-2 Node Machine Hardware]].&lt;br /&gt;
&lt;br /&gt;
==Submitting Proposal to Join the Network==&lt;br /&gt;
&lt;br /&gt;
As part of the process to become a node provider, a candidate node provider has to declare their intent and self-identify so the ICP DAO can make an informed decision. Please see [[Node Provider Self-declaration]] for more info.&lt;br /&gt;
&lt;br /&gt;
==Onboarding for accepted Node Providers==&lt;br /&gt;
&lt;br /&gt;
===Gen-2 Documentation===&lt;br /&gt;
&lt;br /&gt;
These articles are for candidate node providers considering becoming node providers or node providers recently accepted by the ICP DAO. The term &amp;quot;Gen-2&amp;quot; refers to &amp;quot;Generation 2&amp;quot;, which is the current set of protocols for new node providers. &lt;br /&gt;
&lt;br /&gt;
* [[Node Machine Hardware#Gen_2 | Gen-2 Node Machine Hardware]]&lt;br /&gt;
* [[Node Provider Network Setup Guide]]&lt;br /&gt;
* [[Node Provider Remuneration]]&lt;br /&gt;
* [[Node Provider Self-declaration]]&lt;br /&gt;
* [[Node Provider Onboarding]]&lt;br /&gt;
* [[IC OS Installation Runbook]] for Gen-2&lt;br /&gt;
&lt;br /&gt;
Users accepted by the ICP DAO to be a node provider, can follow these instructions to add their node: [[Node Provider Onboarding]].&lt;br /&gt;
&lt;br /&gt;
===Node Provider Troubleshooting===&lt;br /&gt;
* [[Node Provider Troubleshooting]]&lt;br /&gt;
** [[Possible Node Onboarding Errors]]&lt;br /&gt;
** [[Unhealthy Nodes]]&lt;br /&gt;
** [[Updating Firmware]]&lt;br /&gt;
** [[iDRAC access and TSR logs]]&lt;br /&gt;
&lt;br /&gt;
===Gen-1 Documentation===&lt;br /&gt;
The first batch of ICP node providers joined under Gen-1 (Generation 1). These documents are for those legacy node providers.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation Runbook - Dell Poweredge]] for Gen-1&lt;br /&gt;
* [[IC OS Installation Runbook - Supermicro]] for Gen-1&lt;br /&gt;
* [[Storage Runbook]] for Gen-1&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5364</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5364"/>
		<updated>2023-05-10T02:58:23Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* The Bare Minimum Network Requirements */ Added local link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NP Network Requirements - EZ Guide =&lt;br /&gt;
&#039;&#039;&#039;Who is this for?&#039;&#039;&#039; Node Providers (NP’s) who need to set up their servers into a rack and set up a functioning network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What skills are necessary?&#039;&#039;&#039; You should be familiar with IP networking, network equipment and network cabling.&lt;br /&gt;
&lt;br /&gt;
== The Bare Minimum Network Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* [[Node provider hardware#Gen%202|“Gen-2” node hardware]] &lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps minimum per node &lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes. See [[Node Provider Network Setup Guide#Appendix 1: Number of IPv4 Addresses Required|Appendix 1]] for more details.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC OS Installation Runbook#4.%20Add%20configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;first two 10G network ports&#039;&#039;&#039; on each server are connected to the 10G switch.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the bottom two ports are considered ports 1 and 2 and will be enumerated by Linux in this order. Connect the bottom two ports to the switch. &lt;br /&gt;
&lt;br /&gt;
Servers from other vendors will differ! See the server documentation for guidance. &lt;br /&gt;
&lt;br /&gt;
This is subject to change - the IC-OS network configuration logic is undergoing improvements to make it more flexible.&lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart (requires physical interaction with the machine).&lt;br /&gt;
* Connect the BMC to a separate dumb switch, dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own firewall(s) and rate limiters very strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Do the &#039;&#039;&#039;first and second 10G ports&#039;&#039;&#039; on each server plug into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5363</id>
		<title>Node Provider Networking Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Networking_Guide&amp;diff=5363"/>
		<updated>2023-05-10T02:57:44Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Created NP &amp;#039;EZ&amp;#039; network guide.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NP Network Requirements - EZ Guide =&lt;br /&gt;
&#039;&#039;&#039;Who is this for?&#039;&#039;&#039; Node Providers (NP’s) who need to set up their servers into a rack and set up a functioning network.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;What skills are necessary?&#039;&#039;&#039; You should be familiar with IP networking, network equipment and network cabling.&lt;br /&gt;
&lt;br /&gt;
== The Bare Minimum Network Requirements ==&lt;br /&gt;
To join your servers to the Internet Computer (IC) you will need:&lt;br /&gt;
&lt;br /&gt;
* 10G Network equipment&lt;br /&gt;
** [[wikipedia:Small_Form-factor_Pluggable|SFP+]] or [[wikipedia:10_Gigabit_Ethernet|Ethernet]]&lt;br /&gt;
** Switch(es)&lt;br /&gt;
** Cabling&lt;br /&gt;
** Quantity determined by number of nodes deployed&lt;br /&gt;
* [[Node provider hardware#Gen%202|“Gen-2” node hardware]] &lt;br /&gt;
* Rackspace in a data center&lt;br /&gt;
* Internet connection&lt;br /&gt;
** Bandwidth&lt;br /&gt;
*** ~300Mbps minimum per node &lt;br /&gt;
*** Ingress/egress ratio is currently 1:1. We expect egress (client queries) to increase faster than ingress in the future.&lt;br /&gt;
*** This should guide how many servers to deploy and the appropriate ISP connection speed&lt;br /&gt;
*** E.g. a 1Gbps connection will support up to 3 IC nodes.&lt;br /&gt;
** One IPv6 /64 subnet - each node gets multiple IPv6 addresses&lt;br /&gt;
** One IPv4 address for every 4 nodes. See Appendix 1 for more details.&lt;br /&gt;
** &#039;&#039;&#039;All IP addresses are assigned statically&#039;&#039;&#039; and automatically by IC-OS&lt;br /&gt;
*** This is configured in the [[IC OS Installation Runbook#4.%20Add%20configuration|IC-OS Installation Runbook]]&lt;br /&gt;
&lt;br /&gt;
== Network Cabling ==&lt;br /&gt;
When racking and stacking your servers, ensure the &#039;&#039;&#039;first two 10G network ports&#039;&#039;&#039; on each server are connected to the 10G switch.&lt;br /&gt;
&lt;br /&gt;
[[File:Supermicro 1124US-TNRP 1U server rear photo diagram.png]]&lt;br /&gt;
&lt;br /&gt;
For example, on a Supermicro 1U server, the bottom two ports are considered ports 1 and 2 and will be enumerated by Linux in this order. Connect the bottom two ports to the switch. &lt;br /&gt;
&lt;br /&gt;
Servers from other vendors will differ! See the server documentation for guidance. &lt;br /&gt;
&lt;br /&gt;
This is subject to change - the IC-OS network configuration logic is undergoing improvements to make it more flexible.&lt;br /&gt;
&lt;br /&gt;
Connect the 10G switch to the ISP endpoint - this could be the Top Of Rack (TOR) switch or other box. &lt;br /&gt;
&lt;br /&gt;
== BMC Setup Recommendations ==&lt;br /&gt;
&lt;br /&gt;
=== What’s a BMC? ===&lt;br /&gt;
The [[wikipedia:Intelligent_Platform_Management_Interface#Baseboard_management_controller|Baseboard Management Controller (BMC)]] grants control of the underlying server hardware.&lt;br /&gt;
&lt;br /&gt;
BMC’s have notoriously poor security. Vendors may name their implementation differently (Dell -&amp;gt; iDRAC, HPE -&amp;gt; iLO, etc.).&lt;br /&gt;
&lt;br /&gt;
=== Recommendations ===&lt;br /&gt;
&lt;br /&gt;
==== Change the password ====&lt;br /&gt;
BMC’s usually come with a common password. Log in via crash cart, KVM or the web interface and change it to something [https://krebsonsecurity.com/password-dos-and-donts/ strong].&lt;br /&gt;
&lt;br /&gt;
==== No broad internet access ====&lt;br /&gt;
It is highly recommended: &#039;&#039;&#039;do not expose your BMC&#039;&#039;&#039; to the broad internet. This is a safety precaution against attackers.&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
&lt;br /&gt;
* Don’t connect the BMC to the internet.&lt;br /&gt;
** Any BMC activities occur via SSH on the host (unreliable on many mainboard vendors) or via crash cart (requires physical interaction with the machine).&lt;br /&gt;
* Connect the BMC to a separate dumb switch, dumb switch connects to a Rack Mounted Unit (RMU).&lt;br /&gt;
* Connect the BMC to a managed switch, separate VLAN&lt;br /&gt;
&lt;br /&gt;
This can get complicated. It’s outside the scope of this document to explain how to do this.&lt;br /&gt;
&lt;br /&gt;
Resources:&lt;br /&gt;
&lt;br /&gt;
* [https://security.stackexchange.com/questions/46351/best-practice-for-accessing-management-port-of-firewall StackExchange - Best practice for accessing management port of firewall]&lt;br /&gt;
* [https://www.supermicro.com/products/nfo/files/IPMI/Best_Practices_BMC_Security.pdf Supermicro Guidance]&lt;br /&gt;
* [https://www.unicomengineering.com/blog/ipmi-best-practices/ Unicom Guidance]&lt;br /&gt;
&lt;br /&gt;
== What NOT to do ==&lt;br /&gt;
&lt;br /&gt;
=== Don’t use external firewalls, packet filters, rate limiters ===&lt;br /&gt;
Don’t block or interfere with any traffic to the node machines. This can disrupt node machine functionality. Occasionally ports are opened for incoming (and outgoing) connections when new versions of node software are deployed. &lt;br /&gt;
&lt;br /&gt;
==== What about network security? ====&lt;br /&gt;
IC-OS manages its own firewall(s) and rate limiters very strictly and is designed with security as a primary principle. &lt;br /&gt;
&lt;br /&gt;
== How DFINITY manages its servers ==&lt;br /&gt;
See reference DFINITY [[Gen-2 Data Center runbook|data center runbook]].&lt;br /&gt;
&lt;br /&gt;
== Final Checklist ==&lt;br /&gt;
&lt;br /&gt;
* Did you deploy a 10G switch?&lt;br /&gt;
* Do the &#039;&#039;&#039;first and second 10G ports&#039;&#039;&#039; on each server plug into the 10G switch?&lt;br /&gt;
* Do you have &#039;&#039;&#039;one IPv6 /64 prefix&#039;&#039;&#039; allocated from your ISP?&lt;br /&gt;
* Do you have at least &#039;&#039;&#039;one IPv4 address for every four nodes&#039;&#039;&#039; allocated?&lt;br /&gt;
* Does each node have ~300Mbps bandwidth? &lt;br /&gt;
* Is your &#039;&#039;&#039;BMC inaccessible&#039;&#039;&#039; from the broad internet?&lt;br /&gt;
&lt;br /&gt;
== Appendix 1: Number of IPv4 Addresses Required ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|# Nodes&lt;br /&gt;
|# IPv4 Addresses&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|2&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|3&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|4&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|19&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|20&lt;br /&gt;
|5&lt;br /&gt;
|-&lt;br /&gt;
|21&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|22&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|23&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|24&lt;br /&gt;
|6&lt;br /&gt;
|-&lt;br /&gt;
|25&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|26&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|27&lt;br /&gt;
|7&lt;br /&gt;
|-&lt;br /&gt;
|28&lt;br /&gt;
|7&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:Supermicro_1124US-TNRP_1U_server_rear_photo_diagram.png&amp;diff=5362</id>
		<title>File:Supermicro 1124US-TNRP 1U server rear photo diagram.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:Supermicro_1124US-TNRP_1U_server_rear_photo_diagram.png&amp;diff=5362"/>
		<updated>2023-05-10T02:52:01Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Supermicro 1124US-TNRP 1U server rear photo diagram&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Onboarding&amp;diff=5361</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=5361"/>
		<updated>2023-05-10T02:24:45Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* X. Onboard nodes */ Promoted Gen2 in the order of instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Learn how to participate in the Internet Computer network as a Node Provider and to receive 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/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 &#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;
#* 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;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>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Machine_Hardware_Guide&amp;diff=5346</id>
		<title>Node Provider Machine Hardware Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Provider_Machine_Hardware_Guide&amp;diff=5346"/>
		<updated>2023-05-08T20:39:21Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* Gen 2 Node Machine */ Clarified CPU requirements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What are the Hardware Requirements for Node Machines? ==&lt;br /&gt;
Node providers operate one or more node machines than run in the IC network. Gen1 Hardware requirements have been used by Node Providers to set up node machines during Genesis launch.&lt;br /&gt;
&lt;br /&gt;
The Gen2 Hardware requirements have been defined for the further growth of the IC network. The specifications for the Gen2 node machines are generic (instead of vendor specific) and supports VM memory encryption and attestation which will be needed in future features on the IC.&lt;br /&gt;
&lt;br /&gt;
Below are the up-to-date specifications for both the Gen2 node machines and Gen1 node machines.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gen 2 Node Machine ==&lt;br /&gt;
=== Generic specification Gen2 Node Machine ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Dual Socket AMD EPYC Milan CPU - Recommended: [https://en.wikichip.org/wiki/amd/epyc/7313 7313] (16C/32T 3 Ghz)&lt;br /&gt;
[https://en.wikichip.org/wiki/amd/epyc#7003_Series_.28Zen_3.29 optionally] 7343, 7373, 73F3&lt;br /&gt;
|-&lt;br /&gt;
| 16x 32GB RDIMM, 3200MT/s, Dual Rank&lt;br /&gt;
|-&lt;br /&gt;
| 5x 6.4TB NVMe Mixed Mode (DWPD &amp;gt;= 3)&lt;br /&gt;
|-&lt;br /&gt;
| Dual Port 10G SFP or BASE-T&lt;br /&gt;
|-&lt;br /&gt;
| TPM 2.0&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note the NVMe drives should be recognized by Linux as NVMe (i.e., show up as `/dev/nvme*` devices). SATA backplanes or any other hardware which prevents this should not be used.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Validated Configurations ===&lt;br /&gt;
DFINITY has [https://forum.dfinity.org/t/draft-motion-proposal-new-hardware-specification-and-remuneration-for-ic-nodes/14202/14?u=garym validated] the following Gen2 hardware configurations.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
==== Validated configuration: Dell ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7343 3.2GHz, 16C/32T, 128M Cache (190W) &lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB RDIMM, 3200MT/s, Dual Rank 16Gb BASE x8&lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4TB Enterprise NVMe Mixed Use AG Drive U.2 Gen4 with carrier&lt;br /&gt;
|-&lt;br /&gt;
| 1 || PowerEdge R6525 Motherboard, with 2 x 1Gb Onboard LOM (BCM5720)MLK V2&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Dual, Hot-plug, Redundant Power Supply (1+1) 1100W, Mixed Mode Titanium&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Intel X710 Dual Port 10GbE SFP+, OCP NIC 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Trusted Platform Module 2.0 V3&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Validated configuration: ASUS ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD EPYC 7313 (3,00 GHz, 16-Core, 128 MB)&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB ECC Reg ATP DDR4 3200 RAM &lt;br /&gt;
|-&lt;br /&gt;
| 5 || 6.4 TB NVMe Kioxia SSD 3D-NAND TLC U.3 (Kioxia CM6-V)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Asus Mainboard KMPP-D32 Series (without OCP 3.0, without Pike)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 1600 Watt redundant PSU&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Broadcom 25 Gigabit P225P SFP28 Dual Port Network Card&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== Validated configurations: Supermicro &amp;amp; Gigabyte ====&lt;br /&gt;
Validation is being re-run on Supermicro and Gigabyte machines which match the spec. This section will be updated when those results are ready.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Gen 1 Node Machine ==&lt;br /&gt;
=== Node Machine Type 1 - Dell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R6525&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Chassis - Supports Up to 10 NVMe drives, 12 drives total&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual 1 GB on Motherboard&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Low Profile PCIe Slots&lt;br /&gt;
|-&lt;br /&gt;
| - || 3 Year Basic NBD Support&lt;br /&gt;
|-&lt;br /&gt;
| - || iDrac Enterprise&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual port 10GbE Base - T Adapter Broadcom, PCIe Low Profile&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 3.2TB NVMe, Mixed Use, 2.5&amp;quot; with Carrier&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB RDIMM (3200MT/s)&lt;br /&gt;
|-&lt;br /&gt;
| 2 || AMD 7302 3GHz, 16C/32T, 128M, 155W, 3200&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Single Power Supply (800W)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C13-C14, 3M, 125V 15A Power Cored&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Node Machine Type 1 - SuperMicro ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || AS - 1023US - TR4&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Rome 7302 DP/UP 16C/32T 3.0&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 32GB DDR4-3200 2Rx4 ECC REG DIMM&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Samsung PM983 3.2TB NVMe PCIE/SATA Hybrid M.2 &amp;amp; 1 PCIE&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 800W Power Supply&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Std LP 2-port 10G RJ45, Intel x540&lt;br /&gt;
|-&lt;br /&gt;
| 5 || Micron 5300 PRO 7.4TB, SATA, 2.5&#039;, 3D TLC, .6DWPD (with Caddie)&lt;br /&gt;
|-&lt;br /&gt;
| 1 || C13/C14 13A Power Cord&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
=== Node Machine Type 2 - Dell ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 1 || R6515&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 3.5&amp;quot; Chassis with up to 4 Hot-Plug Hard Drives and OS RAID&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual 1 Gb on Motherboard&lt;br /&gt;
|-&lt;br /&gt;
| 3 || Low Profile PCIe Slots&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Standard Fan&lt;br /&gt;
|-&lt;br /&gt;
| - || 3 Year Basic NBD Support&lt;br /&gt;
|-&lt;br /&gt;
| - || iDrac Enterprise&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Dual Port 10GbE Base - T Adapter Broadcom, PCIe LOw Profile&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 480GB SSD SATA Mix Use 6Gbps 512 2.5in Hot-Plug AG Drive, 3.5in&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 8GB RDIMM, 3200 MT/s, Single Rank&lt;br /&gt;
|-&lt;br /&gt;
| 1 || AMD EPYC 7232P 3.10GHz, 8C/16T, 64M Cache (120W) DDR4-3200&lt;br /&gt;
|-&lt;br /&gt;
| 1 || Dual Hot-Plug Redundant Power Supply (1+1), 550W&lt;br /&gt;
|-&lt;br /&gt;
| 2 || Jumper Cord - C13/C14, .6M, 250V, 13A&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Gen-2_Data_Center_runbook&amp;diff=5292</id>
		<title>Gen-2 Data Center runbook</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Gen-2_Data_Center_runbook&amp;diff=5292"/>
		<updated>2023-05-03T17:33:49Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Changed from thumbnail to basic.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ICR Gen2 build - DFINITY-managed reference design ==&lt;br /&gt;
&#039;&#039;This is a work-in-progress&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This runbook illustrates how DFINITY manages a typical rack of IC nodes (an &#039;ICR&#039;). It is published for the benefit of node providers to show one possible implementation of the ICR Gen2 networking requirements.&lt;br /&gt;
&lt;br /&gt;
This runbook is NOT mandatory for ICR builds that are not managed by DFINITY. &lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
Collect the following information for the variables that will need to be adjusted for your installation.&lt;br /&gt;
* &amp;lt;mark&amp;gt;site-ID&amp;lt;/mark&amp;gt; (i.e. “zh2” or “mr1”)&lt;br /&gt;
* PDU outlet type in racks (IEC 60320 C13 or national power outlet)&lt;br /&gt;
* IPv4 subnet assignment for management network - a new /25 subnet has to be assigned by the node provider based on NP’s addressing plan (DFINITY-owned ICRs use 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.128/25 addressing scheme where X is assigned to each ICR)&lt;br /&gt;
* RMU or jump-box HW (server, power cords and 5x 2m (7ft) Cat6 cables  and the required installation artifacts are available&lt;br /&gt;
&lt;br /&gt;
=== Uplink configuration ===&lt;br /&gt;
Collect information about the uplinks and verify the minimum requirements:&lt;br /&gt;
# Management Port&lt;br /&gt;
#* Assigned public IPv4 range (min /31): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* Default GW address: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* 1G/10G, media type fiber/copper: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if fiber: multi-mode/single-mode: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if fiber: patch panel connector type (SC/PC or LC/PC or E2000/APC …): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if 1G fiber: required transceiver type (LX/SX/other): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if 10G fiber: required transceiver type (LR/SR/other): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#Production Port&lt;br /&gt;
#* Assigned public IPv6 range (/64): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* IPv6 Default GW address: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* (optional) assigned public IPv4 range (min /29): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* (optional) IPv4 Default GW address: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* 1G/10G, media type fiber/copper: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if fiber: multi-mode/single-mode: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if fiber: patch panel connector type (SC/PC or LC/PC or E2000/APC …): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if 1G fiber: required transceiver type (LX/SX/other): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if 10G fiber: required transceiver type (LR/SR/other): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if other fiber: required transceiver type: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
# Location and the circuit IDs or patch-panel positions of the management and production ports: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
# Number and location of the racks (1 or 2): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HW requirements ===&lt;br /&gt;
===== Verify BOM for each rack: =====&lt;br /&gt;
* 1x Dell EMC S3048-ON with 2x AC PSU and PSU-&amp;gt;ports airflow&lt;br /&gt;
* 1x Dell EMC S4148T-ON with 2x AC PSU and PSU-&amp;gt;ports airflow (or alternative - see below)&lt;br /&gt;
* 4x power cords for the switches (PDU outlet type to C13)&lt;br /&gt;
&lt;br /&gt;
Alternatives for S4148T-ON (can be used when servers have SFP+ or SFP28 cages):&lt;br /&gt;
* 1x Dell EMC S4148F-ON with 2x AC PSU and PSU-&amp;gt;ports airflow&lt;br /&gt;
* 1x Dell EMC S5248F-ON with 2x AC PSU and PSU-&amp;gt;ports airflow&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Verify BOM for ICR: =====&lt;br /&gt;
* If management port is single-mode fiber:&lt;br /&gt;
* 1x management port fiber patch cord 9/125 LC/PC to patch-panel type connector&lt;br /&gt;
* 1x transceiver (SFP or SFP+) matching the management port required transceiver type (probably -LX or -LR)&lt;br /&gt;
&lt;br /&gt;
If production port is single-mode fiber:&lt;br /&gt;
* 1x production port fiber patch cord 9/125 LC/PC to patch-panel type connector&lt;br /&gt;
* 1x transceiver (SFP or SFP+ or QSFP+ or QSFP28) matching the production port required transceiver type&lt;br /&gt;
* 40G QSFP+ to 10G SFP+ Adapter Converter Module if switch is S4148T-ON and the transceiver is SFP or SFP+&lt;br /&gt;
&lt;br /&gt;
If management port is multi-mode fiber:&lt;br /&gt;
* 1x management port fiber patch cord 50/125 LC/PC to patch-panel type connector&lt;br /&gt;
* 1x transceiver (SFP or SFP+) matching the management port required transceiver type (probably -SX or -SR)&lt;br /&gt;
&lt;br /&gt;
If production port is multi-mode fiber:&lt;br /&gt;
* 1x production port fiber patch cord 50/125 LC/PC to patch-panel type connector&lt;br /&gt;
* 1x transceiver (SFP or SFP+ or QSFP+ or QSFP28) matching the production port required transceiver type if production port is fiber (probably -SX or -SR)&lt;br /&gt;
* 40G QSFP+ to 10G SFP+ Adapter Converter Module if switch is S4148T-ON and the transceiver is SFP or SFP+&lt;br /&gt;
&lt;br /&gt;
If management port is copper:&lt;br /&gt;
* 2m (7ft) Cat6 copper cable&lt;br /&gt;
&lt;br /&gt;
If production port is copper:&lt;br /&gt;
* 2m (7ft) Cat6 copper cable&lt;br /&gt;
* 40G QSFP+ to 10G SFP+ Adapter Converter Module if switch is S4148T-ON and the transceiver is SFP or SFP+&lt;br /&gt;
* 10GBASE-T SFP+ if production switch is Dell EMC S4148F-ON or Dell EMC S5248F-ON&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Verify BOM for 2-rack ICR: =====&lt;br /&gt;
If the DC rules allows running DAC or AOC cables between the racks and the position of the racks and the maximum length of the available AOC or DAC allows connecting the switches:&lt;br /&gt;
* 1x 100G QSFP28 AOC or DAC cable (matching the required length from one production switch to another - with neighboring racks it is usually 5m (16ft) )&lt;br /&gt;
* 2x Cat6 interconnects between the racks (matching the required length from one management switch to another and from RMU to the switch in the second rack, usually 5m (16ft))&lt;br /&gt;
&lt;br /&gt;
Otherwise:&lt;br /&gt;
* 2x single-mode (9/125) optical paths between the racks (four fibers or two pairs in total)&lt;br /&gt;
* 2x 100G QSFP28 -LR4, -LR or -CWDM4 transceivers&lt;br /&gt;
* 2x 9/125 2m (7ft) patch cords LC/PC to connector of the optical path termination&lt;br /&gt;
* 2x Cat6 interconnects between the racks&lt;br /&gt;
* 4x Cat6 2m (7ft) patch cables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Marking ===&lt;br /&gt;
* (virtually) mark the rack with both management and production uplink Rack 1&lt;br /&gt;
* (virtually) mark the rack with no uplinks Rack 2 (if the rack exists)&lt;br /&gt;
* Mark the production switch in Rack 1: &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw02&lt;br /&gt;
* Mark the production switch in Rack 2: &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw04 (if the rack exists)&lt;br /&gt;
* Mark the management switch in the Rack 1: &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw01&lt;br /&gt;
* Mark the management switch in the Rack 2: &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02 (if the rack exists)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Rack and stack devices ===&lt;br /&gt;
Racking and stacking of devices is beyond the scope of this runbook.&lt;br /&gt;
&lt;br /&gt;
The site should include the following components:&lt;br /&gt;
* Rack 1&lt;br /&gt;
** &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw02&lt;br /&gt;
** &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw01&lt;br /&gt;
** RMU / jump-box&lt;br /&gt;
** 0-14x servers (IC nodes)&lt;br /&gt;
* Rack 2 (if present)&lt;br /&gt;
** &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw04&lt;br /&gt;
** &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02&lt;br /&gt;
** 0-14x servers (IC nodes)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cabling ===&lt;br /&gt;
===== Minimum required steps =====&lt;br /&gt;
* In each rack connect PSUs of each switch the PDUs using the power cords, select different power rails for PSU1 and PSU2&lt;br /&gt;
* In Rack 1 connect the production uplink ([carrier] Internet) to {site-ID}-sw02 port 25 using the selected transceiver and 40G QSFP+ to 10G SFP+ Adapter Converter Module if switch is S4148T-ON and the transceiver is SFP or SFP+&lt;br /&gt;
* In Rack 1 connect the management uplink to RMU/jump-box port wan (for jump-box TBD runbook)&lt;br /&gt;
* In Rack 1 connect Cat6 cable from RMU port management1 to {site-ID}-msw01 port 46&lt;br /&gt;
* In Rack 1 connect Cat6 cable from RMU port management2 to {site-ID}-msw01 management port&lt;br /&gt;
* In Rack 1 connect Cat6 cable from RMU port lan1 to {site-ID}-sw02 port 54&lt;br /&gt;
* In Rack 1 connect Cat6 cable from {site-ID}-sw02 management port to {site-ID}-msw01 port 47&lt;br /&gt;
&lt;br /&gt;
If Rack 2 is present:&lt;br /&gt;
* Connect AOC/DAC or fiber optical path with QSFP28 transceivers from Rack 1 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw02 port 30 to Rack 2 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw04 port 30&lt;br /&gt;
* Connect Cat6 cable from Rack 1 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-mw01 port 48 to Rack 2 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02 port 48&lt;br /&gt;
* Connect Cat6 cable from Rack 1 RMU port management3 to Rack 2 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02 management port&lt;br /&gt;
* Connect Cat6 cable from port &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02 port 47 to Rack 2 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw04 management port&lt;br /&gt;
&lt;br /&gt;
===== Wiring diagram =====&lt;br /&gt;
[[File:2023-05-03_updated_dfinity_icr_rack_diagram.png.png|alt=]]&lt;br /&gt;
&lt;br /&gt;
===== Servers =====&lt;br /&gt;
The exact cabling instructions for servers are not part of this runbook because the servers differ in the port type, number of ports and location of ports. High-level requirements for each server:&lt;br /&gt;
* Connect the BMC / IPMI / iLO port of the server to the management switch in the same rack (allocate ports from left to right, take the first free ports with the matching speed and port type)&lt;br /&gt;
* Connect the first 10G/25G port to the production switch in the same rack (allocate ports from left to right, take the first free ports with the matching speed and port type)&lt;br /&gt;
* Use Cat6 cables or PatchBox Cat6 modules for connecting the servers if 10GBASE-T is supported by the switch and the server or at least one side; use 10GBASE-T SFP+ transceivers to adapt switch or server side with SFP+ or SFP28 interfaces&lt;br /&gt;
* Use AOC or DAC cables in case both the switch and the server have SFP+ or SFP28 interfaces; select the matching speed and type of the cable for the interface and verify the vendor compatibility on switch side and also on server side&lt;br /&gt;
&lt;br /&gt;
===== Dell OS10 NOS install =====&lt;br /&gt;
Verify that Dell OS10 (version &amp;gt;=10.4) is installed on all switches.&lt;br /&gt;
* If no NOS is installed or older version is installed, use NOS installation guide:&lt;br /&gt;
https://www.dell.com/support/manuals/en-us/force10-s4048-on/ee-upgrade-downgrade/installing-smartfabric-os10?guid=guid-9bf59a6c-9be9-4abb-99cf-b2671091f3e0&amp;amp;lang=en-us&lt;br /&gt;
* It is suggested to install the OS10 from USB stick as described in the “Manual installation” section:&lt;br /&gt;
https://www.dell.com/support/manuals/en-us/smartfabric-os10-emp-partner/ee-upgrade-downgrade/manual-installation?guid=guid-d4a157a0-e1fc-4ad7-bb68-cd98fdcc0025&amp;amp;lang=en-us&lt;br /&gt;
* For upgrading OS10 see the instructions in ”Upgrading OS10 software” chapter:  https://www.dell.com/support/manuals/en-sg/smartfabric-os10-emp-partner/ee-upgrade-downgrade/upgrading-os10-software?guid=guid-29a7887c-d5ed-4896-9cc6-9dcd614c0aee&amp;amp;lang=en-us&lt;br /&gt;
&lt;br /&gt;
===== Dell OS10 switch minimum configuration =====&lt;br /&gt;
* All switches are active and can be connected right after the NOS installation. Further configuration is required to set user accounts, re-set default passwords and switch hardening.&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* Generate a password for admin user&lt;br /&gt;
* Generate a password for linuxadmin user&lt;br /&gt;
* (optional) Collect SSH key for admin user&lt;br /&gt;
* Prepare serial console connection to the switch (see “Log in to an OS10 switch” chapter: https://www.dell.com/support/manuals/en-sg/dell-emc-smartfabric-os10/ee-upgrade-downgrade/log-in-to-an-os10-switch?guid=guid-977e7f9f-3175-49b4-a0bc-5e8a15d8c424&amp;amp;lang=en-us ) or collect the IP address from DHCP server if the switch has been auto-installed&lt;br /&gt;
* Assign management network IP addresses (following example is based on 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.128/25 assignment - DFINITY-only address plan):&lt;br /&gt;
** 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.254 - RMU or jump-box acting as default GW&lt;br /&gt;
** 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.140 - &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw01&lt;br /&gt;
** 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.141 - &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02&lt;br /&gt;
** 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.142 - &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw02&lt;br /&gt;
** 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.144 - &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw04&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
* Connect to the switch using the serial console and screen &amp;lt;mark&amp;gt;{switch tty device - i.e. /dev/ttyUSB0}&amp;lt;/mark&amp;gt; 115200 (Linux) or PuTTY (Windows)&lt;br /&gt;
* Enter configuration mode:&lt;br /&gt;
 &amp;lt;mark&amp;gt;{site-ID}-{switch name}&amp;lt;/mark&amp;gt;# configure terminal&lt;br /&gt;
 &amp;lt;mark&amp;gt;{site-ID}-{switch name}&amp;lt;/mark&amp;gt;(config)#&lt;br /&gt;
Clear interface mgm1/1/1:&lt;br /&gt;
 interface mgmt1/1/1&lt;br /&gt;
 shutdown&lt;br /&gt;
 no ip address dhcp&lt;br /&gt;
 no ipv6 address autoconfig&lt;br /&gt;
Configure management VRF and the management interface&lt;br /&gt;
 ip vrf management&lt;br /&gt;
 interface management&lt;br /&gt;
 !&lt;br /&gt;
 interface mgmt1/1/1&lt;br /&gt;
 no shutdown&lt;br /&gt;
 no ip address dhcp&lt;br /&gt;
 ip address {switch IP address - 10.10.&amp;lt;mark&amp;gt;X.Y&amp;lt;/mark&amp;gt;/25}&lt;br /&gt;
 ipv6 address autoconfig&lt;br /&gt;
 !&lt;br /&gt;
 management route 0.0.0.0/0 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.254&lt;br /&gt;
Configure users and basic configuration&lt;br /&gt;
 ip http vrf management&lt;br /&gt;
 default mtu 9216&lt;br /&gt;
 hostname &amp;lt;mark&amp;gt;{site-ID}-{switch name}&amp;lt;/mark&amp;gt;&lt;br /&gt;
 system-user linuxadmin password &amp;lt;mark&amp;gt;{linuxadmin password}&amp;lt;/mark&amp;gt;&lt;br /&gt;
 ip name-server vrf management 1.1.1.1&lt;br /&gt;
 username admin password &amp;lt;mark&amp;gt;{admin password}&amp;lt;/mark&amp;gt; role sysadmin priv-lvl 15&lt;br /&gt;
 username admin sshkey &amp;quot;&amp;lt;mark&amp;gt;{admin SSH key}&amp;lt;/mark&amp;gt;&amp;quot;&lt;br /&gt;
 snmp-server community public ro &lt;br /&gt;
 snmp-server contact &amp;quot;Contact Support&amp;quot;&lt;br /&gt;
 ntp server pool.ntp.org&lt;br /&gt;
 ntp source mgmt1/1/1&lt;br /&gt;
 ntp enable vrf management&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
* Ping from RMU / jump-box to the switch management interfaces:&lt;br /&gt;
 ping -c4 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.140&lt;br /&gt;
 ping -c4 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.141 (if installed)&lt;br /&gt;
 ping -c4 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.142&lt;br /&gt;
 ping -c4 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.144 (if installed)&lt;br /&gt;
* Test server BMC and IPv6 connectivity&lt;br /&gt;
** Deploy at least one server in each rack, collect BMC IP address in the management network and the server IP in production network&lt;br /&gt;
** Ping the collected server IPs from RMU / jump-box&lt;br /&gt;
&lt;br /&gt;
=== Dell OS10 operation recommendations ===&lt;br /&gt;
The details of Dell OS10-based switch operation is beyond the scope of this runbook. The ultimate responsibility for the network connection availability, quality and security lies with the node provider. The qualitative parameters depend among others also on the switching fabric performance and health. Therefore it is strongly recommended to implement the following steps:&lt;br /&gt;
&lt;br /&gt;
** Overall health of all switches should be watched - PSU, fan and memory and CPU load (SNMP-based monitoring or gRPC Streaming Telemetry)&lt;br /&gt;
** Port load of all switches should be watched (using gRPC Streaming Telemetry)&lt;br /&gt;
** New versions of OS10, new known issues and security advisories should be periodically (once a month) evaluated and upgrades should be scheduled when there is a relevant issue or enhancement in the newly available version&lt;br /&gt;
** The HW lifetime upgrade path should be followed according to the vendor’s recommendations&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>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Gen-2_Data_Center_runbook&amp;diff=5291</id>
		<title>Gen-2 Data Center runbook</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Gen-2_Data_Center_runbook&amp;diff=5291"/>
		<updated>2023-05-03T17:33:01Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: Use updated diagram. Mgmt switches don&amp;#039;t get node traffic.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== ICR Gen2 build - DFINITY-managed reference design ==&lt;br /&gt;
&#039;&#039;This is a work-in-progress&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This runbook illustrates how DFINITY manages a typical rack of IC nodes (an &#039;ICR&#039;). It is published for the benefit of node providers to show one possible implementation of the ICR Gen2 networking requirements.&lt;br /&gt;
&lt;br /&gt;
This runbook is NOT mandatory for ICR builds that are not managed by DFINITY. &lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
Collect the following information for the variables that will need to be adjusted for your installation.&lt;br /&gt;
* &amp;lt;mark&amp;gt;site-ID&amp;lt;/mark&amp;gt; (i.e. “zh2” or “mr1”)&lt;br /&gt;
* PDU outlet type in racks (IEC 60320 C13 or national power outlet)&lt;br /&gt;
* IPv4 subnet assignment for management network - a new /25 subnet has to be assigned by the node provider based on NP’s addressing plan (DFINITY-owned ICRs use 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.128/25 addressing scheme where X is assigned to each ICR)&lt;br /&gt;
* RMU or jump-box HW (server, power cords and 5x 2m (7ft) Cat6 cables  and the required installation artifacts are available&lt;br /&gt;
&lt;br /&gt;
=== Uplink configuration ===&lt;br /&gt;
Collect information about the uplinks and verify the minimum requirements:&lt;br /&gt;
# Management Port&lt;br /&gt;
#* Assigned public IPv4 range (min /31): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* Default GW address: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* 1G/10G, media type fiber/copper: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if fiber: multi-mode/single-mode: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if fiber: patch panel connector type (SC/PC or LC/PC or E2000/APC …): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if 1G fiber: required transceiver type (LX/SX/other): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if 10G fiber: required transceiver type (LR/SR/other): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#Production Port&lt;br /&gt;
#* Assigned public IPv6 range (/64): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* IPv6 Default GW address: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* (optional) assigned public IPv4 range (min /29): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* (optional) IPv4 Default GW address: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#* 1G/10G, media type fiber/copper: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if fiber: multi-mode/single-mode: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if fiber: patch panel connector type (SC/PC or LC/PC or E2000/APC …): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if 1G fiber: required transceiver type (LX/SX/other): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if 10G fiber: required transceiver type (LR/SR/other): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
#** if other fiber: required transceiver type: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
# Location and the circuit IDs or patch-panel positions of the management and production ports: &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
# Number and location of the racks (1 or 2): &amp;lt;mark&amp;gt;[FILL IN]&amp;lt;/mark&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HW requirements ===&lt;br /&gt;
===== Verify BOM for each rack: =====&lt;br /&gt;
* 1x Dell EMC S3048-ON with 2x AC PSU and PSU-&amp;gt;ports airflow&lt;br /&gt;
* 1x Dell EMC S4148T-ON with 2x AC PSU and PSU-&amp;gt;ports airflow (or alternative - see below)&lt;br /&gt;
* 4x power cords for the switches (PDU outlet type to C13)&lt;br /&gt;
&lt;br /&gt;
Alternatives for S4148T-ON (can be used when servers have SFP+ or SFP28 cages):&lt;br /&gt;
* 1x Dell EMC S4148F-ON with 2x AC PSU and PSU-&amp;gt;ports airflow&lt;br /&gt;
* 1x Dell EMC S5248F-ON with 2x AC PSU and PSU-&amp;gt;ports airflow&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Verify BOM for ICR: =====&lt;br /&gt;
* If management port is single-mode fiber:&lt;br /&gt;
* 1x management port fiber patch cord 9/125 LC/PC to patch-panel type connector&lt;br /&gt;
* 1x transceiver (SFP or SFP+) matching the management port required transceiver type (probably -LX or -LR)&lt;br /&gt;
&lt;br /&gt;
If production port is single-mode fiber:&lt;br /&gt;
* 1x production port fiber patch cord 9/125 LC/PC to patch-panel type connector&lt;br /&gt;
* 1x transceiver (SFP or SFP+ or QSFP+ or QSFP28) matching the production port required transceiver type&lt;br /&gt;
* 40G QSFP+ to 10G SFP+ Adapter Converter Module if switch is S4148T-ON and the transceiver is SFP or SFP+&lt;br /&gt;
&lt;br /&gt;
If management port is multi-mode fiber:&lt;br /&gt;
* 1x management port fiber patch cord 50/125 LC/PC to patch-panel type connector&lt;br /&gt;
* 1x transceiver (SFP or SFP+) matching the management port required transceiver type (probably -SX or -SR)&lt;br /&gt;
&lt;br /&gt;
If production port is multi-mode fiber:&lt;br /&gt;
* 1x production port fiber patch cord 50/125 LC/PC to patch-panel type connector&lt;br /&gt;
* 1x transceiver (SFP or SFP+ or QSFP+ or QSFP28) matching the production port required transceiver type if production port is fiber (probably -SX or -SR)&lt;br /&gt;
* 40G QSFP+ to 10G SFP+ Adapter Converter Module if switch is S4148T-ON and the transceiver is SFP or SFP+&lt;br /&gt;
&lt;br /&gt;
If management port is copper:&lt;br /&gt;
* 2m (7ft) Cat6 copper cable&lt;br /&gt;
&lt;br /&gt;
If production port is copper:&lt;br /&gt;
* 2m (7ft) Cat6 copper cable&lt;br /&gt;
* 40G QSFP+ to 10G SFP+ Adapter Converter Module if switch is S4148T-ON and the transceiver is SFP or SFP+&lt;br /&gt;
* 10GBASE-T SFP+ if production switch is Dell EMC S4148F-ON or Dell EMC S5248F-ON&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Verify BOM for 2-rack ICR: =====&lt;br /&gt;
If the DC rules allows running DAC or AOC cables between the racks and the position of the racks and the maximum length of the available AOC or DAC allows connecting the switches:&lt;br /&gt;
* 1x 100G QSFP28 AOC or DAC cable (matching the required length from one production switch to another - with neighboring racks it is usually 5m (16ft) )&lt;br /&gt;
* 2x Cat6 interconnects between the racks (matching the required length from one management switch to another and from RMU to the switch in the second rack, usually 5m (16ft))&lt;br /&gt;
&lt;br /&gt;
Otherwise:&lt;br /&gt;
* 2x single-mode (9/125) optical paths between the racks (four fibers or two pairs in total)&lt;br /&gt;
* 2x 100G QSFP28 -LR4, -LR or -CWDM4 transceivers&lt;br /&gt;
* 2x 9/125 2m (7ft) patch cords LC/PC to connector of the optical path termination&lt;br /&gt;
* 2x Cat6 interconnects between the racks&lt;br /&gt;
* 4x Cat6 2m (7ft) patch cables&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Marking ===&lt;br /&gt;
* (virtually) mark the rack with both management and production uplink Rack 1&lt;br /&gt;
* (virtually) mark the rack with no uplinks Rack 2 (if the rack exists)&lt;br /&gt;
* Mark the production switch in Rack 1: &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw02&lt;br /&gt;
* Mark the production switch in Rack 2: &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw04 (if the rack exists)&lt;br /&gt;
* Mark the management switch in the Rack 1: &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw01&lt;br /&gt;
* Mark the management switch in the Rack 2: &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02 (if the rack exists)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Rack and stack devices ===&lt;br /&gt;
Racking and stacking of devices is beyond the scope of this runbook.&lt;br /&gt;
&lt;br /&gt;
The site should include the following components:&lt;br /&gt;
* Rack 1&lt;br /&gt;
** &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw02&lt;br /&gt;
** &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw01&lt;br /&gt;
** RMU / jump-box&lt;br /&gt;
** 0-14x servers (IC nodes)&lt;br /&gt;
* Rack 2 (if present)&lt;br /&gt;
** &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw04&lt;br /&gt;
** &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02&lt;br /&gt;
** 0-14x servers (IC nodes)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cabling ===&lt;br /&gt;
===== Minimum required steps =====&lt;br /&gt;
* In each rack connect PSUs of each switch the PDUs using the power cords, select different power rails for PSU1 and PSU2&lt;br /&gt;
* In Rack 1 connect the production uplink ([carrier] Internet) to {site-ID}-sw02 port 25 using the selected transceiver and 40G QSFP+ to 10G SFP+ Adapter Converter Module if switch is S4148T-ON and the transceiver is SFP or SFP+&lt;br /&gt;
* In Rack 1 connect the management uplink to RMU/jump-box port wan (for jump-box TBD runbook)&lt;br /&gt;
* In Rack 1 connect Cat6 cable from RMU port management1 to {site-ID}-msw01 port 46&lt;br /&gt;
* In Rack 1 connect Cat6 cable from RMU port management2 to {site-ID}-msw01 management port&lt;br /&gt;
* In Rack 1 connect Cat6 cable from RMU port lan1 to {site-ID}-sw02 port 54&lt;br /&gt;
* In Rack 1 connect Cat6 cable from {site-ID}-sw02 management port to {site-ID}-msw01 port 47&lt;br /&gt;
&lt;br /&gt;
If Rack 2 is present:&lt;br /&gt;
* Connect AOC/DAC or fiber optical path with QSFP28 transceivers from Rack 1 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw02 port 30 to Rack 2 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw04 port 30&lt;br /&gt;
* Connect Cat6 cable from Rack 1 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-mw01 port 48 to Rack 2 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02 port 48&lt;br /&gt;
* Connect Cat6 cable from Rack 1 RMU port management3 to Rack 2 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02 management port&lt;br /&gt;
* Connect Cat6 cable from port &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02 port 47 to Rack 2 &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw04 management port&lt;br /&gt;
&lt;br /&gt;
===== Wiring diagram =====&lt;br /&gt;
[[File:2023-05-03 updated dfinity icr rack diagram.png.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
===== Servers =====&lt;br /&gt;
The exact cabling instructions for servers are not part of this runbook because the servers differ in the port type, number of ports and location of ports. High-level requirements for each server:&lt;br /&gt;
* Connect the BMC / IPMI / iLO port of the server to the management switch in the same rack (allocate ports from left to right, take the first free ports with the matching speed and port type)&lt;br /&gt;
* Connect the first 10G/25G port to the production switch in the same rack (allocate ports from left to right, take the first free ports with the matching speed and port type)&lt;br /&gt;
* Use Cat6 cables or PatchBox Cat6 modules for connecting the servers if 10GBASE-T is supported by the switch and the server or at least one side; use 10GBASE-T SFP+ transceivers to adapt switch or server side with SFP+ or SFP28 interfaces&lt;br /&gt;
* Use AOC or DAC cables in case both the switch and the server have SFP+ or SFP28 interfaces; select the matching speed and type of the cable for the interface and verify the vendor compatibility on switch side and also on server side&lt;br /&gt;
&lt;br /&gt;
===== Dell OS10 NOS install =====&lt;br /&gt;
Verify that Dell OS10 (version &amp;gt;=10.4) is installed on all switches.&lt;br /&gt;
* If no NOS is installed or older version is installed, use NOS installation guide:&lt;br /&gt;
https://www.dell.com/support/manuals/en-us/force10-s4048-on/ee-upgrade-downgrade/installing-smartfabric-os10?guid=guid-9bf59a6c-9be9-4abb-99cf-b2671091f3e0&amp;amp;lang=en-us&lt;br /&gt;
* It is suggested to install the OS10 from USB stick as described in the “Manual installation” section:&lt;br /&gt;
https://www.dell.com/support/manuals/en-us/smartfabric-os10-emp-partner/ee-upgrade-downgrade/manual-installation?guid=guid-d4a157a0-e1fc-4ad7-bb68-cd98fdcc0025&amp;amp;lang=en-us&lt;br /&gt;
* For upgrading OS10 see the instructions in ”Upgrading OS10 software” chapter:  https://www.dell.com/support/manuals/en-sg/smartfabric-os10-emp-partner/ee-upgrade-downgrade/upgrading-os10-software?guid=guid-29a7887c-d5ed-4896-9cc6-9dcd614c0aee&amp;amp;lang=en-us&lt;br /&gt;
&lt;br /&gt;
===== Dell OS10 switch minimum configuration =====&lt;br /&gt;
* All switches are active and can be connected right after the NOS installation. Further configuration is required to set user accounts, re-set default passwords and switch hardening.&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* Generate a password for admin user&lt;br /&gt;
* Generate a password for linuxadmin user&lt;br /&gt;
* (optional) Collect SSH key for admin user&lt;br /&gt;
* Prepare serial console connection to the switch (see “Log in to an OS10 switch” chapter: https://www.dell.com/support/manuals/en-sg/dell-emc-smartfabric-os10/ee-upgrade-downgrade/log-in-to-an-os10-switch?guid=guid-977e7f9f-3175-49b4-a0bc-5e8a15d8c424&amp;amp;lang=en-us ) or collect the IP address from DHCP server if the switch has been auto-installed&lt;br /&gt;
* Assign management network IP addresses (following example is based on 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.128/25 assignment - DFINITY-only address plan):&lt;br /&gt;
** 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.254 - RMU or jump-box acting as default GW&lt;br /&gt;
** 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.140 - &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw01&lt;br /&gt;
** 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.141 - &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-msw02&lt;br /&gt;
** 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.142 - &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw02&lt;br /&gt;
** 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.144 - &amp;lt;mark&amp;gt;{site-ID}&amp;lt;/mark&amp;gt;-sw04&lt;br /&gt;
&lt;br /&gt;
Procedure:&lt;br /&gt;
* Connect to the switch using the serial console and screen &amp;lt;mark&amp;gt;{switch tty device - i.e. /dev/ttyUSB0}&amp;lt;/mark&amp;gt; 115200 (Linux) or PuTTY (Windows)&lt;br /&gt;
* Enter configuration mode:&lt;br /&gt;
 &amp;lt;mark&amp;gt;{site-ID}-{switch name}&amp;lt;/mark&amp;gt;# configure terminal&lt;br /&gt;
 &amp;lt;mark&amp;gt;{site-ID}-{switch name}&amp;lt;/mark&amp;gt;(config)#&lt;br /&gt;
Clear interface mgm1/1/1:&lt;br /&gt;
 interface mgmt1/1/1&lt;br /&gt;
 shutdown&lt;br /&gt;
 no ip address dhcp&lt;br /&gt;
 no ipv6 address autoconfig&lt;br /&gt;
Configure management VRF and the management interface&lt;br /&gt;
 ip vrf management&lt;br /&gt;
 interface management&lt;br /&gt;
 !&lt;br /&gt;
 interface mgmt1/1/1&lt;br /&gt;
 no shutdown&lt;br /&gt;
 no ip address dhcp&lt;br /&gt;
 ip address {switch IP address - 10.10.&amp;lt;mark&amp;gt;X.Y&amp;lt;/mark&amp;gt;/25}&lt;br /&gt;
 ipv6 address autoconfig&lt;br /&gt;
 !&lt;br /&gt;
 management route 0.0.0.0/0 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.254&lt;br /&gt;
Configure users and basic configuration&lt;br /&gt;
 ip http vrf management&lt;br /&gt;
 default mtu 9216&lt;br /&gt;
 hostname &amp;lt;mark&amp;gt;{site-ID}-{switch name}&amp;lt;/mark&amp;gt;&lt;br /&gt;
 system-user linuxadmin password &amp;lt;mark&amp;gt;{linuxadmin password}&amp;lt;/mark&amp;gt;&lt;br /&gt;
 ip name-server vrf management 1.1.1.1&lt;br /&gt;
 username admin password &amp;lt;mark&amp;gt;{admin password}&amp;lt;/mark&amp;gt; role sysadmin priv-lvl 15&lt;br /&gt;
 username admin sshkey &amp;quot;&amp;lt;mark&amp;gt;{admin SSH key}&amp;lt;/mark&amp;gt;&amp;quot;&lt;br /&gt;
 snmp-server community public ro &lt;br /&gt;
 snmp-server contact &amp;quot;Contact Support&amp;quot;&lt;br /&gt;
 ntp server pool.ntp.org&lt;br /&gt;
 ntp source mgmt1/1/1&lt;br /&gt;
 ntp enable vrf management&lt;br /&gt;
&lt;br /&gt;
=== Tests ===&lt;br /&gt;
* Ping from RMU / jump-box to the switch management interfaces:&lt;br /&gt;
 ping -c4 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.140&lt;br /&gt;
 ping -c4 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.141 (if installed)&lt;br /&gt;
 ping -c4 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.142&lt;br /&gt;
 ping -c4 10.10.&amp;lt;mark&amp;gt;X&amp;lt;/mark&amp;gt;.144 (if installed)&lt;br /&gt;
* Test server BMC and IPv6 connectivity&lt;br /&gt;
** Deploy at least one server in each rack, collect BMC IP address in the management network and the server IP in production network&lt;br /&gt;
** Ping the collected server IPs from RMU / jump-box&lt;br /&gt;
&lt;br /&gt;
=== Dell OS10 operation recommendations ===&lt;br /&gt;
The details of Dell OS10-based switch operation is beyond the scope of this runbook. The ultimate responsibility for the network connection availability, quality and security lies with the node provider. The qualitative parameters depend among others also on the switching fabric performance and health. Therefore it is strongly recommended to implement the following steps:&lt;br /&gt;
&lt;br /&gt;
** Overall health of all switches should be watched - PSU, fan and memory and CPU load (SNMP-based monitoring or gRPC Streaming Telemetry)&lt;br /&gt;
** Port load of all switches should be watched (using gRPC Streaming Telemetry)&lt;br /&gt;
** New versions of OS10, new known issues and security advisories should be periodically (once a month) evaluated and upgrades should be scheduled when there is a relevant issue or enhancement in the newly available version&lt;br /&gt;
** The HW lifetime upgrade path should be followed according to the vendor’s recommendations&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>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=File:2023-05-03_updated_dfinity_icr_rack_diagram.png.png&amp;diff=5290</id>
		<title>File:2023-05-03 updated dfinity icr rack diagram.png.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=File:2023-05-03_updated_dfinity_icr_rack_diagram.png.png&amp;diff=5290"/>
		<updated>2023-05-03T17:31:17Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;2023-05-03_updated_dfinity_icr_rack_diagram.png&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=4682</id>
		<title>Node Deployment Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=4682"/>
		<updated>2023-03-17T18:08:28Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 3. Create Bootable USB Stick */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS) on [[Node_provider_hardware#Gen_2|Gen-2 hardware]]. Gen-1 hardware Node Providers should use the [[Internet Computer wiki#For Node Providers|Gen-1 runbooks]].&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to the respective manual.&lt;br /&gt;
&lt;br /&gt;
In case you encounter any issues during the installation process, check the [[Possible Node Onboarding Errors]] page. Otherwise contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association]&lt;br /&gt;
&lt;br /&gt;
Many thanks for your efforts in building the Internet Computer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A USB (3.0 speed that can hold at least 4GB) to put the image file on (Faster USBs will allow the process to go much faster.)&lt;br /&gt;
* The Nitrokey HSM for your data center. &lt;br /&gt;
* [Optional] A USB hub&lt;br /&gt;
** This is helpful at some data centers for simultaneously connecting keyboard, mouse, Nitrokey, etc.. &lt;br /&gt;
&lt;br /&gt;
== 1. Download installation image ==&lt;br /&gt;
&lt;br /&gt;
# Download the IC-OS USB installer image here. &#039;&#039;&#039;This link will always provide the current blessed version. Do NOT use an old USB image.&#039;&#039;&#039;: &amp;lt;br&amp;gt; https://download.dfinity.systems/ic/efeb38b3bfa1133383e293a65ccce29263318ef0/setup-os/disk-img/disk-img.tar.gz&amp;lt;br&amp;gt;&lt;br /&gt;
# Download the corresponding checksum here:&amp;lt;br&amp;gt; https://download.dfinity.systems/ic/efeb38b3bfa1133383e293a65ccce29263318ef0/setup-os/disk-img/SHA256SUMS&lt;br /&gt;
&lt;br /&gt;
== 2. Verify checksum and unarchive file ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
* Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
*  Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Create Bootable USB Stick ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/disk4s1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# The file path is an example. Use the absolute path to the downloaded image. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong device. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick. You may need to unmount the USB drive:&lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo diskutil unmount /dev/YOUR_USB_DEVICE_MOUNTED_PARTITION # E.g. /dev/sdb1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive. &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=~/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
# Start Rufus &lt;br /&gt;
# Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#: [[File:05.png|480px|screenshot]]&lt;br /&gt;
# You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#: [[File:06.png|480px|screenshot]]&lt;br /&gt;
#: [[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
== 4. Add configuration ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in TextEdit.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:mac_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#: [[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
# Right click the CONFIG partition &lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#: [[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#: [[File:11-b.png|480px|screenshot]]&lt;br /&gt;
# Click OK.&lt;br /&gt;
# You should now be able to see the CONFIG partition in your Windows Explorer. Select the config.ini configuration file &lt;br /&gt;
#: [[File:12-b.png|780px|screenshot]]&lt;br /&gt;
# Click on Edit to open it.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:13-b.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:14-b.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
# Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in KWrite.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:linux_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:linux_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 5. Connect Crash Cart ==&lt;br /&gt;
# In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine. &lt;br /&gt;
# Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#: [[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 6. UEFI Setup and Boot Menu ==&lt;br /&gt;
&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Dell]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Supermicro]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* * [[IC OS Installation - UEFI Configuration - ASUS]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Gigabyte]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - HPE]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished.&lt;br /&gt;
&lt;br /&gt;
== 7. IC-OS Installation ==&lt;br /&gt;
# Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#: [[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
# The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 8 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#: [[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you get asked to insert the HSM, please remove the keyboard and instead insert the HSM USB device. &lt;br /&gt;
#: [[File:37-sm.png|580px|screenshot]]&lt;br /&gt;
# If the installation finished successfully, it will initiate a reboot. &#039;&#039;&#039;Please do not unplug the USB stick or HSM USB&#039;&#039;&#039; device at this point.&lt;br /&gt;
#: [[File:38-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. First Boot ==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
&#039;&#039;&#039;Do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039;&lt;br /&gt;
# The first boot of the IC-OS still requires the HSM USB device. Please wait until further instructions. This step can take up to 2 minutes.&lt;br /&gt;
#: [[File:39-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you see this message, you may unplug the HSM USB device, USB stick and VGA/Video. Your machine successfully joined the Internet Computer.&lt;br /&gt;
#: [[File:40-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Onboarding|Return to the Onboarding Document]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=4681</id>
		<title>Node Deployment Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=4681"/>
		<updated>2023-03-17T16:04:50Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 3. Create Bootable USB Stick */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS) on [[Node_provider_hardware#Gen_2|Gen-2 hardware]]. Gen-1 hardware Node Providers should use the [[Internet Computer wiki#For Node Providers|Gen-1 runbooks]].&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to the respective manual.&lt;br /&gt;
&lt;br /&gt;
In case you encounter any issues during the installation process, check the [[Possible Node Onboarding Errors]] page. Otherwise contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association]&lt;br /&gt;
&lt;br /&gt;
Many thanks for your efforts in building the Internet Computer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A USB (3.0 speed that can hold at least 4GB) to put the image file on (Faster USBs will allow the process to go much faster.)&lt;br /&gt;
* The Nitrokey HSM for your data center. &lt;br /&gt;
* [Optional] A USB hub&lt;br /&gt;
** This is helpful at some data centers for simultaneously connecting keyboard, mouse, Nitrokey, etc.. &lt;br /&gt;
&lt;br /&gt;
== 1. Download installation image ==&lt;br /&gt;
&lt;br /&gt;
# Download the IC-OS USB installer image here. &#039;&#039;&#039;This link will always provide the current blessed version. Do NOT use an old USB image.&#039;&#039;&#039;: &amp;lt;br&amp;gt; https://download.dfinity.systems/ic/efeb38b3bfa1133383e293a65ccce29263318ef0/setup-os/disk-img/disk-img.tar.gz&amp;lt;br&amp;gt;&lt;br /&gt;
# Download the corresponding checksum here:&amp;lt;br&amp;gt; https://download.dfinity.systems/ic/efeb38b3bfa1133383e293a65ccce29263318ef0/setup-os/disk-img/SHA256SUMS&lt;br /&gt;
&lt;br /&gt;
== 2. Verify checksum and unarchive file ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
* Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
*  Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Create Bootable USB Stick ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick.&lt;br /&gt;
# The following command is an example. Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. Replace &#039;&#039;YOUR_USER_NAME&#039;&#039; accordingly or with the whole path to the downloaded image. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong device. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick.&lt;br /&gt;
# For this next command, replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive. &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=~/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
# Start Rufus &lt;br /&gt;
# Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#: [[File:05.png|480px|screenshot]]&lt;br /&gt;
# You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#: [[File:06.png|480px|screenshot]]&lt;br /&gt;
#: [[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
== 4. Add configuration ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in TextEdit.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:mac_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#: [[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
# Right click the CONFIG partition &lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#: [[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#: [[File:11-b.png|480px|screenshot]]&lt;br /&gt;
# Click OK.&lt;br /&gt;
# You should now be able to see the CONFIG partition in your Windows Explorer. Select the config.ini configuration file &lt;br /&gt;
#: [[File:12-b.png|780px|screenshot]]&lt;br /&gt;
# Click on Edit to open it.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:13-b.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:14-b.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
# Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in KWrite.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:linux_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:linux_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 5. Connect Crash Cart ==&lt;br /&gt;
# In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine. &lt;br /&gt;
# Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#: [[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 6. UEFI Setup and Boot Menu ==&lt;br /&gt;
&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Dell]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Supermicro]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* * [[IC OS Installation - UEFI Configuration - ASUS]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Gigabyte]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - HPE]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished.&lt;br /&gt;
&lt;br /&gt;
== 7. IC-OS Installation ==&lt;br /&gt;
# Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#: [[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
# The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 8 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#: [[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you get asked to insert the HSM, please remove the keyboard and instead insert the HSM USB device. &lt;br /&gt;
#: [[File:37-sm.png|580px|screenshot]]&lt;br /&gt;
# If the installation finished successfully, it will initiate a reboot. &#039;&#039;&#039;Please do not unplug the USB stick or HSM USB&#039;&#039;&#039; device at this point.&lt;br /&gt;
#: [[File:38-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. First Boot ==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
&#039;&#039;&#039;Do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039;&lt;br /&gt;
# The first boot of the IC-OS still requires the HSM USB device. Please wait until further instructions. This step can take up to 2 minutes.&lt;br /&gt;
#: [[File:39-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you see this message, you may unplug the HSM USB device, USB stick and VGA/Video. Your machine successfully joined the Internet Computer.&lt;br /&gt;
#: [[File:40-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Onboarding|Return to the Onboarding Document]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=4680</id>
		<title>Node Deployment Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=4680"/>
		<updated>2023-03-17T16:04:37Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 3. Create Bootable USB Stick */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS) on [[Node_provider_hardware#Gen_2|Gen-2 hardware]]. Gen-1 hardware Node Providers should use the [[Internet Computer wiki#For Node Providers|Gen-1 runbooks]].&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to the respective manual.&lt;br /&gt;
&lt;br /&gt;
In case you encounter any issues during the installation process, check the [[Possible Node Onboarding Errors]] page. Otherwise contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association]&lt;br /&gt;
&lt;br /&gt;
Many thanks for your efforts in building the Internet Computer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A USB (3.0 speed that can hold at least 4GB) to put the image file on (Faster USBs will allow the process to go much faster.)&lt;br /&gt;
* The Nitrokey HSM for your data center. &lt;br /&gt;
* [Optional] A USB hub&lt;br /&gt;
** This is helpful at some data centers for simultaneously connecting keyboard, mouse, Nitrokey, etc.. &lt;br /&gt;
&lt;br /&gt;
== 1. Download installation image ==&lt;br /&gt;
&lt;br /&gt;
# Download the IC-OS USB installer image here. &#039;&#039;&#039;This link will always provide the current blessed version. Do NOT use an old USB image.&#039;&#039;&#039;: &amp;lt;br&amp;gt; https://download.dfinity.systems/ic/efeb38b3bfa1133383e293a65ccce29263318ef0/setup-os/disk-img/disk-img.tar.gz&amp;lt;br&amp;gt;&lt;br /&gt;
# Download the corresponding checksum here:&amp;lt;br&amp;gt; https://download.dfinity.systems/ic/efeb38b3bfa1133383e293a65ccce29263318ef0/setup-os/disk-img/SHA256SUMS&lt;br /&gt;
&lt;br /&gt;
== 2. Verify checksum and unarchive file ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
* Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
*  Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Create Bootable USB Stick ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick.&lt;br /&gt;
# The following command is an example. Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. Replace &#039;&#039;YOUR_USER_NAME&#039;&#039; accordingly or with the path to the downloaded image. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong device. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick.&lt;br /&gt;
# For this next command, replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive. &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=~/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
# Start Rufus &lt;br /&gt;
# Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#: [[File:05.png|480px|screenshot]]&lt;br /&gt;
# You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#: [[File:06.png|480px|screenshot]]&lt;br /&gt;
#: [[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
== 4. Add configuration ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in TextEdit.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:mac_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#: [[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
# Right click the CONFIG partition &lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#: [[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#: [[File:11-b.png|480px|screenshot]]&lt;br /&gt;
# Click OK.&lt;br /&gt;
# You should now be able to see the CONFIG partition in your Windows Explorer. Select the config.ini configuration file &lt;br /&gt;
#: [[File:12-b.png|780px|screenshot]]&lt;br /&gt;
# Click on Edit to open it.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:13-b.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:14-b.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
# Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in KWrite.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:linux_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:linux_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 5. Connect Crash Cart ==&lt;br /&gt;
# In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine. &lt;br /&gt;
# Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#: [[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 6. UEFI Setup and Boot Menu ==&lt;br /&gt;
&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Dell]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Supermicro]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* * [[IC OS Installation - UEFI Configuration - ASUS]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Gigabyte]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - HPE]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished.&lt;br /&gt;
&lt;br /&gt;
== 7. IC-OS Installation ==&lt;br /&gt;
# Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#: [[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
# The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 8 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#: [[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you get asked to insert the HSM, please remove the keyboard and instead insert the HSM USB device. &lt;br /&gt;
#: [[File:37-sm.png|580px|screenshot]]&lt;br /&gt;
# If the installation finished successfully, it will initiate a reboot. &#039;&#039;&#039;Please do not unplug the USB stick or HSM USB&#039;&#039;&#039; device at this point.&lt;br /&gt;
#: [[File:38-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. First Boot ==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
&#039;&#039;&#039;Do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039;&lt;br /&gt;
# The first boot of the IC-OS still requires the HSM USB device. Please wait until further instructions. This step can take up to 2 minutes.&lt;br /&gt;
#: [[File:39-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you see this message, you may unplug the HSM USB device, USB stick and VGA/Video. Your machine successfully joined the Internet Computer.&lt;br /&gt;
#: [[File:40-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Onboarding|Return to the Onboarding Document]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
	<entry>
		<id>https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=4679</id>
		<title>Node Deployment Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.internetcomputer.org/w/index.php?title=Node_Deployment_Guide&amp;diff=4679"/>
		<updated>2023-03-17T16:04:18Z</updated>

		<summary type="html">&lt;p&gt;Gary.mcelroy: /* 3. Create Bootable USB Stick */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This runbook covers all steps necessary to install the Internet Computer Operating System (IC-OS) on [[Node_provider_hardware#Gen_2|Gen-2 hardware]]. Gen-1 hardware Node Providers should use the [[Internet Computer wiki#For Node Providers|Gen-1 runbooks]].&lt;br /&gt;
&lt;br /&gt;
The physical machine is expected to be racked and stacked according to the respective manual.&lt;br /&gt;
&lt;br /&gt;
In case you encounter any issues during the installation process, check the [[Possible Node Onboarding Errors]] page. Otherwise contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association]&lt;br /&gt;
&lt;br /&gt;
Many thanks for your efforts in building the Internet Computer.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* A USB (3.0 speed that can hold at least 4GB) to put the image file on (Faster USBs will allow the process to go much faster.)&lt;br /&gt;
* The Nitrokey HSM for your data center. &lt;br /&gt;
* [Optional] A USB hub&lt;br /&gt;
** This is helpful at some data centers for simultaneously connecting keyboard, mouse, Nitrokey, etc.. &lt;br /&gt;
&lt;br /&gt;
== 1. Download installation image ==&lt;br /&gt;
&lt;br /&gt;
# Download the IC-OS USB installer image here. &#039;&#039;&#039;This link will always provide the current blessed version. Do NOT use an old USB image.&#039;&#039;&#039;: &amp;lt;br&amp;gt; https://download.dfinity.systems/ic/efeb38b3bfa1133383e293a65ccce29263318ef0/setup-os/disk-img/disk-img.tar.gz&amp;lt;br&amp;gt;&lt;br /&gt;
# Download the corresponding checksum here:&amp;lt;br&amp;gt; https://download.dfinity.systems/ic/efeb38b3bfa1133383e293a65ccce29263318ef0/setup-os/disk-img/SHA256SUMS&lt;br /&gt;
&lt;br /&gt;
== 2. Verify checksum and unarchive file ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;shasum -a 256 ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sha256sum ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
* Open the Terminal and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf ~/Downloads/disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
* Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;Get-FileHash -Algorithm SHA256 .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* Compare the calculated checksum with the file downloaded in the previous step. &#039;&#039;&#039;Warning:&#039;&#039;&#039; Only continue if they are identical, otherwise please contact the  [https://support.internetcomputer.org/hc/en-us Internet Computer Association].&lt;br /&gt;
*  Open PowerShell and type: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;tar xzvf .\Downloads\disk-img.tar.gz&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Create Bootable USB Stick ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open the Terminal and type: &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;diskutil list&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick.&lt;br /&gt;
# The following command is an example. Replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. Replace &#039;&#039;YOUR_USER_NAME&#039;&#039; accordingly or with the path you downloaded the image to. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong device. &lt;br /&gt;
#:&amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=/Users/YOUR_USER_NAME/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Linux / Ubuntu ===&lt;br /&gt;
# Open the Terminal and type &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;blkid&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# All available drives should be shown. Identify which device corresponds to your USB stick.&lt;br /&gt;
# For this next command, replace &#039;&#039;/dev/YOUR_USB_DEVICE&#039;&#039; with the device that corresponds to your USB stick. &#039;&#039;&#039;Warning:&#039;&#039;&#039; You risk losing your own data if you specify a wrong drive. &lt;br /&gt;
#: &amp;lt;syntaxhighlight lang=&amp;quot;shell&amp;quot;&amp;gt;sudo dd if=~/Downloads/disk.img of=/dev/YOUR_USB_DEVICE bs=1M&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Download and install [https://rufus.ie/en/ Rufus Portable]&lt;br /&gt;
# Start Rufus &lt;br /&gt;
# Select the USB stick under device and select the previously downloaded IC-OS disk image and press start &lt;br /&gt;
#: [[File:05.png|480px|screenshot]]&lt;br /&gt;
# You may see some warnings. Make sure you don&#039;t have any other USBs in your computer and chose OK&lt;br /&gt;
#: [[File:06.png|480px|screenshot]]&lt;br /&gt;
#: [[File:07.png|480px|screenshot]]&lt;br /&gt;
# The &amp;quot;Ready&amp;quot; bar will go from left to right as it completes.&lt;br /&gt;
&lt;br /&gt;
== 4. Add configuration ==&lt;br /&gt;
=== Mac OS X ===&lt;br /&gt;
# Open Finder. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:mac_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in TextEdit.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:mac_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:mac_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
# Open the Disk Management utility with a right click on the Start menu &lt;br /&gt;
#: [[File:09-b.png|300px|screenshot]]#:&lt;br /&gt;
# Right click the CONFIG partition &lt;br /&gt;
# Select Change drive letter or paths...&lt;br /&gt;
#: [[File:10-b.png|780px|screenshot]]&lt;br /&gt;
# Select any letter from the drop-down list &lt;br /&gt;
#: [[File:11-b.png|480px|screenshot]]&lt;br /&gt;
# Click OK.&lt;br /&gt;
# You should now be able to see the CONFIG partition in your Windows Explorer. Select the config.ini configuration file &lt;br /&gt;
#: [[File:12-b.png|780px|screenshot]]&lt;br /&gt;
# Click on Edit to open it.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:13-b.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:14-b.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
# Open the File Manager. You should now be able to see the CONFIG partition. If it&#039;s not visible, remove the USB and insert it again.&lt;br /&gt;
#: [[File:linux_01.png|580px|screenshot]]&lt;br /&gt;
# Double-click to open it in KWrite.&lt;br /&gt;
# Insert your IPv6 prefix, subnet and gateway. &lt;br /&gt;
#: [[File:linux_02.png|580px|screenshot]]&lt;br /&gt;
# Once done, don’t forget to save the changes. If you need help, please do not hesitate to contact the Internet Computer Association.&lt;br /&gt;
#: [[File:linux_03.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 5. Connect Crash Cart ==&lt;br /&gt;
# In order to configure the UEFI and initiate the installation of the IC-OS, please connect a crash cart to the physical machine. &lt;br /&gt;
# Plug-in the VGA/Video, keyboard and IC-OS USB stick&lt;br /&gt;
#: [[File:08.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
== 6. UEFI Setup and Boot Menu ==&lt;br /&gt;
&lt;br /&gt;
Use the related page below to set up the BIOS/UEFI according to your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Dell]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Supermicro]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* * [[IC OS Installation - UEFI Configuration - ASUS]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - Gigabyte]]&lt;br /&gt;
* [[IC OS Installation - UEFI Configuration - HPE]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resume from this point when you are finished.&lt;br /&gt;
&lt;br /&gt;
== 7. IC-OS Installation ==&lt;br /&gt;
# Please wait while the USB Installer is booting up. This process can take up to 3 minutes.&lt;br /&gt;
#: [[File:35-sm.png|580px|screenshot]]&lt;br /&gt;
# The IC-OS installation starts. Please keep an eye on the progress. This part can take up to 8 minutes. Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors.&lt;br /&gt;
#: [[File:36-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you get asked to insert the HSM, please remove the keyboard and instead insert the HSM USB device. &lt;br /&gt;
#: [[File:37-sm.png|580px|screenshot]]&lt;br /&gt;
# If the installation finished successfully, it will initiate a reboot. &#039;&#039;&#039;Please do not unplug the USB stick or HSM USB&#039;&#039;&#039; device at this point.&lt;br /&gt;
#: [[File:38-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8. First Boot ==&lt;br /&gt;
Please remember to check the [[Possible Node Onboarding Errors]] page if you encounter any errors onboarding.&lt;br /&gt;
&#039;&#039;&#039;Do NOT re-try the onboarding after proceeding to this section, as this can cause duplication within the registry.&#039;&#039;&#039;&lt;br /&gt;
# The first boot of the IC-OS still requires the HSM USB device. Please wait until further instructions. This step can take up to 2 minutes.&lt;br /&gt;
#: [[File:39-sm.png|580px|screenshot]]&lt;br /&gt;
# Once you see this message, you may unplug the HSM USB device, USB stick and VGA/Video. Your machine successfully joined the Internet Computer.&lt;br /&gt;
#: [[File:40-sm.png|580px|screenshot]]&lt;br /&gt;
&lt;br /&gt;
[[Node Provider Onboarding|Return to the Onboarding Document]]&lt;/div&gt;</summary>
		<author><name>Gary.mcelroy</name></author>
	</entry>
</feed>