更新 03
This commit is contained in:
175
03
175
03
@@ -1,9 +1,20 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ================= 配置区域 =================
|
||||
# 严格改回你之前成功的 /data 路径
|
||||
DATA_DIR="/data"
|
||||
# ===========================================
|
||||
# ================= 核心配置区域 =================
|
||||
# 1. 设置版本号 (修改此处即可控制下载版本)
|
||||
VERSION="1.1.15"
|
||||
|
||||
# 2. 官方标准数据目录 (不要改动,这是 RustDesk 的默认位置)
|
||||
DATA_DIR="/var/lib/rustdesk-server"
|
||||
|
||||
# 3. 下载链接 (自动适配上方版本号)
|
||||
# 主源:你的私有源
|
||||
URL_HBBS_PRIMARY="https://cloudreve.vps3344521.xyz/f/W9tx/rustdesk-server-hbbs_${VERSION}_amd64.deb"
|
||||
URL_HBBR_PRIMARY="https://cloudreve.vps3344521.xyz/f/j3fJ/rustdesk-server-hbbr_${VERSION}_amd64.deb"
|
||||
# 备用源:GitHub (防止私有源挂掉)
|
||||
URL_HBBS_FALLBACK="https://github.com/rustdesk/rustdesk-server/releases/download/${VERSION}/rustdesk-server-hbbs_${VERSION}_amd64.deb"
|
||||
URL_HBBR_FALLBACK="https://github.com/rustdesk/rustdesk-server/releases/download/${VERSION}/rustdesk-server-hbbr_${VERSION}_amd64.deb"
|
||||
# ===============================================
|
||||
|
||||
# --- 功能: 检测安装并询问是否卸载重装 ---
|
||||
echo "正在检查系统状态..."
|
||||
@@ -12,75 +23,103 @@ if systemctl list-unit-files | grep -q "rustdesk-hbbs.service"; then
|
||||
echo "------------------------------------------------"
|
||||
echo "⚠️ 检测到系统已安装 RustDesk Server!"
|
||||
echo "------------------------------------------------"
|
||||
# 这里是你要求的交互逻辑
|
||||
read -p "检测到已安装,是否卸载当前版本并重新安装?(输入 y 确认重装,输入 n 退出): " choice
|
||||
read -p "是否卸载当前版本并重新安装?(输入 y 确认重装,输入 n 退出): " choice
|
||||
case "$choice" in
|
||||
y|Y )
|
||||
echo ">>> 正在停止服务并卸载..."
|
||||
echo ">>> 正在停止服务..."
|
||||
systemctl stop rustdesk-hbbs rustdesk-hbbr
|
||||
systemctl disable rustdesk-hbbs rustdesk-hbbr
|
||||
# 彻底清除旧程序
|
||||
|
||||
echo ">>> 正在卸载程序..."
|
||||
dpkg -P rustdesk-server-hbbs rustdesk-server-hbbr
|
||||
apt-get purge -y rustdesk-server-hbbs rustdesk-server-hbbr
|
||||
|
||||
# 询问是否清空旧数据(防止旧 Key 干扰)
|
||||
# 询问是否清空数据
|
||||
echo "------------------------------------------------"
|
||||
read -p "是否清空旧的 /data 数据目录(删除旧Key)?(y/n) [建议 y]: " del_data
|
||||
echo "注意:官方数据目录为 $DATA_DIR"
|
||||
read -p "是否清空旧的 Key 和数据库?(y/n) [推荐 y 以防冲突]: " del_data
|
||||
if [[ "$del_data" == "y" || "$del_data" == "Y" ]]; then
|
||||
rm -rf "$DATA_DIR"
|
||||
echo ">>> 旧数据 /data 已清除。"
|
||||
echo ">>> 旧数据已清除。"
|
||||
else
|
||||
echo ">>> 旧数据 /data 已保留。"
|
||||
echo ">>> 旧数据已保留。"
|
||||
fi
|
||||
echo ">>> 卸载完成,即将开始重新安装..."
|
||||
echo "------------------------------------------------"
|
||||
echo ">>> 卸载完成,准备重新安装..."
|
||||
sleep 2
|
||||
;;
|
||||
* )
|
||||
echo ">>> 你选择了不卸载,脚本退出。"
|
||||
echo ">>> 操作已取消,脚本退出。"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# --- 下面是原来的安装脚本 (路径保持 /data 不动) ---
|
||||
# ================== 安装流程 ==================
|
||||
|
||||
# 1. 基础环境修复
|
||||
echo "正在修复基础环境..."
|
||||
apt-get update
|
||||
apt-get install -y curl wget lsof psmisc
|
||||
# 1. 基础环境修复与依赖安装
|
||||
echo ">>> [1/6] 正在配置基础环境..."
|
||||
apt-get update -q
|
||||
# 增加 ufw 用于防火墙管理,dnsutils 用于网络查询
|
||||
apt-get install -y curl wget lsof ufw dnsutils
|
||||
|
||||
# 2. 准备目录 (使用 /data)
|
||||
if [ ! -d "$DATA_DIR" ]; then
|
||||
echo "正在创建数据目录: $DATA_DIR"
|
||||
mkdir -p "$DATA_DIR"
|
||||
else
|
||||
echo "目录已存在: $DATA_DIR"
|
||||
# 2. 智能获取公网 IP (双重保险)
|
||||
echo ">>> [2/6] 正在获取公网 IP..."
|
||||
HOST_IP=$(curl -s4 --connect-timeout 5 ifconfig.me)
|
||||
if [ -z "$HOST_IP" ]; then
|
||||
echo " 备用方案启动:尝试通过 ip.sb 获取..."
|
||||
HOST_IP=$(curl -s4 --connect-timeout 5 ip.sb)
|
||||
fi
|
||||
|
||||
# 3. 下载安装包
|
||||
echo "正在获取安装包..."
|
||||
URL_HBBS="https://cloudreve.vps3344521.xyz/f/W9tx/rustdesk-server-hbbs_1.1.15_amd64.deb"
|
||||
URL_HBBR="https://cloudreve.vps3344521.xyz/f/j3fJ/rustdesk-server-hbbr_1.1.15_amd64.deb"
|
||||
|
||||
wget -O hbbs.deb "$URL_HBBS" || wget -O hbbs.deb "https://github.com/rustdesk/rustdesk-server/releases/download/1.1.11-1/rustdesk-server-hbbs_1.1.11_amd64.deb"
|
||||
wget -O hbbr.deb "$URL_HBBR" || wget -O hbbr.deb "https://github.com/rustdesk/rustdesk-server/releases/download/1.1.11-1/rustdesk-server-hbbr_1.1.11_amd64.deb"
|
||||
|
||||
if [ ! -s hbbs.deb ]; then
|
||||
echo "错误:未能下载有效的安装包。"
|
||||
if [ -z "$HOST_IP" ]; then
|
||||
echo "❌ 错误:无法获取公网 IP,请检查网络连接。"
|
||||
exit 1
|
||||
fi
|
||||
echo " 获取成功: $HOST_IP"
|
||||
|
||||
# 3. 下载安装包 (自动重试)
|
||||
echo ">>> [3/6] 正在下载安装包 (版本: $VERSION)..."
|
||||
|
||||
# 下载函数
|
||||
download_pkg() {
|
||||
local name=$1
|
||||
local url_pri=$2
|
||||
local url_sec=$3
|
||||
|
||||
echo " 正在下载 $name..."
|
||||
wget -O "$name.deb" "$url_pri"
|
||||
|
||||
# 检查文件是否有效(大于 1KB)
|
||||
if [ ! -s "$name.deb" ] || [ $(stat -c%s "$name.deb") -lt 1000 ]; then
|
||||
echo " ⚠️ 主源下载失败,切换备用源..."
|
||||
rm -f "$name.deb"
|
||||
wget -O "$name.deb" "$url_sec"
|
||||
fi
|
||||
|
||||
if [ ! -s "$name.deb" ]; then
|
||||
echo "❌ 错误:$name 下载彻底失败,请检查链接。"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
download_pkg "hbbs" "$URL_HBBS_PRIMARY" "$URL_HBBS_FALLBACK"
|
||||
download_pkg "hbbr" "$URL_HBBR_PRIMARY" "$URL_HBBR_FALLBACK"
|
||||
|
||||
# 4. 安装
|
||||
echo "正在安装软件包..."
|
||||
echo ">>> [4/6] 正在安装软件包..."
|
||||
dpkg -i hbbs.deb hbbr.deb
|
||||
apt-get install -f -y
|
||||
# 自动清理安装包
|
||||
rm -f hbbs.deb hbbr.deb
|
||||
|
||||
# 5. 配置 Systemd 服务 (强制锁定在 /data)
|
||||
HOST_IP=$(curl -s4 ifconfig.me)
|
||||
# 5. 服务配置 (锁定官方路径,但修正启动参数)
|
||||
echo ">>> [5/6] 正在配置系统服务..."
|
||||
|
||||
echo "正在写入服务配置..."
|
||||
# 确保目录存在且权限正确
|
||||
mkdir -p "$DATA_DIR"
|
||||
chown -R root:root "$DATA_DIR"
|
||||
|
||||
# 写入服务文件 (覆盖到 /etc,优先级高于默认安装的 /lib)
|
||||
# 使用 Standard Output 和 Error 重定向,方便排错
|
||||
cat > /etc/systemd/system/rustdesk-hbbs.service <<EOF
|
||||
[Unit]
|
||||
Description=RustDesk ID Server
|
||||
@@ -88,11 +127,12 @@ After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
# -k _ 强制生成 Key
|
||||
LimitNOFILE=1000000
|
||||
ExecStart=/usr/bin/hbbs -r ${HOST_IP}:21117 -k _
|
||||
WorkingDirectory=${DATA_DIR}
|
||||
Restart=always
|
||||
User=root
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -105,31 +145,60 @@ After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
LimitNOFILE=1000000
|
||||
ExecStart=/usr/bin/hbbr -k _
|
||||
WorkingDirectory=${DATA_DIR}
|
||||
Restart=always
|
||||
User=root
|
||||
RestartSec=10
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
# 6. 启动并显示 Key
|
||||
# 6. 防火墙配置 (新增优化)
|
||||
echo ">>> [6/6] 正在优化防火墙端口..."
|
||||
if command -v ufw > /dev/null; then
|
||||
ufw allow 21115:21119/tcp
|
||||
ufw allow 21116/udp
|
||||
echo " UFW 防火墙规则已添加。"
|
||||
else
|
||||
echo " 未检测到 UFW,跳过防火墙配置。"
|
||||
fi
|
||||
|
||||
# 启动服务
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now rustdesk-hbbs rustdesk-hbbr
|
||||
|
||||
# ================= 结果展示与 Key 等待 =================
|
||||
echo "------------------------------------------------"
|
||||
echo "RustDesk 安装完成!"
|
||||
echo "数据存储路径: $DATA_DIR"
|
||||
echo "正在等待 Key 生成..."
|
||||
sleep 3
|
||||
echo "✅ RustDesk 安装并启动完成!"
|
||||
echo " 安装位置: 官方默认 (/usr/bin)"
|
||||
echo " 数据位置: $DATA_DIR"
|
||||
echo "------------------------------------------------"
|
||||
echo "⏳ 正在等待 Key 文件生成 (最多等待 30 秒)..."
|
||||
|
||||
PUB_KEY="${DATA_DIR}/id_ed25519.pub"
|
||||
if [ -f "$PUB_KEY" ]; then
|
||||
echo "你的 Key 为:"
|
||||
echo -e "\033[32m$(cat "$PUB_KEY")\033[0m"
|
||||
else
|
||||
echo "警告:Key 文件尚未生成,请手动检查: cat $PUB_KEY"
|
||||
echo "如果还是没生成,可能是服务启动慢,请稍等几秒再看。"
|
||||
fi
|
||||
MAX_RETRIES=30
|
||||
COUNT=0
|
||||
|
||||
# 循环检测 Key 是否生成
|
||||
while [ ! -f "$PUB_KEY" ]; do
|
||||
sleep 1
|
||||
((COUNT++))
|
||||
if [ "$COUNT" -ge "$MAX_RETRIES" ]; then
|
||||
echo "⚠️ 等待超时!Key 文件尚未生成。"
|
||||
echo "请稍后手动查看: cat $PUB_KEY"
|
||||
exit 0
|
||||
fi
|
||||
echo -ne "."
|
||||
done
|
||||
echo ""
|
||||
|
||||
# 成功获取
|
||||
echo "------------------------------------------------"
|
||||
echo "🎉 你的 Key (公钥) 为:"
|
||||
echo ""
|
||||
echo -e "\033[32m$(cat "$PUB_KEY")\033[0m"
|
||||
echo ""
|
||||
echo "------------------------------------------------"
|
||||
Reference in New Issue
Block a user