Files
dock/03
2026-01-25 11:02:56 +08:00

135 lines
4.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# ================= 配置区域 =================
# 严格改回你之前成功的 /data 路径
DATA_DIR="/data"
# ===========================================
# --- 功能: 检测安装并询问是否卸载重装 ---
echo "正在检查系统状态..."
if systemctl list-unit-files | grep -q "rustdesk-hbbs.service"; then
echo "------------------------------------------------"
echo "⚠️ 检测到系统已安装 RustDesk Server"
echo "------------------------------------------------"
# 这里是你要求的交互逻辑
read -p "检测到已安装,是否卸载当前版本并重新安装?(输入 y 确认重装,输入 n 退出): " choice
case "$choice" in
y|Y )
echo ">>> 正在停止服务并卸载..."
systemctl stop rustdesk-hbbs rustdesk-hbbr
systemctl disable rustdesk-hbbs rustdesk-hbbr
# 彻底清除旧程序
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
if [[ "$del_data" == "y" || "$del_data" == "Y" ]]; then
rm -rf "$DATA_DIR"
echo ">>> 旧数据 /data 已清除。"
else
echo ">>> 旧数据 /data 已保留。"
fi
echo ">>> 卸载完成,即将开始重新安装..."
echo "------------------------------------------------"
sleep 2
;;
* )
echo ">>> 你选择了不卸载,脚本退出。"
exit 0
;;
esac
fi
# --- 下面是原来的安装脚本 (路径保持 /data 不动) ---
# 1. 基础环境修复
echo "正在修复基础环境..."
apt-get update
apt-get install -y curl wget lsof psmisc
# 2. 准备目录 (使用 /data)
if [ ! -d "$DATA_DIR" ]; then
echo "正在创建数据目录: $DATA_DIR"
mkdir -p "$DATA_DIR"
else
echo "目录已存在: $DATA_DIR"
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 "错误:未能下载有效的安装包。"
exit 1
fi
# 4. 安装
echo "正在安装软件包..."
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)
echo "正在写入服务配置..."
cat > /etc/systemd/system/rustdesk-hbbs.service <<EOF
[Unit]
Description=RustDesk ID Server
After=network.target
[Service]
Type=simple
# -k _ 强制生成 Key
ExecStart=/usr/bin/hbbs -r ${HOST_IP}:21117 -k _
WorkingDirectory=${DATA_DIR}
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
cat > /etc/systemd/system/rustdesk-hbbr.service <<EOF
[Unit]
Description=RustDesk Relay Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/hbbr -k _
WorkingDirectory=${DATA_DIR}
Restart=always
User=root
[Install]
WantedBy=multi-user.target
EOF
# 6. 启动并显示 Key
systemctl daemon-reload
systemctl enable --now rustdesk-hbbs rustdesk-hbbr
echo "------------------------------------------------"
echo "RustDesk 安装完成!"
echo "数据存储路径: $DATA_DIR"
echo "正在等待 Key 生成..."
sleep 3
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
echo "------------------------------------------------"