install-easytier-core.sh 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. #!/bin/bash
  2. set -euo pipefail
  3. # ============================================================
  4. # DSH EasyTier-core 独立安装脚本
  5. # 部署 easytier-core & easytier-cli + systemd 服务
  6. # 仅在 RK3588 (aarch64 Linux) 上运行
  7. # ============================================================
  8. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
  9. RED='\033[0;31m'
  10. GREEN='\033[0;32m'
  11. YELLOW='\033[1;33m'
  12. CYAN='\033[0;36m'
  13. NC='\033[0m'
  14. log_info() { echo -e "${GREEN}[INFO]${NC} $*"; }
  15. log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
  16. log_error() { echo -e "${RED}[ERROR]${NC} $*"; }
  17. log_step() { echo -e "\n${CYAN}═══════════════════════════════════════════${NC}"; echo -e "${CYAN} $*${NC}"; echo -e "${CYAN}═══════════════════════════════════════════${NC}\n"; }
  18. # ---------- 检测平台 ----------
  19. detect_platform() {
  20. local arch os
  21. arch="$(uname -m)"
  22. os="$(uname -s)"
  23. if [ "$os" = "Linux" ] && [ "$arch" = "aarch64" ]; then
  24. echo "rk3588"
  25. else
  26. echo "unsupported"
  27. fi
  28. }
  29. # ---------- 安装 EasyTier ----------
  30. install_easytier() {
  31. log_step "部署 EasyTier VPN"
  32. # 部署 easytier-core
  33. if [ -f "${SCRIPT_DIR}/easytier-core" ]; then
  34. sudo cp "${SCRIPT_DIR}/easytier-core" /opt/easytier-core
  35. sudo chmod 755 /opt/easytier-core
  36. sudo chown root:root /opt/easytier-core
  37. log_info "easytier-core 已部署到 /opt/easytier-core"
  38. else
  39. log_error "未找到 ${SCRIPT_DIR}/easytier-core"
  40. exit 1
  41. fi
  42. # 部署 easytier-cli
  43. if [ -f "${SCRIPT_DIR}/easytier-cli" ]; then
  44. sudo cp "${SCRIPT_DIR}/easytier-cli" /home/admin/easytier-cli
  45. sudo chmod 755 /home/admin/easytier-cli
  46. sudo chown admin:admin /home/admin/easytier-cli
  47. log_info "easytier-cli 已部署到 /home/admin/easytier-cli"
  48. else
  49. log_warn "未找到 ${SCRIPT_DIR}/easytier-cli,跳过 CLI 部署"
  50. fi
  51. # 安装 easytier 系统服务
  52. if [ -f "${SCRIPT_DIR}/easytier.service" ]; then
  53. sudo cp "${SCRIPT_DIR}/easytier.service" /etc/systemd/system/easytier.service
  54. sudo chmod 644 /etc/systemd/system/easytier.service
  55. sudo systemctl daemon-reload
  56. sudo systemctl enable easytier.service
  57. sudo systemctl restart easytier.service
  58. sleep 2
  59. if systemctl is-active --quiet easytier.service; then
  60. log_info "easytier 服务已启动并设置为开机自启"
  61. else
  62. log_warn "服务启动异常,请检查: sudo journalctl -u easytier.service -n 50 --no-pager"
  63. fi
  64. else
  65. log_error "未找到 ${SCRIPT_DIR}/easytier.service"
  66. exit 1
  67. fi
  68. }
  69. verify() {
  70. log_step "验证安装"
  71. echo ""
  72. if [ -f /opt/easytier-core ]; then
  73. echo " /opt/easytier-core ✅"
  74. /opt/easytier-core --version 2>/dev/null || echo " (--version 不可用)"
  75. fi
  76. if [ -f /home/admin/easytier-cli ]; then
  77. echo " /home/admin/easytier-cli ✅"
  78. fi
  79. if systemctl is-active --quiet easytier.service 2>/dev/null; then
  80. echo " easytier.service ✅ running"
  81. else
  82. echo " easytier.service ❌ not running"
  83. fi
  84. echo ""
  85. }
  86. # ============================================================
  87. main() {
  88. local PLATFORM
  89. PLATFORM="$(detect_platform)"
  90. echo ""
  91. echo " ╔══════════════════════════════════════════╗"
  92. echo " ║ DSH EasyTier-core 独立安装 ║"
  93. echo " ╚══════════════════════════════════════════╝"
  94. echo ""
  95. if [ "$PLATFORM" = "unsupported" ]; then
  96. log_error "仅支持 RK3588 (aarch64 Linux),当前平台: $(uname -s) / $(uname -m)"
  97. exit 1
  98. fi
  99. # 检查 sudo
  100. if [ "$EUID" -ne 0 ]; then
  101. log_info "部分操作需要 sudo 权限"
  102. fi
  103. install_easytier
  104. verify
  105. log_info "安装完成!"
  106. }
  107. main "$@"