Docker Compose编排RustDesk服务器:一键部署与高可用配置

张开发
2026/4/13 10:09:34 15 分钟阅读

分享文章

Docker Compose编排RustDesk服务器:一键部署与高可用配置
1. RustDesk与Docker Compose的完美结合RustDesk作为一款开源的远程桌面解决方案近年来凭借其轻量级、跨平台和高性能的特点赢得了众多开发者和运维人员的青睐。与传统的TeamViewer或AnyDesk相比RustDesk最大的优势在于支持自建服务器让用户完全掌控自己的数据隐私和连接质量。在实际部署过程中我发现很多用户会遇到一个共同的问题如何快速、可靠地搭建RustDesk服务器传统的手动安装方式不仅步骤繁琐而且难以保证服务的稳定性。这正是Docker Compose大显身手的地方。通过将hbbsID服务器和hbbr中继服务器两个核心服务编排在一起我们可以实现一键部署和集中管理。记得我第一次尝试部署RustDesk时花了整整一个下午时间配置各种参数和端口。后来改用Docker Compose后整个过程缩短到了5分钟。这种效率的提升对于需要频繁部署测试环境的技术人员来说简直是福音。更重要的是使用Compose文件定义的服务配置可以版本化管理随时回滚到任意历史版本。2. 环境准备与基础配置2.1 系统要求与依赖安装在开始之前我们需要确保部署环境满足基本要求。推荐使用Linux系统如Ubuntu 20.04或CentOS 7至少1GB内存和2核CPU。虽然RustDesk本身资源占用不高但考虑到Docker的运行开销这个配置能保证服务稳定运行。首先安装必要的依赖# Ubuntu/Debian sudo apt update sudo apt install -y docker.io docker-compose # CentOS/RHEL sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker安装完成后建议将当前用户加入docker组避免每次都要sudosudo usermod -aG docker $USER newgrp docker # 立即生效2.2 防火墙配置RustDesk需要开放以下端口才能正常工作TCP: 21115-21119UDP: 21116配置防火墙规则以firewalld为例sudo firewall-cmd --permanent --add-port21115-21119/tcp sudo firewall-cmd --permanent --add-port21116/udp sudo firewall-cmd --reload如果使用云服务器记得在安全组规则中也放行这些端口。我曾经遇到过因为疏忽了云平台安全组配置导致服务明明正常运行却无法连接的尴尬情况。3. Docker Compose编排实战3.1 编写docker-compose.yml创建一个项目目录比如~/rustdesk-server然后新建docker-compose.yml文件version: 3.8 services: hbbs: image: rustdesk/rustdesk-server container_name: rustdesk-hbbs command: hbbs -r your-server-domain.com -k your-custom-key network_mode: host volumes: - ./data/hbbs:/root restart: unless-stopped healthcheck: test: [CMD-SHELL, netstat -tuln | grep 21116] interval: 30s timeout: 10s retries: 3 hbbr: image: rustdesk/rustdesk-server container_name: rustdesk-hbbr command: hbbr network_mode: host volumes: - ./data/hbbr:/root restart: unless-stopped depends_on: hbbs: condition: service_healthy这个配置有几个关键点值得注意network_mode: host让容器直接使用主机网络省去了端口映射的麻烦restart: unless-stopped确保服务异常退出时会自动重启为hbbs添加了健康检查确保端口监听正常hbbr通过depends_on确保在hbbs健康后才启动3.2 配置参数详解在command参数中有几个关键选项需要根据实际情况调整-r参数指定服务器公网IP或域名这是客户端连接的关键-k参数设置自定义密钥如果不设置系统会随机生成一个数据卷挂载也很重要它将容器内的数据持久化到主机hbbs的/root目录保存了密钥文件和连接信息hbbr的/root目录保存了中继服务的运行数据建议使用相对路径如./data而不是绝对路径这样迁移时更方便。我曾经因为使用绝对路径导致迁移服务器时各种权限问题花了半天时间才解决。4. 高级配置与优化4.1 高可用性配置要让RustDesk服务更加稳定可靠我们可以考虑以下几个优化点多实例部署hbbs: deploy: replicas: 2 restart_policy: condition: on-failure delay: 5s max_attempts: 3资源限制resources: limits: cpus: 1 memory: 512M reservations: memory: 256M日志管理logging: driver: json-file options: max-size: 10m max-file: 34.2 监控与告警结合Prometheus和Grafana可以构建完整的监控体系配置cAdvisor监控容器资源使用情况使用Node Exporter监控主机指标为RustDesk服务配置关键指标告警示例告警规则可以包括服务端口不可达内存使用超过80%连接数异常波动我曾经通过监控发现了一个内存泄漏问题及时处理避免了服务中断。监控系统就像是服务的健康体检报告能提前发现潜在问题。5. 客户端配置与使用技巧5.1 客户端连接配置服务端部署完成后需要在客户端进行简单配置下载对应平台的客户端在设置→网络→ID服务器中输入你的服务器地址如果需要密钥认证在密钥字段填入docker-compose.yml中设置的-k参数值一个小技巧如果使用域名而非IP地址建议在客户端配置中同时填写域名和IP这样即使DNS解析出现问题客户端还能尝试直接连接IP。5.2 常见问题排查遇到连接问题时可以按照以下步骤排查检查服务是否正常运行docker ps -a docker logs rustdesk-hbbs验证端口监听状态netstat -tulnp | grep 2111测试网络连通性telnet your-server-ip 21116检查密钥是否匹配cat ./data/hbbs/id_ed25519.pub记得有一次我帮同事排查问题发现竟然是客户端和服务端的系统时间相差了30分钟导致SSL握手失败。这种细节问题往往最容易忽视。

更多文章