如何云端搭建门罗币的全节点,手机钱包也可以链接自己的全节点(下)

admin 2021-4-11 2085

本教程适用于 Debian或Ubuntu版本的Linux系统

在上篇文章里我们介绍了,2020年10月到2021年1月门罗币主网受到的攻击,社区的攻防应对,和本地节点用户如何升级。

在本文中,我们将详细介绍如何在Linux系统的服务器(虚拟专用服务器(VPS)的最常见的操作系统)上轻松运行Monero门罗币的节点。也就是说,运行的全节点将可以给本地用户,手机用户,和其它用户进行区块同步,而不用信赖第三方。作者强烈建议您运行Debian或Ubuntu版本的Linux系统,按照本教程一定可以获得成功。

搭建云端的门罗币节点,首先需要有云服务的专属虚拟机,

在进行下一步前,您必须已经找到自己的云服务商,购买并通过SSH远端进入了你的VPS /主机,但是如果您需要这些第一步的帮助,请参考以下几个不错的链接:

选择一,接受门罗币付款的服务器列表,信息来源门罗币总社区,好处是可以匿名搭建服务器。https://www.getmonero.org/community/merchants/#hosting

选择二,Hetzner专用服务器 

他们是总部位于德国的可靠,廉价的专用服务器提供商,虽然不接受门罗币支付,但却是高性能节点的理想选择。

选择三,简单的Linode

如果你在家中使用自己的硬件,那也请确保你的电脑正在运行的是Ubuntu / Debian版本

硬件要求

全节点2个以上vCPUs /内核

4GB以上的RAM

175GB以上的SSD硬盘

修剪的节点

2个以上vCPU /内核

4GB以上的RAM

75GB以上的SSD硬盘

另外如果您能够获得无限带宽,请确保提高所提供配置文件中的带宽限制,以加快初始同步速度,并为整个门罗币网络提供更多带宽。

为什么要运行自己的Monero节点? 

Monero网络依赖于Monero节点的分布式网络,每个节点都可以验证事务,将事务传播到网络的其余部分,并帮助新节点轻松,快速地同步到网络的当前状态。为自己运行一个Monero节点,不仅可以为您提供更强大的网络级隐私保证,而且还可以提高Monero网络的分散性,稳定性和速度。每个节点可以公开两种不同的服务,每种服务以独特的方式对网络产生积极影响:对等(p2p)端口(默认为18080):此端口允许网络上的其他节点连接到您的节点,以下载区块链并向您发送他们验证您还没有的任何交易。由于您的节点参与了交易的Dandelion ++传播,因此还增加了整体网络隐私。远程过程调用(RPC)端口(受限制的默认值是18089):暴露此端口(尤其是与公共节点arg一起使用)可以使网络上的其他用户(尤其是使用“简单”模式下使用移动钱包或GUI钱包的用户)进行连接到您的节点以同步其钱包,而无需在本地运行其自己的完整节点。

目前已经有众多解决方式被合并到主代码库里,具体地址在下面,开源社区就是每个人都可以贡献代码和设计门罗,被其他人审计和确认后,就可以在门罗币主网实施。具体过程参见我们的代码库,有能力的程序员也可以提出自己的想法和改进措施。 https://github.com/monero-project/monero/pulls?q=is%3Apr

更新并安装所需的软件包

首先,我们需要安装一些我们稍后需要的工具:

sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install -y ufw gpg wget

