127 lines
3.8 KiB
Bash
127 lines
3.8 KiB
Bash
#!/bin/bash
|
||
|
||
# ================= 配置区域 =================
|
||
# 回归官方默认安装路径
|
||
DATA_DIR="/var/lib/rustdesk-server"
|
||
# ===========================================
|
||
|
||
# --- 功能: 检测安装并询问 ---
|
||
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
|
||
# 使用 purge 彻底清除旧配置,确保干净重装
|
||
dpkg -P rustdesk-server-hbbs rustdesk-server-hbbr
|
||
apt-get purge -y rustdesk-server-hbbs rustdesk-server-hbbr
|
||
# 询问是否删除数据(Key)
|
||
read -p "是否连同旧的 Key 和数据文件一起删除?(y/n) [推荐 n 保留]: " del_data
|
||
if [[ "$del_data" == "y" || "$del_data" == "Y" ]]; then
|
||
rm -rf "$DATA_DIR"
|
||
echo ">>> 旧数据已清除。"
|
||
else
|
||
echo ">>> 旧数据已保留。"
|
||
fi
|
||
echo ">>> 卸载完成,准备开始重新安装..."
|
||
;;
|
||
* )
|
||
echo ">>> 已取消操作,脚本退出。"
|
||
exit 0
|
||
;;
|
||
esac
|
||
fi
|
||
|
||
# --- 开始安装流程 ---
|
||
|
||
# 1. 基础环境修复
|
||
echo "正在修复基础环境..."
|
||
apt-get update
|
||
apt-get install -y curl wget lsof psmisc
|
||
|
||
# 2. 准备目录 (使用官方标准路径)
|
||
if [ ! -d "$DATA_DIR" ]; then
|
||
echo "正在创建标准数据目录: $DATA_DIR"
|
||
mkdir -p "$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 服务 (写入 /var/lib/rustdesk-server 路径)
|
||
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
|
||
# -r 指定 IP, -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"
|
||
fi
|
||
echo "------------------------------------------------" |