#!/bin/bash set -e # mihomo 版本号 MIHOMO_VERSION="${MIHOMO_VERSION:-1.19.11}" CONFIG_DIR="/etc/mihomo" CONFIG_FILE="$CONFIG_DIR/config.yaml" SERVICE_FILE="/etc/systemd/system/mihomo.service" BINARY_PATH="/usr/local/bin/mihomo" # 检查 root if [ "$EUID" -ne 0 ]; then echo "请使用 root 运行脚本" exit 1 fi # 检查并安装依赖 check_dependencies() { echo "检查系统依赖..." # 检查 curl if ! command -v curl &>/dev/null; then echo "curl 未安装,正在安装..." if command -v apt-get &>/dev/null; then apt-get update && apt-get install -y curl elif command -v yum &>/dev/null; then yum install -y curl elif command -v dnf &>/dev/null; then dnf install -y curl elif command -v pacman &>/dev/null; then pacman -S --noconfirm curl else echo "无法自动安装 curl,请手动安装后重试" exit 1 fi fi # 检查 gzip if ! command -v gzip &>/dev/null; then echo "gzip 未安装,正在安装..." if command -v apt-get &>/dev/null; then apt-get update && apt-get install -y gzip elif command -v yum &>/dev/null; then yum install -y gzip elif command -v dnf &>/dev/null; then dnf install -y gzip elif command -v pacman &>/dev/null; then pacman -S --noconfirm gzip else echo "无法自动安装 gzip,请手动安装后重试" exit 1 fi fi echo "依赖检查完成" } # 安装 mihomo install_mihomo() { check_dependencies if ! command -v mihomo &>/dev/null; then echo "检测到 mihomo 未安装,正在下载..." # 获取系统架构 ARCH=$(uname -m) case "$ARCH" in x86_64) ARCH_TAG="linux-amd64" ;; aarch64 | arm64) ARCH_TAG="linux-arm64" ;; armv7l) ARCH_TAG="linux-armv7" ;; *) echo "不支持的架构: $ARCH" exit 1 ;; esac # 下载地址 DOWNLOAD_URL="https://github.com/MetaCubeX/mihomo/releases/download/v${MIHOMO_VERSION}/mihomo-${ARCH_TAG}-v${MIHOMO_VERSION}.gz" echo "正在从以下地址下载: $DOWNLOAD_URL" # 下载并解压二进制文件 if curl -L -o "/tmp/mihomo.gz" "$DOWNLOAD_URL"; then gzip -d "/tmp/mihomo.gz" mv "/tmp/mihomo" "$BINARY_PATH" chmod +x "$BINARY_PATH" echo "mihomo ${MIHOMO_VERSION} 安装完成 ($ARCH)" else echo "下载失败,请检查网络连接或版本号" exit 1 fi else echo "mihomo 已安装" fi } # 配置 mihomo configure_mihomo() { mkdir -p "$CONFIG_DIR" # 获取 SOCKS5 代理配置 read -rp "请输入SOCKS5代理服务器地址 [默认127.0.0.1]: " SOCKS_ADDRESS SOCKS_ADDRESS=${SOCKS_ADDRESS:-127.0.0.1} read -rp "请输入SOCKS5代理服务器端口 [默认7890]: " SOCKS_PORT SOCKS_PORT=${SOCKS_PORT:-7890} cat > "$CONFIG_FILE" < "$SERVICE_FILE" <