|
|
@@ -0,0 +1,122 @@
|
|
|
+#!/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 "$@"
|