无需依赖第三方服务,掌握完全控制的远程桌面体验
在现代工作和生活中,远程访问和控制计算机的需求日益增长。RustDesk作为一款开源的远程桌面软件,提供了自托管的解决方案,让您能够完全掌控自己的远程桌面服务。本文将指导您如何使用Docker部署RustDesk服务器。
为什么选择RustDesk?
RustDesk是一款用Rust编写的开源远程桌面软件,具有轻量级、高效、安全等特点。它支持Windows、Linux、macOS等多个操作系统,可以轻松实现跨平台远程桌面连接。
与TeamViewer、AnyDesk等商业解决方案不同,RustDesk允许您自建服务器,这意味着:
- 数据完全私有化:所有远程连接数据都经过您自己的服务器,不会经过第三方
- 无连接限制:不受商业软件的连接时间和设备数量限制
- 定制化配置:根据您的网络环境优化连接参数
- 成本节约:长期使用成本远低于商业软件授权费用
准备工作
在开始部署之前,您需要准备:
- 一台服务器:可以是云服务器(如AWS、Azure、腾讯云等)或本地服务器,建议至少1核CPU、2GB内存
- 安装Docker:确保系统已安装Docker和Docker Compose
- 域名(可选):如果您希望通过网页客户端访问,建议准备域名并配置SSL证书
- 防火墙配置:确保防火墙已开放必要的端口
安装Docker
如果您的系统尚未安装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服务器端口说明
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服务器
方法一:直接使用Docker命令
最简单的部署方式是直接使用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部署。创建一个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和Quadlet部署
如果您更喜欢使用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服务器启动后,会在数据目录中生成配置文件。您可以根据需要修改配置:
- 修改密钥:hbbs运行时会在根目录生成
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容器分配足够的CPU和内存资源。您可以使用Docker Desktop的资源设置或Docker运行参数进行调整。
- 日志管理:配置日志轮转,防止日志文件过大占用过多磁盘空间。
- 定期清理:定期运行
docker system prune
清理无用的Docker资源。
客户端连接配置
服务器部署完成后,您需要在客户端配置中使用自己的服务器:
- 下载客户端:从RustDesk官网下载对应操作系统的客户端
- 配置服务器地址:在客户端设置中输入您的服务器IP或域名
- 设置密钥:在客户端中输入服务器生成的公钥(可选,但建议设置以提高安全性)
- 连接测试:尝试在不同网络环境下的设备间建立连接测试
故障排除
如果遇到连接问题,可以尝试以下步骤:
- 检查端口开放:使用
telnet
或nc
命令检查所需端口是否正常开放 - 查看日志:使用
docker logs hbbs
和docker logs hbbr
查看容器日志,寻找错误信息 - 测试网络模式:如果使用
--net=host
参数遇到问题,尝试移除它并使用端口映射 - 检查防火墙:确保服务器防火墙和安全组规则允许相关端口的通信
- 验证密钥配置:确保客户端使用了正确的公钥
总结
通过本文的指导,您应该已经成功使用Docker部署了自己的RustDesk服务器。自建远程桌面服务器不仅提供了更高的数据安全性和控制权,还能根据您的特定需求进行定制化配置。
RustDesk的强大功能结合Docker的便捷部署,使得任何人都能轻松搭建专业的远程桌面基础设施。无论您是用于远程办公、技术支持还是设备管理,这个解决方案都能提供稳定可靠的服务。
评论