# 在一台VPS上设置多个主节点

## 1.  获取支持IPv6的VPS服务器

您需要支持IPv6的VPS服务器才能在其上运行多个主节点。你可以从任意VPS提供商处获取。下面列出了一些：

* [Aruba](https://www.arubacloud.com/)
* [DigitalOcean](https://www.digitalocean.com/)
* [Hetzner](https://www.hetzner.de/)
* [Vultr](https://www.vultr.com)

选择具有以下规格的VPS服务器：

* 至少**1 GB的内存**
* 操作系统为**Ubuntu 16.04 LTS**
* **IPv6支持**（有的提供商默认提供，有的您必须另行选择）

为默认的“root”用户设置一个**强密码**（24个字符或更多）并保存。

选择VPS服务器的名称。&#x20;

服务商提供不同地区部署的VPS - 选择您喜欢的地区。这应该需要几分钟。

**保存VPS服务器的IP地址。**

另一个重要步骤是**找出您的服务器分配的IPv6地址**。 VPS提供商会为你分配一系列的IPv6地址。

您只需要保存第一个IPv6地址，因为我们将使用连续的地址。

IPv6地址如下所示：

```
2a00:6d40:0040:5C0b:0000:0000:0000:0001
```

连续的IPv6地址如下所示：

```
2a00:6d40:0040:5C0b:0000:0000:0000:0002
2a00:6d40:0040:5C0b:0000:0000:0000:0003
etc.
```

## 2. 登录和系统设置

下载[PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)，即我们将用来访问VPS的SSH客户端。选择适合您操作系统的版本（64位或32位）。

安装PuTTY并运行它。

您会看到这个屏幕：<br>

![](/files/-LXrqpBHvrhBuWqDhTVB)

&#x5728;*“Host name (or IP address)”*（主机名称\[或IP地址]）框中输入您的**VPS IP地址**。

保持其他设置不变，&#x5728;*“Saved Sessions”*（保存的会话）框中输入您的会话名称，然后单&#x51FB;*“Save”*（保存）。您的VPS信息将保存，之后，您只需要双击会话名称即可连接到您的VPS。

通过单&#x51FB;*“Open”*（打开）或双击列表中的会话名称**连接到您的VPS**。当您第一次连接时，PuTTY会显示一个警告窗口：<br>

![](/files/-LXtU4kznUgL-QY5QhnS)

单&#x51FB;*“Yes”*（是）继续连接，且让此窗口以后不显示。&#x20;

您你将看到要求您登录的PuTTY终端屏幕：

![](/files/-LXrqpBOSAJGOPLH-0Oa)

输入您的VPS用户名“root”，然后按回车键。之后系统会要求您输入密码。输入密码并再次按回车键。您现在将看到与此类似的屏幕：

![](/files/-LXrqpBQGkl5pXoZuBIR)

**更新VPS服务器**：您的VPS需要更新。您可以使用以下命令运行它：

```
apt-get update -y && apt-get upgrade -y
```

{% hint style="info" %}
您可以通过**右键**将命令**粘贴**到PuTTY终端窗口中。只需将光标放在要粘贴文本的位置，然后点击鼠标右键即可。

您也可以使用鼠标从PuTTy终端**选择文字**，进行**复制**。
{% endhint %}

等待更新过程完成，您将返回到命令提示符：

![](/files/-LXrqpBV_mYPoUDYfQcO)

## 3. 为您的主节点设置网络

{% hint style="warning" %}
某些VPS提供商允许您通过一个控制面板配置IPv6地址，因此不需要执行此步骤，你可以跳到**第4部分 - Nodemaster脚本安装**。

只需确保为您的主节点配置足够多的IPv6地址！
{% endhint %}

{% hint style="warning" %}
有的VPS提供商没有完全自动的IPv6配置，但允许您在VPS配置过程中启用IPv6。在这种情况下，interfaces文件中的第一个IPv6地址已经配置好，因此您需要在下面的配置过程中跳过第一个IPv6地址，然后添加缺少的地址。
{% endhint %}

现在开始**为您的主节点设置网络**。我们将使用Linux内置的文本编辑器Nano来完成这项工作。

输入以下内容：

```
nano /etc/network/interfaces
```

Nano将打开包含网络配置的interfaces文件：

![](/files/-LXrzzD5iudcTA9TsDbA)

现在您要决定要运行多少个主节点，因为您必须为它们配置足够多的IPv6地址。

需要先前VPS提供商分配给您的IPv6地址，即我之前让您保存的地址。

将以下文本复制到文本编辑器中（记事本即可），并**将“YourIPv6address”部分替换为您的IPv6地址**：

```
up ip addr add YourIPv6address/64 dev eth0
```

现在看起来应该类似于：

```
up ip addr add 2a01:6e60:0010:23fd:0000:0000:0000:0001/64 dev eth0
```

将包含IPv6地址的文本复制到剪贴板中。

现在切换到PuTTY并将光标移动到文字末尾的下一行。

确保它位于这行的开头，然后通过右键单击粘贴文本。按回车键进入下一行并再次粘贴文本。根据需要重复多次。

现在您的终端屏幕应该与此类似：

![](/files/-LXsIvTk9-ru2IxQpcQp)

请注意，此VPS提供商没有提供任何自动配置IPv6地址，因此我必须自己配置它们。

要退出Nano，请按CTRL + X，然后按Y和回车键确认并将更改写入文件。您将返回到命令提示符。

现在是时候**重启您的VPS**了。请输入：

```
reboot
```

然后按回车键。您将与​​VPS断开连接，所以请关闭此终端窗口，重新启动PuTTY并再次登录。

{% hint style="danger" %}
**不要跳过重启步骤，因为这对设置IPv6地址至关重要！**
{% endhint %}

现在我们需要测试IPv6地址是否处于活动状态，请输入：

```
ping6 <your IPv6 address>
```

如果地址处于活动状态，您将收到类似响应：

![](/files/-LXsKaf8BR_MsxOVuLhh)

按CTRL + C取消ping。&#x20;

对所有主节点IPv6地址重复此过程。如果所有这些都响应您的ping，那么你就可以安装Nodemaster脚本了。

## 4. Nodemaster脚本安装

要将命令复制到VPS，请输入：

```
git clone https://github.com/NewCapital/nodemaster MNVPS && cd MNVPS
```

这会将Nodemaster脚本克隆到VPS上的**MNVPS目录**。&#x20;

成功克隆后，您会收到这个响应并返回到命令提示符：

![](/files/-LXtuu-RLvMzGvaptTM-)

{% hint style="info" %}
您可以先针对更多的主节点设置VPS，然后在获得足够的抵押品后再启动它们。
{% endhint %}

开始实际安装，请输入（在此示例中，**4**是我们要安装的**主节点数量**）：

```
./install.sh -p twins -n 6 -c 4
```

该脚本将开始设置您的主节点并编译TWINS源文件。

**要有耐心，因为这需要一段时间（在我的情况下需要18分钟）。**

这是脚本设置完成VPS并编译完成TWINS源代码后看到的屏幕：

![](/files/-LXsWN4gHohHV1AiEoxN)

{% hint style="danger" %}
**不要运行**屏幕上列出的命令，因为您必须先编辑VPS上的各个主节点配置文件！
{% endhint %}

现在我们需要编辑主节点配置文件。它们位于/etc/masternodes目录中，因此请输入以下命令移至该目录：

```
cd /etc/masternodes
```

获取配置文件列表，请输入

```
ls
```

![](/files/-LXsj5zJnf9H2ba4mLkU)

我们需要使用nano编辑文件并填写一些信息。为此，请输入：

```
nano twins_nX.conf
```

用相应的配置文件编号替换X。&#x20;

有一个重要字段：**主节点私钥**字段。我已在图片上标注出来：

![](/files/-LXtXKI5_MIuIU2niqX6)

删除主节点私钥字段中“=”号后的文本并**粘贴您的主节点私钥**。&#x20;

现在按CTRL + X，然后按Y和回车键保存文件。&#x20;

重复此步骤，直到配置完所有的主节点。

## 5. 启动您的主节点

现在已准备好启动主节点守护进程（daemon）：&#x20;

**如果您配置好了脚本设置的所有主节点**，则只需输入

```
activate_masternodes_twins
```

您的主节点将会启动。

**如果您只配置了脚本设置的某些主节点**，则必须为每个主节点输入3个命令：

```
systemctl daemon-reload
systemctl enable twins_nX
systemctl restart twins_nX
```

将X替换为您配置的主节点的编号。

现在你要通过输入以下内容来**验证您的守护程序是否正在运行**：

```
systemctl status twins_nX.service
```

将X替换为要检查的主节点的编号。

成功运行的主节点将进行以下响应：

![](/files/-LXsnr62zTVOSxTZhyQS)

按CTRL + C退出，并为所有的主节点重复这一过程。&#x20;

这样就完成了。现在您只需要从您的控制钱包中启动主节点。

## 6.  检查您的主节点

我们现在可以检查每个主节点的状态&#x20;

将X替换为您配置的主节点的编号

```
twins-cli -conf=/etc/masternodes/twins_n1.conf masternode status 
```

然后查看主节点是否已成功启动。&#x20;

你应该看到类似信息：`{`\
`“txhash” : “334545645643534534324238908f36ff4456454dfffff51311”,`\
`“outputidx” : 0,`\
`“netaddr” : “45.11.111.111:37817”,`\
`“addr” : “WmXhHCV6PjXjxJdSXPeC8e4PrY8qTQMBFg”,`\
`“status” : 4,`\
`“message” : “Masternode successfully started”`\
`}`

**在钱包中启动主节点后，还需要检查主节点浏览器。**

要执行此操作，用鼠标从终端窗口复制您的主节点钱包地址（上面的示例中，地址为`WmXhHCV6PjXjxJdSXPeC8e4PrY8qTQMBFg`），访问TWINS区块[浏览器](https://explorer.win.win/masternodes)的主节点部分，将地址复制在右上角的搜索框，找到您的主节点。

你的主节点状态应显示为“ACTIVE”（运行中）。

{% hint style="info" %}
启动主节点后，其状态将按以下顺序变化：

"ACTIVE" --> 启动后约2-3小时

"EXPIRED" --> 只显示几分钟

"REMOVED" --> 只显示几分钟

"ENABLED" --> 最终主节点将保持此状态， "Active" 时间将开始增加

注意：若您本地钱包中的主节点状态为“MISSING”（丢失），请检查其在[主节点浏览器](https://explorer.win.win/masternodes)中状态，它可能是 EXPIRED / REMOVED，这两种状态没有问题。
{% endhint %}

{% hint style="danger" %}
不要着急！收到第一次主节点奖励的时间通常是之后奖励时间的**2-3倍**。如果从钱包再次启动主节点，此计时器将重置为零。
{% endhint %}

&#x20;这便是设置主节点的步骤。恭喜！您已成功创建了主节点。


---

# 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.win.win/twins/zhong-wen/twins-masternodes/zai-yi-tai-vps-shang-she-zhi-duo-ge-masternode.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.
