# Migrate an IntegrationNet Node to MainNet

## Table of Contents

| Sections                                                  |
| --------------------------------------------------------- |
| [Prepare Node](#prepare-node)                             |
| [Migrate Node](#migrate-node)                             |
| [Optional Post Migration](#optional-post-migration-steps) |

***

## :sparkles:Prepare Node

{% stepper %}
{% step %}

### Validate VPS Specifications

Ensure your VPS meets the minimum specifications for a **MainNet Hybrid node**.

IntegrationNet nodes often already meet these specs, but this is a good time to confirm before migrating.

### [<kbd>Node Specifications</kbd>](/run-a-node/validator-node-guides/build-your-node/node-specifications.md)&#x20;

{% endstep %}

{% step %}

### SSH Into Your VPS

[Connect to your node via SSH](/run-a-node/references/ssh-remote-access/how-to-ssh-into-vps.md):

```bash
ssh -i /path/to/ssh/private/key nodeadmin@<vps_ip_address>
```

{% endstep %}

{% step %}

### Document Your Current `.p12` Details

Run the following command to retrieve current `.p12` configuration details:

```bash
sudo nodectl view_config --section global_p12
```

{% hint style="warning" %}
🔐 **Important:**&#x20;

If your passphrase is encrypted, it will not be visible. Ensure you have the passphrase securely stored before proceeding.
{% endhint %}
{% endstep %}

{% step %}

### Check Auto Restart Status

```bash
sudo nodectl auto_restart status
```

* If you see `SERVICE PROCESS FOUND (PID)`, continue to the next step.
* If `disabled`, skip to **Update OS Packages** step.
  {% endstep %}

{% step %}

### Disable Auto Restart

```bash
sudo nodectl configure -e -cb -d
```

* Choose `r` → Disable all three options:
  * `auto_restart`
  * `auto_upgrade`
  * `on boot`
* Choose `q` to exit.
  {% endstep %}

{% step %}

### Upgrade VPS - OS Packages

```bash
sudo nodectl upgrade_vps
```

If you encounter a <mark style="color:purple;">purple</mark> TUI (text interface), use **Tab** to move between options and **Enter** to accept defaults.
{% endstep %}

{% step %}

### Reboot VPS

Whether you are requested to reboot after the completion of the upgrade or not, it is a good idea to give your VPS a warm boot ( restart ) to obtain a fresh starting point.

```bash
sudo nodectl reboot
```

Answer <kbd>**y**</kbd> if asked to leave clusters. Wait one minute, then SSH back into the node.
{% endstep %}

{% step %}

### Validate Latest nodectl Version

```bash
sudo nodectl check_versions
```

If you obtain a `True` you should skip the `upgrade_nodectl` step.

```
NODECTL VERSION MATCH: True
```

If you obtain a `False` you should upgrade nodectl.
{% endstep %}

{% step %}

### Upgrade nodectl

```bash
sudo nodectl upgrade_nodectl
```

### [<kbd>Upgrade nodectl Version</kbd>](/run-a-node/validator-node-guides/operational-guides/upgrade-nodectl-version.md)&#x20;

* If prompted to **migrate your node configuration**, select:
  * **`y`** to confirm migration
  * **`n`** if asked to upgrade `nodectl` again immediately after migration
    {% endstep %}

{% step %}

### Leave and Stop IntegrationNet Cluster

```
sudo nodectl stop -p intnet-l0 --leave
sudo nodectl stop -p intnet-l1 --leave
```

{% endstep %}
{% endstepper %}

***

## :deer:Migrate Node

{% stepper %}
{% step %}

### Enter Configurator

```bash
sudo nodectl configure -n -cb -d
```

{% endstep %}

{% step %}

### Choose Scenario 3

* Press `3` to select **Scenario 3**
* Read the warning → press any key to continue
* If prompted to stop profiles → choose `n`
  {% endstep %}

{% step %}

### Select Predefined Configuration

Choose `1` for **MainNet (Hypergraph)**
{% endstep %}

{% step %}

### Set Global `.p12` Details

* Set all profiles to global: `y`
* Preserve global `.p12` details: `y`
  {% endstep %}

{% step %}

### Clean Up Old Configuration

* Remove old profiles: `y`
* Remove old service files: `y`

{% hint style="success" %}
:construction\_site: The nodectl utility will automatically build your new service files for you.
{% endhint %}
{% endstep %}

{% step %}

### Review Config (Optional)

* You may choose to skip reviewing: `n`

Press `q` to return to the terminal.
{% endstep %}

{% step %}

### Collateralize Your Node

Follow the official **collateralization guide** to complete the staking process.\
Once complete, return to this guide.

### &#x20;[<kbd>Collateralize Your Node</kbd>](#step-20-collateralize-your-node)&#x20;

{% endstep %}

{% step %}

### Starchiver

Optionally, you may utiltize the community owned and maintained [Starchiver Utility](https://github.com/StardustCollective/Starchive-Extractor).

```bash
sudo nodectl execute_starchiver -p dag-l0 --restart
```

{% endstep %}

{% step %}

### Upgrade You Node

Perform a full upgrade to make sure everything if properly setup and configured.

For an `interactive` experience, ommit the `--ni` .

```
sudo nodectl upgrade --ni
```

{% endstep %}
{% endstepper %}

***

### :radio\_button: Optional Post Migration Steps

{% content-ref url="/pages/oHwJup5GgsducGdQp3LQ" %}
[Enable Auto Restart](/run-a-node/validator-node-guides/enable-auto-restart.md)
{% endcontent-ref %}

{% content-ref url="/pages/tXikAINIYVssYPQLgBKb" %}
[Delegated Staking](/run-a-node/validator-node-guides/delegated-staking.md)
{% endcontent-ref %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.constellationnetwork.io/run-a-node/mainnet/migrate-an-integrationnet-node-to-mainnet.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
