#!/bin/sh # ================================================================= # 🚀 Tailscale 全自动安装脚本 (Universal Install) # 自动最新版 | 自动架构 | 自动依赖 | 自动配置服务 # ================================================================= # --- 配置 --- REMOTE_URL_BASE="https://pkgs.tailscale.com/stable" TMP_DIR="/tmp/ts_install" BIN_DIR="/usr/sbin" # --- 颜色 --- GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' echo -e "${YELLOW}>>> 开始全自动安装 Tailscale...${NC}" # --- 1. 环境与架构检测 --- echo -n "🔍 检测硬件架构: " ARCH=$(uname -m) case $ARCH in x86_64) TS_ARCH="amd64" ;; aarch64) TS_ARCH="arm64" ;; armv7l) TS_ARCH="arm" ;; *) echo -e "${RED}不支持: $ARCH${NC}"; exit 1 ;; esac echo -e "${GREEN}$TS_ARCH ($ARCH)${NC}" # --- 2. 依赖管理 (APK/OPKG) --- echo -n "🔍 检测包管理器: " PKG_MANAGER="" INSTALL_CMD="" if command -v apk >/dev/null 2>&1; then echo -e "${GREEN}APK (ImmortalWrt)${NC}" PKG_MANAGER="apk" # 核心依赖 + 你的网络模块需求 NEEDED_PKGS="curl ca-bundle kmod-tun iptables-mod-nat-extra" apk update apk add $NEEDED_PKGS elif command -v opkg >/dev/null 2>&1; then echo -e "${GREEN}OPKG (OpenWrt)${NC}" PKG_MANAGER="opkg" NEEDED_PKGS="curl ca-bundle kmod-tun iptables-mod-nat-extra" opkg update opkg install $NEEDED_PKGS else echo -e "${RED}未知系统,尝试继续...${NC}" fi # --- 3. 获取最新版本号 --- echo -n "☁️ 获取官方最新版本... " LATEST_VER=$(curl -s $REMOTE_URL_BASE/ | grep -o 'tailscale_[0-9]*.[0-9]*.[0-9]*_' | head -1 | cut -d_ -f2) if [ -z "$LATEST_VER" ]; then echo -e "${RED}获取版本失败,请检查网络${NC}" exit 1 fi echo -e "${GREEN}$LATEST_VER${NC}" # --- 4. 下载与解压 --- FILENAME="tailscale_${LATEST_VER}_${TS_ARCH}.tgz" DOWNLOAD_URL="${REMOTE_URL_BASE}/${FILENAME}" mkdir -p $TMP_DIR cd $TMP_DIR echo -e "⬇️ 正在下载: ${FILENAME}" curl -L -O "$DOWNLOAD_URL" if [ $? -ne 0 ]; then echo -e "${RED}❌ 下载失败${NC}" rm -rf $TMP_DIR exit 1 fi echo "📦 解压中..." tar xzf $FILENAME EXTRACT_DIR="tailscale_${LATEST_VER}_${TS_ARCH}" # --- 5. 安装二进制文件 --- echo "🔄 部署二进制文件..." # 先停止可能存在的服务 /etc/init.d/tailscale stop 2>/dev/null cp -f $TMP_DIR/$EXTRACT_DIR/tailscale $BIN_DIR/tailscale cp -f $TMP_DIR/$EXTRACT_DIR/tailscaled $BIN_DIR/tailscaled chmod +x $BIN_DIR/tailscale $BIN_DIR/tailscaled # --- 6. 写入 PROCD 服务配置 (你的完美配置) --- echo "⚙️ 配置开机自启服务..." cat << 'EOF' > /etc/init.d/tailscale #!/bin/sh /etc/rc.common START=99 STOP=01 USE_PROCD=1 PROG=/usr/sbin/tailscaled start_service() { procd_open_instance procd_set_param command $PROG # 关键参数 procd_append_param command --state=/etc/tailscale/tailscaled.state procd_append_param command --socket=/var/run/tailscale/tailscaled.sock procd_append_param command --port=41641 procd_append_param command --socks5-server=:1055 procd_set_param respawn procd_set_param stdout 1 procd_set_param stderr 1 procd_set_param env TS_NO_LOGS_NO_SUPPORT=true procd_close_instance } EOF chmod +x /etc/init.d/tailscale mkdir -p /etc/tailscale /var/run/tailscale # --- 7. 启动服务 --- echo "▶️ 启动服务..." /etc/init.d/tailscale enable /etc/init.d/tailscale restart # --- 8. 清理与收尾 --- rm -rf $TMP_DIR sleep 3 echo -e "${GREEN}==========================================${NC}" echo -e "${GREEN}🎉 Tailscale 安装完成!(版本: $LATEST_VER)${NC}" echo -e "${GREEN}==========================================${NC}" echo "" echo -e "${YELLOW}⚠️ 请复制下方命令进行登录 (已包含 Socket 路径):${NC}" echo "" echo -e "${GREEN}tailscale --socket=/var/run/tailscale/tailscaled.sock up --reset --accept-routes --advertise-routes=192.168.1.0/24${NC}" echo "" echo "提示: 请根据实际情况修改 advertise-routes 的网段"