#!/bin/bash set -euo pipefail # ============================================================ # DSH EasyTier-core 独立安装脚本 # 部署 easytier-core & easytier-cli + systemd 服务 # 仅在 RK3588 (aarch64 Linux) 上运行 # ============================================================ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' log_info() { echo -e "${GREEN}[INFO]${NC} $*"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; } log_error() { echo -e "${RED}[ERROR]${NC} $*"; } log_step() { echo -e "\n${CYAN}═══════════════════════════════════════════${NC}"; echo -e "${CYAN} $*${NC}"; echo -e "${CYAN}═══════════════════════════════════════════${NC}\n"; } # ---------- 检测平台 ---------- detect_platform() { local arch os arch="$(uname -m)" os="$(uname -s)" if [ "$os" = "Linux" ] && [ "$arch" = "aarch64" ]; then echo "rk3588" else echo "unsupported" fi } # ---------- 安装 EasyTier ---------- install_easytier() { log_step "部署 EasyTier VPN" # 部署 easytier-core if [ -f "${SCRIPT_DIR}/easytier-core" ]; then sudo cp "${SCRIPT_DIR}/easytier-core" /opt/easytier-core sudo chmod 755 /opt/easytier-core sudo chown root:root /opt/easytier-core log_info "easytier-core 已部署到 /opt/easytier-core" else log_error "未找到 ${SCRIPT_DIR}/easytier-core" exit 1 fi # 部署 easytier-cli if [ -f "${SCRIPT_DIR}/easytier-cli" ]; then sudo cp "${SCRIPT_DIR}/easytier-cli" /home/admin/easytier-cli sudo chmod 755 /home/admin/easytier-cli sudo chown admin:admin /home/admin/easytier-cli log_info "easytier-cli 已部署到 /home/admin/easytier-cli" else log_warn "未找到 ${SCRIPT_DIR}/easytier-cli,跳过 CLI 部署" fi # 安装 easytier 系统服务 if [ -f "${SCRIPT_DIR}/easytier.service" ]; then sudo cp "${SCRIPT_DIR}/easytier.service" /etc/systemd/system/easytier.service sudo chmod 644 /etc/systemd/system/easytier.service sudo systemctl daemon-reload sudo systemctl enable easytier.service sudo systemctl restart easytier.service sleep 2 if systemctl is-active --quiet easytier.service; then log_info "easytier 服务已启动并设置为开机自启" else log_warn "服务启动异常,请检查: sudo journalctl -u easytier.service -n 50 --no-pager" fi else log_error "未找到 ${SCRIPT_DIR}/easytier.service" exit 1 fi } verify() { log_step "验证安装" echo "" if [ -f /opt/easytier-core ]; then echo " /opt/easytier-core ✅" /opt/easytier-core --version 2>/dev/null || echo " (--version 不可用)" fi if [ -f /home/admin/easytier-cli ]; then echo " /home/admin/easytier-cli ✅" fi if systemctl is-active --quiet easytier.service 2>/dev/null; then echo " easytier.service ✅ running" else echo " easytier.service ❌ not running" fi echo "" } # ============================================================ main() { local PLATFORM PLATFORM="$(detect_platform)" echo "" echo " ╔══════════════════════════════════════════╗" echo " ║ DSH EasyTier-core 独立安装 ║" echo " ╚══════════════════════════════════════════╝" echo "" if [ "$PLATFORM" = "unsupported" ]; then log_error "仅支持 RK3588 (aarch64 Linux),当前平台: $(uname -s) / $(uname -m)" exit 1 fi # 检查 sudo if [ "$EUID" -ne 0 ]; then log_info "部分操作需要 sudo 权限" fi install_easytier verify log_info "安装完成!" } main "$@"