本教程适用于 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 -y
sudo apt-get install -y ufw gpg wget
通过UFW进行初始强化我们将要确保通过使用UFW将防火墙锁定为仅允许访问SSH和monerod必需的端口的方式,以简单的方式对系统进行加固。DigitalOcean提供了有关UFW入门的重要介绍。运行以下命令以添加一些基本UFW规则并启用防火墙
# Deny all non-explicitly allowed ports
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow SSH access
sudo ufw allow ssh
# Allow monerod p2p port
sudo ufw allow 18080/tcp
# Allow monerod restricted RPC port
sudo ufw allow 18089/tcp
# Enable UFW
sudo ufw enable
下载并安装monerod创建用于Monero配置,PID和日志文件的系统用户和目录:
# Create a system user and group to run monerod as
sudo addgroup --system monero
sudo adduser --system monero --home /var/lib/monero
# Create necessary directories for monerod
sudo mkdir /var/run/monero
sudo mkdir /var/log/monero
sudo mkdir /etc/monero
# Create monerod config file
sudo touch /etc/monero/monerod.conf
# Set permissions for new directories
sudo chown monero:monero /var/run/monero
sudo chown monero:monero /var/log/monero
sudo chown -R monero:monero /etc/monero
使用my gist2下载并验证最新的CLI二进制文件:
wget https://gist.githubusercontent.com/sethsimmons/ad5848767d9319520a6905b7111dc021/raw/download_monero_binaries.sh
chmod +x download_monero_binaries.sh
./download_monero_binaries.sh
安装最新的二进制文件:
tar xvf monero-linux-*.tar.bz2
rm monero-linux-*.tar.bz2
sudo 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 file
log-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 configuration
rpc-restricted-bind-ip=0.0.0.0 # Bind restricted RPC to all interfaces
rpc-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 configuration
no-zmq=1
# Block known-malicious nodes from a DNSBL
enable-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 file
log-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 configuration
public-node=1 # Advertise the RPC-restricted port over p2p peer lists
rpc-restricted-bind-ip=0.0.0.0 # Bind restricted RPC to all interfaces
rpc-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 configuration
no-zmq=1
# Block known-malicious nodes from a DNSBL
enable-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 file
log-file=/var/log/monero/monerod.log
# Pruning configuration
prune-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 configuration
rpc-restricted-bind-ip=0.0.0.0 # Bind restricted RPC to all interfaces
rpc-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 configuration
no-zmq=1
# Block known-malicious nodes from a DNSBL
enable-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 file
log-file=/var/log/monero/monerod.log
# Pruning configuration
prune-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 configuration
public-node=1 # Advertise the RPC-restricted port over p2p peer lists
rpc-restricted-bind-ip=0.0.0.0 # Bind restricted RPC to all interfaces
rpc-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 configuration
no-zmq=1
# Block known-malicious nodes from a DNSBL
enable-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=forking
PIDFile=/var/run/monero/monerod.pid
ExecStart=/usr/local/bin/monerod --config-file=/etc/monero/monerod.conf --pidfile /var/run/monero/monerod.pid --detach
Restart=on-failure
RestartSec=30
# Directory creation and permissions
####################################
# Run as monero:monero
User=monero
Group=monero
# /run/monero
RuntimeDirectory=monero
RuntimeDirectoryMode=0710
# /var/lib/monero
StateDirectory=monero
StateDirectoryMode=0710
# /var/log/monero
LogsDirectory=monero
LogsDirectoryMode=0710
# /etc/monero
ConfigurationDirectory=monero
ConfigurationDirectoryMode=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/user
ProtectHome=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 monerod
sudo systemctl daemon-reload
# Set monerod to start on boot
sudo systemctl enable monerod
# Start the monerod service
sudo systemctl start monerod
# Tail the monerod log
sudo 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