《树莓派4B家庭服务器搭建指南》第二十一期:安装开源远程桌面服务rustdesk, 内网丝滑,外网流畅控制


title: 《树莓派4B家庭服务器搭建指南》第二十一期:安装开源远程桌面服务rustdesk, 内网丝滑,外网流畅控制Windows,macOS,Linux设备

tags:

  • 个人成长
    categories:
  • 树莓派不吃灰

前段时间, 有一台老式MacBook Pro被我改造成了影视资源解码主机, 《树莓派4B家庭服务器搭建指南》第十七期:树莓派配合性能更好的闲置笔记本搭建开源免费jellyfin私人影院 https://v2fy.com/p/2023-06-10-jellyfin-1686388142000/ , 我想通过远程桌面访问这台MacBook Pro, 发现Mac虽然原生支持VNC连接,但实际用起来经常画面撕裂,于是我找了一款开源的远程桌面程序rustdesk, 将其服务部署在树莓派上,实现局域网设备丝滑访问, 外网设备也可以通过内网穿透直接访问macOS

rustdesk 的Github开源地址 https://github.com/rustdesk/rustdesk

在树莓派部署rustdesk,实现局域网Windows控制macOS

# 创建挂载目录
mkdir -p /opt/rustdesk
chmod 755 -R /opt/rustdesk
# 创建用于存放docker-compose.yml的目录
mkdir -p /opt/rustdesk-docker-compose-yml
chmod 755 -R /opt/rustdesk-docker-compose-yml
# 创建docker-compose.yml
touch /opt/rustdesk-docker-compose-yml/docker-compose.yml 

docker-compose.yml中写入配置内容

cat << 'EOF' > /opt/rustdesk-docker-compose-yml/docker-compose.yml
version: '3'

networks:
  rustdesk-net:
    external: false

services:
  hbbs:
    container_name: hbbs
    ports:
      - 21115:21115
      - 21116:21116
      - 21116:21116/udp
      - 21118:21118
    image: rustdesk/rustdesk-server:latest
    command: hbbs -r rustdesk.example.com:21117
    volumes:
      - /opt/rustdesk:/root
    networks:
      - rustdesk-net
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: hbbr
    ports:
      - 21117:21117
      - 21119:21119
    image: rustdesk/rustdesk-server:latest
    command: hbbr
    volumes:
      - /opt/rustdesk:/root
    networks:
      - rustdesk-net
    restart: unless-stopped
EOF
  • 启动服务

    cd /opt/rustdesk-docker-compose-yml/
    sudo docker-compose up -d

我的树莓派局域网IP为192.168.50.10, 将192.168.50.10 填入rustdesk 的客户端即可(发起端和被控端都需要下载安装rustdesk客户端,并填写好ID Server), rustdesk客户端下载地址 https://github.com/rustdesk/rustdesk/releases

客户端保存后,会显示配置成功

配置完成后,我们就可以通过树莓派运行的rustdesk服务,进行局域网内设备相互远程控制了

被控制主机的ID不会变(除非用户主动改),但密码经常会随机变化,如果你想使用固定密码,可以直接按照下图进行设置

显示方面可以自定义设置,局域网的延迟可以到5ms, 用Windows控制macOS非常顺滑跟手

遇到的一个小坑:如果MacBook不外接显示器合上盖子,rustdesk经常会几十秒就自动断开,如果你也是想控制MacBook,请不要合上盖子。

让家里树莓派的rustdesk服务支持外网访问

外网访问其实也很简单,用frp做几个端口映射就好了

  • 在树莓派的frpc.ini文件中新增以下配置,重启frpc即可

    [rustdesk-tcp-21115]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 21115
    remote_port = 21115

    [rustdesk-tcp-21116]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 21116
    remote_port = 21116

    [rustdesk-udp-21116]
    type = udp
    local_ip = 127.0.0.1
    local_port = 21116
    remote_port = 21116

    [rustdesk-tcp-21117]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 21117
    remote_port = 21117

    [rustdesk-tcp-21118]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 21118
    remote_port = 21118

    [rustdesk-tcp-21119]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 21119
    remote_port = 21119

如果想让内网主机A 可以接收外网连接,我们需要将内网主机A的ID server设置为云服务器IP(云服务器的IP为公网IP, 会接收请求,并转发到树莓派)

当然,外网发起控制的主机,也要设置外网IP, 才能发起控制。

如果发起控制端 在家庭内网环境下,可以将ID server 设置为树莓派内网IP,也可以设置为云服务器公网IP

直接将rustdesk服务放到服务器运行不就好了,为何要放在树莓派运行?

rustdesk有两个服务,hbbs负责验证签名,hbbr负责转发远程控制产生的数据包。

我们在设置界面,只填写了hbbs信息(ID server) ,没有填写hbbr信息,hbbr就会自动判断是否走公网流量。

如果我们的被控主机发起控制的主机都在内网,二者就会直接走内网流量,体验将无比丝滑。

当然控制端或被控端,一旦离开了内网,就走云服务器转发流量。

那ID server到底应该怎么填

只要在外网,控制端和被控制端,一律填写外网IP!

如果在内网,控制端和被控端,依然可以全部填写外网IP;(如果被控端和控制端设备同时在内网,会自动走内网流量,无比顺滑)

如果某台设备,只希望被内网的设备连接,则填写内网IP!

(内网IP是指树莓派IP, 外网IP是指云服务器IP)

小结

我看到有些youtuber把mac mini改成了家庭服务器,由于macOS对VNC协议的负优化,导致画面撕裂,于是只能捏着鼻子用ssh连接服务器,但我感觉放弃macOS顺滑的动画太可惜了, 于是就有了树莓派运行开源rustdesk的方案。

虽然有Teamviewer , ToDesk , 向日葵等方案,但都无法实现内网丝滑流畅的远程桌面体验。

这个树莓派rustdesk方案保证了远程桌面内网丝滑,外网流畅,即使没有树莓派,也可以通过虚拟机运行rustdesk服务器实现,让老旧的MacBook焕发流光溢彩。

相关推荐
说私域2 分钟前
精准零售驱动下的中国零售业变革与“开源 2+1 链动小程序”应用探究
人工智能·小程序·开源
Karoku06616 分钟前
【docker集群应用】Docker网络与资源控制
运维·数据库·docker·容器
梦游钓鱼22 分钟前
pyshark安装使用,ubuntu:20.04
linux·运维·ubuntu
战族狼魂1 小时前
CentOS 上安装各种应用的命令行总结
linux·运维·centos
学Linux的语莫1 小时前
ansible变量
linux·运维·服务器·ansible
爱吃喵的鲤鱼1 小时前
Linux——文件系统清尾、动静态库
linux·运维·服务器
Baihai IDP2 小时前
从 Llama 1 到 3.1:Llama 模型架构演进详解
人工智能·ai·开源·llm·llama
最数据2 小时前
Linux或者Docker中时区查询和修改(差8小时问题)
linux·运维·服务器·docker·.net
mahuifa2 小时前
ubuntu设置程序开机自启动
服务器·ubuntu·开机自启动
皓月盈江2 小时前
Linux宝塔部署wordpress网站更换服务器IP后无法访问管理后台和打开网站页面显示错乱
linux·服务器·wordpress·无法访问wordpess后台·打开网站页面错乱·linux宝塔面板·wordpress更换服务器