无需依赖第三方服务,掌握完全控制的远程桌面体验
在现代工作和生活中,远程访问和控制计算机的需求日益增长。RustDesk作为一款开源的远程桌面软件,提供了自托管的解决方案,让您能够完全掌控自己的远程桌面服务。本文将指导您如何使用Docker部署RustDesk服务器。
RustDesk是一款用Rust编写的开源远程桌面软件,具有轻量级、高效、安全等特点。它支持Windows、Linux、macOS等多个操作系统,可以轻松实现跨平台远程桌面连接。
与TeamViewer、AnyDesk等商业解决方案不同,RustDesk允许您自建服务器,这意味着:
在开始部署之前,您需要准备:
如果您的系统尚未安装Docker,可以按照以下步骤安装:
# 更新包索引
sudo apt update
# 安装依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加Docker仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新包列表并安装Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
# 验证安装
sudo docker run hello-world
为了避免每次使用Docker都需要sudo权限,可以将当前用户添加到docker组:
sudo usermod -aG docker ${USER}
su - ${USER}
RustDesk服务器由两个主要组件组成:hbbs(信令服务器)和hbbr(中继服务器)。每个组件都需要特定的端口才能正常工作:
| 组件 | 端口 | 协议 | 用途 | 是否必需 |
|---|---|---|---|---|
| hbbs | 21114/TCP | TCP | 网页控制台(仅Pro版本可用) | 可选 |
| hbbs | 21115/TCP | TCP | NAT类型测试 | 必需 |
| hbbs | 21116/TCP | TCP | TCP打洞和连接服务 | 必需 |
| hbbs | 21116/UDP | UDP | ID注册和心跳服务 | 必需 |
| hbbs | 21118/TCP | TCP | 支持网页客户端 | 可选 |
| hbbr | 21117/TCP | TCP | 中继服务 | 必需 |
| hbbr | 21119/TCP | TCP | 支持网页客户端 | 可选 |
注意:如果您不需要网页客户端支持,可以禁用端口21118和21119。
最简单的部署方式是直接使用Docker命令运行RustDesk服务器:
# 创建数据目录
mkdir rustdesk-data
cd rustdesk-data
# 拉取RustDesk服务器镜像
sudo docker pull rustdesk/rustdesk-server
# 运行hbbs(信令服务器)
sudo docker run --name hbbs -v $(pwd):/root -td --net=host --restart unless-stopped rustdesk/rustdesk-server hbbs
# 运行hbbr(中继服务器)
sudo docker run --name hbbr -v $(pwd):/root -td --net=host --restart unless-stopped rustdesk/rustdesk-server hbbr
注意:--net=host参数仅在Linux上有效,它使得hbbs/hbbr能够看到真实的传入IP地址而不是容器IP(172.17.0.1)。如果在Windows上运行,请省略sudo和--net=host参数。
为了更方便地管理容器,建议使用Docker Compose部署。创建一个docker-compose.yml文件:
version: '3'
services:
hbbs:
container_name: hbbs
image: rustdesk/rustdesk-server:latest
command: hbbs
volumes:
- ./data:/root
network_mode: "host"
environment:
- RELAY_SERVERS=your_hbbr_ip
depends_on:
- hbbr
restart: unless-stopped
hbbr:
container_name: hbbr
image: rustdesk/rustdesk-server:latest
command: hbbr
volumes:
- ./data:/root
network_mode: "host"
environment:
- RELAY_SERVERS=your_hbbr_ip
restart: unless-stopped
然后运行以下命令启动服务:
docker-compose up -d
如果需要配置特定环境变量,如设置ALWAYS_USE_RELAY=Y,可以在docker-compose.yml中的environment部分添加。
如果您更喜欢使用Podman而不是Docker,可以使用Quadlet来管理容器。Quadlet是集成到Podman 4.4+中的工具,旨在简化在systemd下运行容器的过程。
创建两个Quadlet配置文件:
hbbs.container:
[Unit]
Description=RustDesk hbbs container
After=network-online.target
[Container]
AutoUpdate=registry
Image=ghcr.io/rustdesk/rustdesk-server:latest
Exec=hbbs
Volume=/path/to/rustdesk-server/data:/root
Network=host
[Service]
Restart=always
[Install]
WantedBy=default.target
hbbr.container:
[Unit]
Description=RustDesk hbbr container
After=network-online.target
[Container]
AutoUpdate=registry
Image=ghcr.io/rustdesk/rustdesk-server:latest
Exec=hbbr
Volume=/path/to/rustdesk-server/data:/root
Network=host
[Service]
Restart=always
[Install]
WantedBy=default.target
将这两个文件放置在/etc/containers/systemd/目录下,然后运行:
# 重新加载systemd配置
systemctl daemon-reload
# 启动服务
systemctl start hbbs.service
systemctl start hbbr.service
# 设置开机自启
systemctl enable hbbs.service
systemctl enable hbbr.service
RustDesk服务器启动后,会在数据目录中生成配置文件。您可以根据需要修改配置:
id_ed25519.pub和id_ed25519文件,这是服务器的密钥对。客户端需要使用公钥进行连接,以增强安全性。如果您希望使用网页客户端,需要配置反向代理和SSL证书。以下是一个Nginx配置示例:
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
location / {
proxy_pass http://127.0.0.1:21118;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
docker system prune清理无用的Docker资源。服务器部署完成后,您需要在客户端配置中使用自己的服务器:
如果遇到连接问题,可以尝试以下步骤:
telnet或nc命令检查所需端口是否正常开放docker logs hbbs和docker logs hbbr查看容器日志,寻找错误信息--net=host参数遇到问题,尝试移除它并使用端口映射通过本文的指导,您应该已经成功使用Docker部署了自己的RustDesk服务器。自建远程桌面服务器不仅提供了更高的数据安全性和控制权,还能根据您的特定需求进行定制化配置。
RustDesk的强大功能结合Docker的便捷部署,使得任何人都能轻松搭建专业的远程桌面基础设施。无论您是用于远程办公、技术支持还是设备管理,这个解决方案都能提供稳定可靠的服务。