Update Artela.sh

This commit is contained in:
smeb y 2024-04-01 15:14:20 +08:00 committed by GitHub
parent e0c2c3d63c
commit 115783a18f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

220
Artela.sh
View File

@ -7,8 +7,33 @@ if [ "$(id -u)" != "0" ]; then
exit 1
fi
# 脚本保存路径
SCRIPT_PATH="$HOME/Artela.sh"
# 检查并安装 Node.js 和 npm
function install_nodejs_and_npm() {
if command -v node > /dev/null 2>&1; then
echo "Node.js 已安装"
else
echo "Node.js 未安装,正在安装..."
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs
fi
if command -v npm > /dev/null 2>&1; then
echo "npm 已安装"
else
echo "npm 未安装,正在安装..."
sudo apt-get install -y npm
fi
}
# 检查并安装 PM2
function install_pm2() {
if command -v pm2 > /dev/null 2>&1; then
echo "PM2 已安装"
else
echo "PM2 未安装,正在安装..."
npm install pm2@latest -g
fi
}
# 自动设置快捷键的功能
function check_and_set_alias() {
@ -37,156 +62,73 @@ function check_and_set_alias() {
# 节点安装功能
function install_node() {
install_nodejs_and_npm
install_pm2
# 检查命令是否存在
exists() {
command -v "$1" >/dev/null 2>&1
}
# 检查curl是否安装如果没有则安装
if exists curl; then
echo 'curl 已安装'
else
# 检查curl是否安装如果没有则安装
if ! command -v curl > /dev/null; then
sudo apt update && sudo apt install curl -y
fi
fi
# 设置变量
read -r -p "请输入节点名称: " NODE_MONIKER
export NODE_MONIKER=$NODE_MONIKER
# 设置变量
read -r -p "请输入节点名称: " NODE_MONIKER
export NODE_MONIKER=$NODE_MONIKER
# 更新和安装必要的软件
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl iptables build-essential git wget jq make gcc nano tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev lz4
# 更新和安装必要的软件
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl iptables build-essential git wget jq make gcc nano tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev lz4 snapd
# 安装Go
sudo rm -rf /usr/local/go
curl -L https://go.dev/dl/go1.22.0.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
# 安装Go
sudo rm -rf /usr/local/go
curl -L https://go.dev/dl/go1.22.0.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> $HOME/.bash_profile
source $HOME/.bash_profile
# 安装所有二进制文件
cd $HOME
git clone https://github.com/artela-network/artela
cd artela
git checkout v0.4.7-rc6
make install
# 安装所有二进制文件
cd $HOME
rm -rf artela
git clone https://github.com/artela-network/artela
cd artela
git checkout v0.4.7-rc6
make install
# 配置artelad
artelad config chain-id artela_11822-1
artelad init "$NODE_MONIKER" --chain-id artela_11822-1
# 配置artelad
artelad config chain-id artela_11822-1
artelad init "$NODE_MONIKER" --chain-id artela_11822-1
# 获取初始文件和地址簿
curl -s https://t-ss.nodeist.net/artela/genesis.json > $HOME/.artelad/config/genesis.json
curl -s https://t-ss.nodeist.net/artela/addrbook.json > $HOME/.artelad/config/addrbook.json
# 获取初始文件和地址簿
curl -s https://t-ss.nodeist.net/artela/genesis.json > $HOME/.artelad/config/genesis.json
curl -s https://t-ss.nodeist.net/artela/addrbook.json > $HOME/.artelad/config/addrbook.json
# 配置节点
SEEDS=""
PEERS="b23bc610c374fd071c20ce4a2349bf91b8fbd7db@65.108.72.233:11656"
sed -i 's|^seeds *=.*|seeds = "'$SEEDS'"|; s|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.artelad/config/config.toml
# 配置节点
SEEDS=""
PEERS="b23bc610c374fd071c20ce4a2349bf91b8fbd7db@65.108.72.233:11656"
sed -i 's|^seeds *=.*|seeds = "'$SEEDS'"|; s|^persistent_peers *=.*|persistent_peers = "'$PEERS'"|' $HOME/.artelad/config/config.toml
# 配置和快照
sed -i 's|^pruning *=.*|pruning = "custom"|g' $HOME/.artelad/config/app.toml
sed -i 's|^pruning-keep-recent *=.*|pruning-keep-recent = "100"|g' $HOME/.artelad/config/app.toml
sed -i 's|^pruning-interval *=.*|pruning-interval = "10"|g' $HOME/.artelad/config/app.toml
sed -i 's|^snapshot-interval *=.*|snapshot-interval = 0|g' $HOME/.artelad/config/app.toml
# 配置最小燃料价格和普罗米修斯
sed -i 's|^minimum-gas-prices *=.*|minimum-gas-prices = "0.025art"|g' $HOME/.artelad/config/app.toml
sed -i 's|^prometheus *=.*|prometheus = true|' $HOME/.artelad/config/config.toml
# 创建服务文件
sudo tee /etc/systemd/system/artelad.service > /dev/null << EOF
[Unit]
Description=artela node
After=network-online.target
[Service]
User=$USER
ExecStart=$(which artelad) start
Restart=on-failure
RestartSec=10
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
EOF
# 重置Tendermint数据
artelad tendermint unsafe-reset-all --home $HOME/.artelad --keep-addr-book
# 安装lz4工具
sudo apt install snapd -y
sudo snap install lz4
# 下载并解压快照
SNAP_NAME=$(curl -s https://ss-t.artela.nodestake.org/ | egrep -o ">20.*\.tar.lz4" | tr -d ">")
curl -o - -L https://ss-t.artela.nodestake.org/${SNAP_NAME} | lz4 -c -d - | tar -x -C $HOME/.artelad
# 重新加载和启动服务
sudo systemctl daemon-reload
sudo systemctl enable artelad
sudo systemctl restart artelad && sudo journalctl -u artelad -f
# 完成设置
echo '====================== 安装完成 ==========================='
echo '安装完成请重新连接VPS以启用对应快捷键功能'
# 使用 PM2 启动节点进程
pm2 start artelad --name artela-node -- start
pm2 save
pm2 startup systemd
echo '====================== 安装完成 ==========================='
echo '安装完成请重新连接VPS以启用对应快捷键功能'
}
# 创建钱包
function add_wallet() {
artelad keys add wallet
}
# 导入钱包
function import_wallet() {
artelad keys add wallet --recover
}
# 查询余额
function check_balances() {
read -p "请输入钱包地址: " wallet_address
artelad query bank balances "$wallet_address"
}
# 查看节点同步状态
function check_sync_status() {
artelad status 2>&1 | jq .SyncInfo
}
# 查看babylon服务状态
# 查看Avail服务状态
function check_service_status() {
systemctl status artelad
pm2 list
}
# 节点日志查询
# Avail 节点日志查询
function view_logs() {
sudo journalctl -f -u artelad.service
pm2 logs artela-node
}
# 卸载节点功能
function uninstall_node() {
echo "你确定要卸载Artela 节点程序吗?这将会删除所有相关的数据。[Y/N]"
read -r -p "请确认: " response
case "$response" in
[yY][eE][sS]|[yY])
echo "开始卸载节点程序..."
sudo systemctl stop artelad && sudo systemctl disable artelad && sudo rm /etc/systemd/system/artelad.service && sudo systemctl daemon-reload && rm -rf $HOME/.artelad && rm -rf artela && sudo rm -rf $(which artelad)
pm2 delete artela-node
echo "节点程序卸载完成。"
;;
*)
echo "取消卸载操作。"
;;
esac
}
# 主菜单
function main_menu() {
while true; do
@ -198,25 +140,17 @@ function main_menu() {
echo "退出脚本请按键盘ctrl c退出即可"
echo "请选择要执行的操作:"
echo "1. 安装节点"
echo "2. 创建钱包"
echo "3. 导入钱包"
echo "4. 查看钱包地址余额"
echo "5. 查看节点同步状态"
echo "6. 查看当前服务状态"
echo "7. 运行日志查询"
echo "8. 卸载节点"
echo "2. 查看服务状态"
echo "3. 运行日志查询"
echo "4. 卸载节点"
echo "9. 设置快捷键"
read -p "请输入选项(0-9: " OPTION
read -p "请输入选项1-4, 9: " OPTION
case $OPTION in
1) install_node ;;
2) add_wallet ;;
3) import_wallet ;;
4) check_balances ;;
5) check_sync_status ;;
6) check_service_status ;;
7) view_logs ;;
8) uninstall_node ;;
2) check_service_status ;;
3) view_logs ;;
4) uninstall_node ;;
9) check_and_set_alias ;;
*) echo "无效选项。" ;;
esac