| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #!/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 "$@"
|