├── README.md └── rustdesktool.sh /README.md: -------------------------------------------------------------------------------- 1 | # RustDesk-Server安装脚本 2 | 3 | ## 安装&卸载 4 | 5 | ### 一键安装 6 | > 推荐 root 用户 7 | 8 | ```sh 9 | wget -N http://raw.githubusercontent.com/sshpc/rustdesktool/main/rustdesktool.sh && chmod +x ./rustdesktool.sh && ./rustdesktool.sh 10 | ``` 11 | 12 | > 再次执行 13 | 14 | ```sh 15 | ./rustdesktool.sh 16 | ``` 17 | 18 | ## 客户端下载 19 | rustdesk官方 支持 (Windows、Ubuntu、Mac、Android..) 20 | 21 | https://rustdesk.com/download 22 | 23 | ## 客户端配置 24 | 25 | >默认安装后使用的是官方的服务器,需要换成自己的 26 | 27 | 客户端 设置-网络 (window 解锁安全设置): 28 | * ID服务器地址:<你的服务器IP> 29 | * 中继服务器地址:<你的服务器IP> 30 | * API服务器地址:留空 31 | * 秘钥:你的服务器公钥(安装后获取) 32 | 33 | > 默认安装目录下的 id_ed25519.pub 34 | 35 | 36 | ## 其他 37 | 38 | ### 端口 39 | 40 | >若连接失败,请检查防火墙端口是否打开 41 | 42 | hbbs 监听21115(tcp), 21116(tcp/udp), 21118(tcp) 43 | 44 | hbbr 监听21117(tcp), 21119(tcp) 45 | 46 | * 21115是hbbs用作NAT类型测试 47 | * 21116/UDP是hbbs用作ID注册与心跳服务 48 | * 21116/TCP是hbbs用作TCP打洞与连接服务 49 | * 21117是hbbr用作中继服务 50 | 51 | 21118和21119是为了支持网页客户端。如果不需要网页客户端可以不开。 52 | 53 | 54 | ### 官方 rep: 55 | 56 | https://github.com/rustdesk/rustdesk 57 | https://github.com/rustdesk/rustdesk-server 58 | 59 | ### 默认安装目录 60 | /usr/local/rustdesk-sever 61 | 62 | ### 服务安装目录 63 | 64 | /usr/lib/systemd/system/RustDeskHbbr.service 65 | /usr/lib/systemd/system/RustDeskHbbs.service 66 | 67 | ### 支持国内环境 68 | 69 | 镜像支持: https://gitmirror.com/ 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /rustdesktool.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | export LANG=en_US.UTF-8 3 | 4 | #初始化 5 | initself() { 6 | version='1.2.3' 7 | #官方版本号 8 | rustdeskserverversion='1.1.14' 9 | installType='yum -y install' 10 | removeType='yum -y remove' 11 | upgrade="yum -y update" 12 | release='linux' 13 | #菜单名称(默认首页) 14 | menuname='首页' 15 | #安装目录 16 | installdirectory='/usr/local/rustdesk-sever' 17 | 18 | #字体颜色定义 19 | _red() { 20 | printf '\033[0;31;31m%b\033[0m' "$1" 21 | echo 22 | } 23 | _green() { 24 | printf '\033[0;31;32m%b\033[0m' "$1" 25 | echo 26 | } 27 | _yellow() { 28 | printf '\033[0;31;33m%b\033[0m' "$1" 29 | echo 30 | } 31 | _blue() { 32 | printf '\033[0;31;36m%b\033[0m' "$1" 33 | echo 34 | } 35 | #按任意键继续 36 | waitinput() { 37 | echo 38 | read -n1 -r -p "按任意键继续...(退出 Ctrl+C)" 39 | } 40 | #菜单头部 41 | menutop() { 42 | clear 43 | _green '# RustDesk-Server 安装脚本' 44 | _green '# Github ' 45 | _blue '# You Server:'${release} 46 | echo 47 | _blue ">~~~~~~~~~~~~~~ rustdesk-server tool ~~~~~~~~~~~~< v: $version" 48 | echo 49 | _yellow "当前菜单: $menuname " 50 | echo 51 | } 52 | #菜单渲染 53 | menu() { 54 | menutop 55 | options=("$@") 56 | num_options=${#options[@]} 57 | # 计算数组中的字符最大长度 58 | max_len=0 59 | for ((i = 0; i < num_options; i++)); do 60 | # 获取当前字符串的长度 61 | str_len=${#options[i]} 62 | 63 | # 更新最大长度 64 | if ((str_len > max_len)); then 65 | max_len=$str_len 66 | fi 67 | done 68 | # 渲染菜单 69 | for ((i = 0; i < num_options; i += 4)); do 70 | printf "%s%*s " "$((i / 2 + 1)): ${options[i]}" "$((max_len - ${#options[i]}))" 71 | if [[ "${options[i + 2]}" != "" ]]; then printf "$((i / 2 + 2)): ${options[i + 2]}"; fi 72 | echo 73 | echo 74 | done 75 | echo 76 | printf '\033[0;31;36m%b\033[0m' "q: 退出 " 77 | if [[ "$number" != "" ]]; then printf '\033[0;31;36m%b\033[0m' "b: 返回 0: 首页"; fi 78 | echo 79 | echo 80 | # 获取用户输入 81 | read -ep "请输入命令号: " number 82 | if [[ $number -ge 1 && $number -le $((num_options / 2)) ]]; then 83 | #找到函数名索引 84 | action_index=$((2 * (number - 1) + 1)) 85 | #函数名赋值 86 | parentfun=${options[action_index]} 87 | #函数执行 88 | ${options[action_index]} 89 | elif [[ $number == 0 ]]; then 90 | main 91 | elif [[ $number == 'b' ]]; then 92 | ${FUNCNAME[3]} 93 | elif [[ $number == 'q' ]]; then 94 | echo 95 | exit 96 | else 97 | echo 98 | _red '输入有误 回车返回首页' 99 | waitinput 100 | main 101 | fi 102 | } 103 | clear 104 | } 105 | 106 | #检查系统 107 | checkSystem() { 108 | if [[ -n $(find /etc -name "redhat-release") ]] || grep /usr/lib/systemd/system/RustDeskHbbr.service 269 | [Unit] 270 | Description=RustDesk Hbbr 271 | After=network.target 272 | 273 | [Service] 274 | User=root 275 | Type=simple 276 | WorkingDirectory=$installdirectory 277 | ExecStart=$installdirectory/hbbr -k _ 278 | ExecStop=/bin/kill -TERM \$MAINPID 279 | 280 | [Install] 281 | WantedBy=multi-user.target 282 | EOF 283 | 284 | if [ ! -f "/usr/lib/systemd/system/RustDeskHbbs.service" ]; then 285 | #文件不存在 286 | touch /usr/lib/systemd/system/RustDeskHbbs.service 287 | fi 288 | 289 | cat </usr/lib/systemd/system/RustDeskHbbs.service 290 | [Unit] 291 | Description=RustDesk Hbbs 292 | After=network.target 293 | 294 | [Service] 295 | User=root 296 | Type=simple 297 | WorkingDirectory=$installdirectory 298 | ExecStart=$installdirectory/hbbs -k _ 299 | ExecStop=/bin/kill -TERM \$MAINPID 300 | 301 | [Install] 302 | WantedBy=multi-user.target 303 | EOF 304 | 305 | _blue "配置开机自启" 306 | systemctl enable RustDeskHbbs 307 | systemctl enable RustDeskHbbr 308 | echo 309 | 310 | #启动服务 311 | startservice 312 | 313 | clear 314 | _green '安装成功' 315 | viewkey 316 | 317 | local ip="$(wget -q -T10 -O- ipinfo.io/ip)" 318 | _green '公网 IP:' 319 | echo $ip 320 | echo 321 | _yellow "请手动放行防火墙 TCP & UDP端口 21115-21119" 322 | echo 323 | 324 | } 325 | 326 | 327 | #主函数 328 | main() { 329 | 330 | menuname='首页' 331 | options=("安装" install "卸载" uninstall "查看状态" viewstatus "查看key" viewkey "启动服务" startservice "停止服务" stopservice "升级脚本" updateself) 332 | menu "${options[@]}" 333 | } 334 | 335 | initself 336 | checkSystem 337 | main 338 | --------------------------------------------------------------------------------