Skip to main content

Cài đặt Node cho Cardano trên mạng Maintnet

Xây dựng Node cho Cardano trên mạng Mainnet với hệ điều hành Ubuntu 20.04

Tài nguyên

Cấu hình máy tính tốt: Máy tính cài phần mềm 32 GB ram Hơn 100 GB dung lượng ổ cứng Với hệ điều hành Ubuntu 20.04

Tài liệu : https://cardano-community.github.io/guild-operators/#/basics

A. Tạo user#

sudo adduser nvhieu
sudo usermod -aG sudo nvhieu
sudo su - nvhieu
sudo whoami
......

B1. Cài đặt và update các packages liên quan.#

sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install libsodium-dev bsdmainutils unzip git make tmux rsync htop curl build-essential pkg-config libffi-dev libgmp-dev libssl-dev libtinfo-dev libsystemd-dev zlib1g-dev make g++ git wget libtool autoconf nload nano cron libncursesw5 jq -y

B2 Cài đặt libsodium#

mkdir $HOME/git
cd $HOME/git
git clone https://github.com/input-output-hk/libsodium
cd libsodium
git checkout 66f017f1
./autogen.sh
./configure
make
sudo make install

B3. Cài đặt GHC và Cài đặt Cabal + CNtool#

echo export CNODE_HOME=/opt/cardano/cnode >> $HOME/.bashrc
echo export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH >> $HOME/.bashrc
echo [ -f "/home/hadavn1/.ghcup/env" ] && source "/home/hadavn1/.ghcup/env" >> $HOME/.bashrc
source ~/.bashrc

Download and install version 8.10.4 of GHC#

cd
wget https://downloads.haskell.org/ghc/8.10.4/ghc-8.10.4-x86_64-deb9-linux.tar.xz
tar -xf ghc-8.10.4-x86_64-deb9-linux.tar.xz
rm ghc-8.10.4-x86_64-deb9-linux.tar.xz
cd ghc-8.10.4
./configure
sudo make install

Install Cabal v3.4.0.0#

cd
wget https://downloads.haskell.org/~cabal/cabal-install-3.4.0.0/cabal-install-3.4.0.0-x86_64-ubuntu-16.04.tar.xz
tar -xf cabal-install-3.4.0.0-x86_64-ubuntu-16.04.tar.xz
rm cabal-install-3.4.0.0-x86_64-ubuntu-16.04.tar.xz
mkdir -p ~/.cabal/bin
mv cabal ~/.cabal/bin/

Cập nhật PATH

echo export PATH=~/.cabal/bin:$PATH >> ~/.bashrc
source ~/.bashrc
echo $PATH
cabal --version

Tạo cấu trúc file Cntool#

sudo whoami
mkdir "$HOME/tmp";
cd "$HOME/tmp"
curl -sS -o prereqs.sh https://raw.githubusercontent.com/cardano-community/guild-operators/master/scripts/cnode-helper-scripts/prereqs.sh
chmod 755 prereqs.sh
./prereqs.sh -f

B4. Cập nhật PATH#

echo export PATH=~/.cabal/bin:$PATH >> ~/.bashrc
source ~/.bashrc
echo $PATH
export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
echo export CNODE_HOME=/opt/cardano/cnode >> $HOME/.bashrc
echo export CARDANO_NODE_SOCKET_PATH="$CNODE_HOME/sockets/node0.socket" >> $HOME/.bashrc
echo export PATH="$HOME/.cargo/bin:$PATH" >> ~/.bashrc
source ~/.bashrc

B5. Tạo NODE và CLI#

Tài liệu: https://cardano-community.github.io/guild-operators/#/Build/node-cli

. "${HOME}/.bashrc"
cd
cd ~/git
git clone https://github.com/input-output-hk/cardano-node
cd cardano-node
git fetch --tags --all
git pull
git checkout 1.33.0 # tạo Node Replace release 1.33.0 with the version/branch/tag you'd like to build
$CNODE_HOME/scripts/cabal-build-all.sh -o
cardano-cli --version
cardano-node --version

B6. Cập nhật cncli.#

chú ý: Bước này chỉ cần thiết khi check leaderlog

cd $HOME/tmp
curl -sS -o prereqs.sh https://raw.githubusercontent.com/cardano-community/guild-operators/master/scripts/cnode-helper-scripts/prereqs.sh
sudo chmod 755 prereqs.sh
./prereqs.sh -clf

B7. Chỉnh sửa file cấu hình#

cd $CNODE_HOME/scripts
nano topologyUpdater.sh

Ví dụ:

CUSTOM_PEERS="34.67.23.232:3000|170.106.15.159:3001|relays-new.cardano-mainnet.iohk.io:3001:2"

Chỉnh sửa file env#

Sửa port 3001 và bỏ

nano env

Sửa ip của prometheus#

nano ../files/config.json

B8. Chạy node#

Tạo các systemctl cho cnode

cd $CNODE_HOME/scripts
./deploy-as-systemd.sh
sudo systemctl stop cnode
sudo systemctl restart cnode

B8b. Tạo node thư 2#

Sửa file prereqs.sh - CNODE_NAME

cd tmp
nano prereqs.sh
./prereqs.sh -f

Sửa port

nano env

Sửa Port trong ../files/config.json

nano $CNODE_HOME/files/config.json

Sửa topology.json

nano $CNODE_HOME//files/topology.json

Tạo file systemd

sudo rm -f /etc/systemd/system/cnodew.service
sudo cp /etc/systemd/system/cnode.service /etc/systemd/system/cnodew.service
sudo sed -i /etc/systemd/system/cnodew.service -e "s/cardano\/cnode/cardano\/cnodew/g"
sudo systemctl daemon-reload
sudo systemctl enable cnodew.service

B9. tạo file xóa logs#

tạo file clearlogs.sh

cd $CNODE_HOME/scripts
cat > clearlogs.sh << EOF
#!/bin/bash
/bin/rm -rf /opt/cardano/cnode/logs/node0*
/bin/rm -rf /opt/cardano/cnode/logs/node0.json
/bin/rm -rf /opt/cardano/cnode/logs/archive/node*.json
EOF
chmod 755 clearlogs.sh
cat > crontab_fragment.txt << EOF
15 5 * * * ${CNODE_HOME}/scripts/clearlogs.sh
EOF
crontab -l | cat - crontab_fragment.txt >crontab.txt && crontab crontab.txt
rm crontab_fragment.txt

Ví dụ:

systemctl status cron
crontab -e
sudo crontab -e
25 * * * * /opt/cardano/cnode/scripts/topologyUpdater.sh
15 5 * * * /opt/cardano/cnode/scripts/clearlogs.sh
10 * * * * /opt/cardano/cnode/scripts/check_peerin.sh
5 * * * * /opt/cardano/cnode/scripts/reset-ram.sh
systemctl status cron

B10. Tạo bộ nhớ RAM trên SSD#

https://www.cyberciti.biz/faq/linux-add-a-swap-file-howto/

sudo fallocate -l 4G /swapfile
or
sudo dd if=/dev/zero of=/swapfile bs=1G count=8
ls -lh /swapfile
sudo chown root:root /swapfile
sudo chmod 0600 /swapfile
ls -lh /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
swapon -s
grep -i --color swap /proc/meminfo
#check RAM
free -m
sudo nano /etc/fstab
/swapfile none swap sw 0 0
#deable RAM ảo
sudo swapoff /swapfile
sudo swapon -s