通过UFW进行初始强化我们将要确保通过使用UFW将防火墙锁定为仅允许访问SSH和monerod必需的端口的方式,以简单的方式对系统进行加固。DigitalOcean提供了有关UFW入门的重要介绍。运行以下命令以添加一些基本UFW规则并启用防火墙

    # Deny all non-explicitly allowed portssudo ufw default deny incomingsudo ufw default allow outgoing
    # Allow SSH accesssudo ufw allow ssh
    # Allow monerod p2p portsudo ufw allow 18080/tcp
    # Allow monerod restricted RPC portsudo ufw allow 18089/tcp
    # Enable UFWsudo ufw enable

    下载并安装monerod创建用于Monero配置,PID和日志文件的系统用户和目录:

      # Create a system user and group to run monerod assudo addgroup --system monerosudo adduser --system monero --home /var/lib/monero
      # Create necessary directories for monerodsudo mkdir /var/run/monerosudo mkdir /var/log/monerosudo mkdir /etc/monero
      # Create monerod config filesudo touch /etc/monero/monerod.conf
      # Set permissions for new directoriessudo chown monero:monero /var/run/monerosudo chown monero:monero /var/log/monerosudo chown -R monero:monero /etc/monero

      使用my gist2下载并验证最新的CLI二进制文件: 

        wget https://gist.githubusercontent.com/sethsimmons/ad5848767d9319520a6905b7111dc021/raw/download_monero_binaries.shchmod +x download_monero_binaries.sh./download_monero_binaries.sh

        安装最新的二进制文件:

          tar xvf monero-linux-*.tar.bz2rm monero-linux-*.tar.bz2sudo cp -r monero-x86_64-linux-gnu-*/* /usr/local/bin/sudo chown -R monero:monero /usr/local/bin/monero*

          安装monerod systemd脚本通过systemd脚本安装monerod可使Monero在启动时自动启动,在崩溃时重新启动,并登录到给定的文件。选择适当的配置文件,具体取决于您是要运行完整节点还是已修剪的节点,以及是否要播发公共受限的RPC节点以允许其他用户使用您的节点同步其钱包:注意:我建议的配置文件会在下面自动展开,但是可以根据需要选择其他3个选项之一,一共四个,根据需求安装。

          现在复制并粘贴您要使用的配置文件:


            # /etc/monero/monerod.conf
            # Data directory (blockchain db and indices)data-dir=/var/lib/monero/.bitmonero
            # Log filelog-file=/var/log/monero/monerod.log
            # P2P configuration# p2p-bind-ip=0.0.0.0            # Bind to all interfaces (the default)# p2p-bind-port=18080            # Bind to default port
            # RPC configurationrpc-restricted-bind-ip=0.0.0.0            # Bind restricted RPC to all interfacesrpc-restricted-bind-port=18089            # Bind restricted RPC on custom port to differentiate from default unrestricted RPC (18081)confirm-external-bind=1        # Open restricted RPC node (confirm)no-igd=1                       # Disable UPnP port mapping
            # ZMQ configurationno-zmq=1
            # Block known-malicious nodes from a DNSBLenable-dns-blocklist=1
            # Set download and upload limits, if desired# limit-rate-up=128000 # 128000 kB/s == 125MB/s == 1GBit/s; a raise from default 2048 kB/s; contribute more to p2p network# limit-rate-down=128000 # 128000 kB/s == 125MB/s == 1GBit/s; a raise from default 2048 kB/s; contribute more to p2p network

            以下三个和上面一个是备选方案,四选一就可


              # /etc/monero/monerod.conf
              # Data directory (blockchain db and indices)data-dir=/var/lib/monero/.bitmonero  # Remember to create the monero user first
              # Log filelog-file=/var/log/monero/monerod.log
              # P2P configuration# p2p-bind-ip=0.0.0.0            # Bind to all interfaces (the default)# p2p-bind-port=18080            # Bind to default port
              # RPC configurationpublic-node=1                             # Advertise the RPC-restricted port over p2p peer listsrpc-restricted-bind-ip=0.0.0.0            # Bind restricted RPC to all interfacesrpc-restricted-bind-port=18089            # Bind restricted RPC on custom port to differentiate from default unrestricted RPC (18081)confirm-external-bind=1                   # Open restricted RPC node (confirm)no-igd=1                                  # Disable UPnP port mapping
              # ZMQ configurationno-zmq=1
              # Block known-malicious nodes from a DNSBLenable-dns-blocklist=1
              # Set download and upload limits, if desired# limit-rate-up=128000 # 128000 kB/s == 125MB/s == 1GBit/s; a raise from default 2048 kB/s; contribute more to p2p network# limit-rate-down=128000 # 128000 kB/s == 125MB/s == 1GBit/s; a raise from default 2048 kB/s; contribute more to p2p network

                # /etc/monero/monerod.conf
                # Data directory (blockchain db and indices)data-dir=/var/lib/monero/.bitmonero  # Remember to create the monero user first
                # Log filelog-file=/var/log/monero/monerod.log
                # Pruning configurationprune-blockchain=1
                # P2P configuration# p2p-bind-ip=0.0.0.0            # Bind to all interfaces (the default)# p2p-bind-port=18080            # Bind to default port
                # RPC configurationrpc-restricted-bind-ip=0.0.0.0            # Bind restricted RPC to all interfacesrpc-restricted-bind-port=18089            # Bind restricted RPC on custom port to differentiate from default unrestricted RPC (18081)confirm-external-bind=1        # Open restricted RPC node (confirm)no-igd=1                       # Disable UPnP port mapping
                # ZMQ configurationno-zmq=1
                # Block known-malicious nodes from a DNSBLenable-dns-blocklist=1
                # Set download and upload limits, if desired# limit-rate-up=128000 # 128000 kB/s == 125MB/s == 1GBit/s; a raise from default 2048 kB/s; contribute more to p2p network# limit-rate-down=128000 # 128000 kB/s == 125MB/s == 1GBit/s; a raise from default 2048 kB/s; contribute more to p2p network

                  # /etc/monero/monerod.conf
                  # Data directory (blockchain db and indices)data-dir=/var/lib/monero/.bitmonero  # Remember to create the monero user first
                  # Log filelog-file=/var/log/monero/monerod.log
                  # Pruning configurationprune-blockchain=1
                  # P2P configuration# p2p-bind-ip=0.0.0.0            # Bind to all interfaces (the default)# p2p-bind-port=18080            # Bind to default port
                  # RPC configurationpublic-node=1                             # Advertise the RPC-restricted port over p2p peer listsrpc-restricted-bind-ip=0.0.0.0            # Bind restricted RPC to all interfacesrpc-restricted-bind-port=18089            # Bind restricted RPC on custom port to differentiate from default unrestricted RPC (18081)confirm-external-bind=1                   # Open restricted RPC node (confirm)no-igd=1                                  # Disable UPnP port mapping
                  # ZMQ configurationno-zmq=1
                  # Block known-malicious nodes from a DNSBLenable-dns-blocklist=1
                  # Set download and upload limits, if desired# limit-rate-up=128000 # 128000 kB/s == 125MB/s == 1GBit/s; a raise from default 2048 kB/s; contribute more to p2p network# limit-rate-down=128000 # 128000 kB/s == 125MB/s == 1GBit/s; a raise from default 2048 kB/s; contribute more to p2p network

                  现在复制并粘贴您要使用的配置文件

                    sudo nano /etc/monero/monerod.conf

                    要从纳米外壳逃脱并保存文件,请按ctrl + x。只需复制以下systemd脚本的内容,然后使用vim或nano将其保存到/etc/systemd/system/monerod.service中:


                      [Unit]Description=Monero Full Node (Mainnet)After=network.target
                      [Service]# Process management####################
                      Type=forkingPIDFile=/var/run/monero/monerod.pidExecStart=/usr/local/bin/monerod --config-file=/etc/monero/monerod.conf --pidfile /var/run/monero/monerod.pid --detachRestart=on-failureRestartSec=30
                      # Directory creation and permissions####################################
                      # Run as monero:moneroUser=moneroGroup=monero
                      # /run/moneroRuntimeDirectory=moneroRuntimeDirectoryMode=0710
                      # /var/lib/moneroStateDirectory=moneroStateDirectoryMode=0710
                      # /var/log/moneroLogsDirectory=moneroLogsDirectoryMode=0710
                      # /etc/moneroConfigurationDirectory=moneroConfigurationDirectoryMode=0710
                      # Hardening measures####################
                      # Provide a private /tmp and /var/tmp.PrivateTmp=true
                      # Mount /usr, /boot/ and /etc read-only for the process.ProtectSystem=full
                      # Deny access to /home, /root and /run/userProtectHome=true
                      # Disallow the process and all of its children to gain# new privileges through execve().NoNewPrivileges=true
                      [Install]WantedBy=multi-user.target
                        sudo nano /etc/systemd/system/monerod.service

                        要从纳米外壳逃脱并保存文件,请按ctrl + x。然后运行以下命令启动monerod:

                          # Load the new systemd script for monerodsudo systemctl daemon-reload
                          # Set monerod to start on bootsudo systemctl enable monerod
                          # Start the monerod servicesudo systemctl start monerod
                          # Tail the monerod logsudo tail -f /var/log/monero/monerod.log

                          您应该看到monerod在那里正确启动,并告诉您它正在与网络同步!

                          关于中国社区详情参见www.imonero.info,你如果在看,你也是我们的一员,没有门槛,没有官方,大家都是平等的爱好者。

                          由于篇幅问题,个人运行全节点下级也只能更新到这里,接下来会更新如何未来继续升级全节点,升级不同的新版本。

                          参考文献 Reference

                          本文参考了大量资料,其中最值得感谢的是国外社区的Sethismmons以下是他的联络方式 IF you can read English then you can check the original article Run a Monero Node (Advanced)

                          Twitter – @sethisimmons
                          Keybase – sethsimmons
                          Email – sethsimmons@pm.me


                          最新回复 (0)
                          返回
                          发新帖