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