Farcaster/Farcaster.sh
2024-06-25 11:27:30 +08:00

147 lines
4.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 检查是否以root用户运行脚本
if [ "$(id -u)" != "0" ]; then
echo "此脚本需要以root用户权限运行。"
echo "请尝试使用 'sudo -i' 命令切换到root用户然后再次运行此脚本。"
exit 1
fi
# 安装基本依赖
function install_dependencies() {
sudo apt update
sudo apt install pkg-config curl build-essential libssl-dev libclang-dev ufw -y
# 检查 Git 是否已安装
if ! command -v git &> /dev/null; then
echo "未检测到 Git正在安装..."
sudo apt install git -y
else
echo "Git 已安装。"
fi
# 检查 Docker 是否已安装
if ! command -v docker &> /dev/null; then
echo "未检测到 Docker正在安装..."
sudo apt-get install ca-certificates curl gnupg lsb-release -y
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
else
echo "Docker 已安装。"
fi
install_jq
}
# 安装 jq 工具
function install_jq() {
if command -v jq >/dev/null 2>&1; then
echo "jq 已安装。"
return 0
fi
echo "安装 jq..."
if [[ "$(uname)" == "Darwin" ]]; then
if command -v brew >/dev/null 2>&1; then
brew install jq
else
echo "未检测到 Homebrew请先安装 Homebrew。"
return 1
fi
elif [[ -f /etc/lsb-release ]] || [[ -f /etc/debian_version ]]; then
sudo apt-get update
sudo apt-get install -y jq
elif [[ -f /etc/redhat-release ]]; then
sudo yum install -y jq
elif [[ -f /etc/fedora-release ]]; then
sudo dnf install -y jq
elif [[ -f /etc/os-release ]] && grep -q "ID=openSUSE" /etc/os-release; then
sudo zypper install -y jq
elif [[ -f /etc/arch-release ]]; then
sudo pacman -S jq
else
echo "不支持的操作系统,请手动安装 jq。"
return 1
fi
echo "jq 安装成功。"
}
# 从仓库获取文件
function fetch_file_from_repo() {
local file_path="$1"
local local_filename="$2"
local download_url="https://raw.githubusercontent.com/farcasterxyz/hub-monorepo/@latest/$file_path?t=$(date +%s)"
curl -sS -o "$local_filename" "$download_url" || { echo "下载 $download_url 失败。"; exit 1; }
}
# 安装 hubble 节点
function install_node() {
install_dependencies
mkdir -p ~/hubble
local tmp_file=$(mktemp)
fetch_file_from_repo "scripts/hubble.sh" "$tmp_file"
mv "$tmp_file" ~/hubble/hubble.sh
chmod +x ~/hubble/hubble.sh
cd ~/hubble
exec ./hubble.sh "upgrade" < /dev/tty
}
# 查看节点日志
function check_service_status() {
cd $HOME
/root/hubble/hubble.sh logs
}
function uninstall_node() {
echo "你确定要卸载Farcaster节点程序吗这将会删除所有相关的数据。[Y/N]"
read -r -p "请确认: " response
case "$response" in
[yY][eE][sS]|[yY])
echo "开始卸载节点程序..."
cd ~
cd hubble
docker compose down -v
rm -rf hubble
echo "节点程序卸载完成。"
;;
*)
echo "取消卸载操作。"
;;
esac
}
# 主菜单
function main_menu() {
clear
echo "脚本以及教程由推特用户大赌哥 @y95277777 编写,免费开源,请勿相信收费"
echo "=====================Farcaster节点安装========================="
echo "节点社区 Discord 社群:https://discord.gg/GbMV5EcNWF"
echo "请选择要执行的操作:"
echo "1. 安装节点"
echo "2. 查看节点日志"
echo "3. 卸载节点"
read -p "请输入选项1-3: " OPTION
case $OPTION in
1) install_node ;;
2) check_service_status ;;
3) uninstall_node ;;
*) echo "无效选项。" ;;
esac
}
# 显示主菜单
main_menu