From cd617cc8546abd63e79ea0002527682f9ef79e6d Mon Sep 17 00:00:00 2001 From: xzx3344521 Date: Sat, 1 Nov 2025 21:38:28 +0800 Subject: [PATCH] Update ru --- ru | 189 ++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 126 insertions(+), 63 deletions(-) diff --git a/ru b/ru index e5ba872..390bf19 100644 --- a/ru +++ b/ru @@ -1,6 +1,6 @@ #!/bin/bash -# RustDesk Server 一键部署脚本 - 修复密钥问题 +# RustDesk Server 一键部署脚本 - 基于官方模板 set -e echo "========================================" @@ -24,82 +24,110 @@ mkdir -p /data/rustdesk/api echo "清理旧容器..." docker rm -f rustdesk-server 2>/dev/null || true -# 生成有效的密钥对 -echo "生成有效的密钥对..." -docker run --rm -v /data/rustdesk/server:/data lejianwen/rustdesk-server-s6:latest genkeypair +# 生成有效的 JWT 密钥(32位base64) +JWT_KEY=$(openssl rand -base64 24 | tr -d '\n' | cut -c1-32) +echo "生成 JWT 密钥: $JWT_KEY" -# 显示生成的公钥 -if [ -f "/data/rustdesk/server/id_ed25519.pub" ]; then - GENERATED_KEY=$(cat /data/rustdesk/server/id_ed25519.pub) - echo "生成的公钥: $GENERATED_KEY" -else - echo "使用备选方案生成密钥..." - # 如果上面的方法失败,使用备选方案 - docker run --rm lejianwen/rustdesk-server-s6:latest genkeypair > /tmp/keypair.txt 2>/dev/null || true - if [ -f "/tmp/keypair.txt" ]; then - GENERATED_KEY=$(grep -o 'key:.*' /tmp/keypair.txt | cut -d' ' -f2 | head -1) - echo "生成的公钥: $GENERATED_KEY" - else - # 最后备选:使用一个已知有效的密钥 - GENERATED_KEY="r0cDMF1eJa9zNqnUPB8ylbEJJWZqj6OdJnOrNhmWSLU=" - echo "使用默认密钥: $GENERATED_KEY" - fi -fi - -# 使用 Docker Compose 启动 +# 基于官方模板生成 Docker Compose 文件 cat > docker-compose.yml << EOF version: '3' +networks: + rustdesk-net: + external: false + services: - rustdesk-server: - image: lejianwen/rustdesk-server-s6:latest - container_name: rustdesk-server - restart: unless-stopped + rustdesk: ports: - - "21115:21115" - - "21116:21116" - - "21116:21116/udp" - - "21117:21117" - - "21118:21118" - - "21119:21119" + - 21114:21114 + - 21115:21115 + - 21116:21116 + - 21116:21116/udp + - 21117:21117 + - 21118:21118 + - 21119:21119 + image: lejianwen/rustdesk-server-s6:latest environment: - - RELAY_IP=$SERVER_IP - - SERVER_IP=$SERVER_IP - - ENCRYPTED_ONLY=0 + - RELAY=${SERVER_IP}:21117 + - ENCRYPTED_ONLY=1 + - MUST_LOGIN=y - TZ=Asia/Shanghai + # RustDesk API 配置 + - RUSTDESK_API_RUSTDESK_ID_SERVER=${SERVER_IP}:21116 + - RUSTDESK_API_RUSTDESK_RELAY_SERVER=${SERVER_IP}:21117 + - RUSTDESK_API_RUSTDESK_API_SERVER=http://${SERVER_IP}:21114 + - RUSTDESK_API_KEY_FILE=/data/id_ed25519.pub + - RUSTDESK_API_JWT_KEY=${JWT_KEY} + # 其他重要配置 + - RUSTDESK_API_APP_REGISTER=false + - RUSTDESK_API_APP_DISABLE_PWD_LOGIN=false + - RUSTDESK_API_APP_CAPTCHA_THRESHOLD=3 + - RUSTDESK_API_APP_BAN_THRESHOLD=5 + - RUSTDESK_API_GORM_TYPE=sqlite + - RUSTDESK_API_LANG=zh-CN + - RUSTDESK_API_APP_WEB_CLIENT=1 + - RUSTDESK_API_APP_SHOW_SWAGGER=0 volumes: - /data/rustdesk/server:/data - - /data/rustdesk/api:/root + - /data/rustdesk/api:/app/data + networks: + - rustdesk-net + restart: unless-stopped EOF +echo "Docker Compose 文件已生成" + +# 预生成密钥对(解决密钥无效问题) +echo "预生成密钥对..." +if ! docker run --rm -v /data/rustdesk/server:/data lejianwen/rustdesk-server-s6:latest genkeypair 2>/dev/null; then + echo "使用备选方法生成密钥..." + # 如果上面的方法失败,使用容器内命令生成 + docker run --rm -v /data/rustdesk/server:/data lejianwen/rustdesk-server-s6:latest /bin/bash -c " + cd /data + if [ ! -f id_ed25519 ]; then + /usr/bin/rustdesk --gen-keypair + fi + " 2>/dev/null || true +fi + +# 检查密钥是否生成成功 +if [ -f "/data/rustdesk/server/id_ed25519.pub" ]; then + PUBLIC_KEY=$(cat /data/rustdesk/server/id_ed25519.pub) + echo "✓ 公钥生成成功: $PUBLIC_KEY" +else + echo "⚠ 密钥生成失败,容器将自动生成" +fi + +# 启动服务 echo "启动 RustDesk 服务..." -docker-compose up -d +if command -v docker &> /dev/null && docker compose version &> /dev/null; then + docker compose up -d +else + docker-compose up -d +fi echo "等待服务启动..." sleep 30 -# 检查容器状态 -echo "检查容器状态..." -if docker ps | grep -q rustdesk-server; then - CONTAINER_STATUS=$(docker inspect rustdesk-server --format='{{.State.Status}}') - if [ "$CONTAINER_STATUS" = "running" ]; then - echo "✓ RustDesk 服务运行正常" - - # 获取实际使用的密钥 - if [ -f "/data/rustdesk/server/id_ed25519.pub" ]; then - ACTUAL_KEY=$(cat /data/rustdesk/server/id_ed25519.pub) - echo "实际使用的公钥: $ACTUAL_KEY" - else - ACTUAL_KEY=$GENERATED_KEY - fi +# 检查服务状态 +echo "检查服务状态..." +if [ "$(docker inspect -f '{{.State.Running}}' rustdesk 2>/dev/null)" = "true" ]; then + echo "✓ RustDesk 服务运行正常" + + # 获取实际使用的公钥 + if [ -f "/data/rustdesk/server/id_ed25519.pub" ]; then + ACTUAL_PUBLIC_KEY=$(cat /data/rustdesk/server/id_ed25519.pub) else - echo "容器状态: $CONTAINER_STATUS" - echo "查看日志..." - docker logs rustdesk-server --tail 20 + # 从容器内获取 + ACTUAL_PUBLIC_KEY=$(docker exec rustdesk cat /data/id_ed25519.pub 2>/dev/null || echo "请在容器内查看") fi else - echo "✗ 服务启动失败,查看日志..." - docker logs rustdesk-server + echo "✗ 服务启动异常,查看日志..." + if command -v docker &> /dev/null && docker compose version &> /dev/null; then + docker compose logs + else + docker-compose logs + fi exit 1 fi @@ -109,22 +137,57 @@ echo "========================================" echo " RustDesk 部署完成" echo "========================================" echo "服务器 IP: $SERVER_IP" -echo "公钥密钥: $ACTUAL_KEY" +echo "公钥密钥: $ACTUAL_PUBLIC_KEY" +echo "JWT 密钥: $JWT_KEY" echo "管理密码: $FIXED_PASSWORD" echo "" echo "服务端口:" +echo " - API 服务: 21114" echo " - HBBS: 21115 (TCP)" echo " - HBBS: 21116 (TCP/UDP)" echo " - HBBR: 21117 (TCP)" -echo " - API: 21118-21119" +echo " - 其他服务: 21118-21119" echo "" echo "客户端连接信息:" echo " ID 服务器: $SERVER_IP:21116" echo " 中继服务器: $SERVER_IP:21117" -echo " 密钥: $ACTUAL_KEY" +echo " 密钥: $ACTUAL_PUBLIC_KEY" +echo "" +echo "Web 管理界面:" +echo " http://${SERVER_IP}:21114" +echo " 用户名: admin" +echo " 密码: $FIXED_PASSWORD" echo "" echo "管理命令:" -echo " 查看日志: docker logs -f rustdesk-server" -echo " 停止服务: docker stop rustdesk-server" -echo " 重启服务: docker restart rustdesk-server" +if command -v docker &> /dev/null && docker compose version &> /dev/null; then + echo " 查看日志: docker compose logs -f" + echo " 停止服务: docker compose down" + echo " 重启服务: docker compose restart" +else + echo " 查看日志: docker-compose logs -f" + echo " 停止服务: docker-compose down" + echo " 重启服务: docker-compose restart" +fi echo "========================================" + +# 保存配置信息 +cat > /data/rustdesk/deploy-info.txt << EOF +RustDesk Server 部署信息 +部署时间: $(date) +服务器 IP: $SERVER_IP +公钥密钥: $ACTUAL_PUBLIC_KEY +JWT 密钥: $JWT_KEY +管理密码: $FIXED_PASSWORD + +客户端配置: +ID 服务器: $SERVER_IP:21116 +中继服务器: $SERVER_IP:21117 +密钥: $ACTUAL_PUBLIC_KEY + +Web 管理界面: +地址: http://${SERVER_IP}:21114 +用户名: admin +密码: $FIXED_PASSWORD +EOF + +echo "配置信息已保存到: /data/rustdesk/deploy-info.txt"