【远程控制】基于 Docker Compose 与 Nginx 的 RustDesk 私有化部署实战指南

张开发
2026/4/20 7:17:29 15 分钟阅读

分享文章

【远程控制】基于 Docker Compose 与 Nginx 的 RustDesk 私有化部署实战指南
1. 为什么选择 RustDesk 私有化部署远程控制工具在工作和生活中的应用越来越广泛但很多商业方案要么收费昂贵要么存在隐私安全隐患。RustDesk 作为一款开源的远程控制解决方案不仅完全免费还支持自建服务器让你完全掌控自己的数据。我去年帮一家小型设计工作室部署了 RustDesk 私有服务器他们最看重的就是数据不会经过第三方服务器。与 TeamViewer 或 AnyDesk 相比RustDesk 的私有化部署有几个明显优势数据自主可控所有远程连接数据都在自己的服务器上流转无连接限制不像某些商业软件对免费用户限制连接时长定制灵活可以根据需求调整服务器配置和网络环境2. 环境准备与基础配置2.1 服务器基础要求在开始之前你需要准备一台满足以下条件的服务器操作系统推荐 Ubuntu 20.04/22.04 LTS 或 CentOS 7/8硬件配置至少 2核CPU、2GB内存实测4人同时连接占用约1.5GB内存网络环境公网IP地址开放80/443端口用于Web访问和21115-21116端口用于RustDesk服务我建议使用云服务商的虚拟机比如阿里云ECS或腾讯云CVM。记得在安全组中提前放行上述端口。如果你用的是家庭宽带可能需要联系ISP获取公网IP并配置端口转发。2.2 安装 Docker 和 Docker Compose大多数现代Linux发行版都可以用包管理器一键安装# Ubuntu/Debian sudo apt update sudo apt install -y docker.io docker-compose sudo systemctl enable --now docker # 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 docker-compose-plugin sudo systemctl enable --now docker安装完成后建议将当前用户加入docker组避免每次都要sudosudo usermod -aG docker $USER newgrp docker # 立即生效3. Docker Compose 编排 RustDesk 服务3.1 项目目录结构我们先创建一个清晰的项目目录mkdir -p ~/rustdesk-server/{data,nginx/conf.d,nginx/certs} cd ~/rustdesk-server这个结构包含了data/存放hbbs和hbbr的持久化数据nginx/conf.d/Nginx配置文件nginx/certs/TLS证书存放位置3.2 编写 docker-compose.yml创建docker-compose.yml文件内容如下version: 3.8 services: hbbs: image: rustdesk/rustdesk-server:latest container_name: hbbs restart: unless-stopped ports: - 21115:21115 - 21115:21115/udp environment: - RUSTDESK_RELAY_HOSThbbr volumes: - ./data/hbbs:/data hbbr: image: rustdesk/rustdesk-server:latest container_name: hbbr restart: unless-stopped ports: - 21116:21116 - 21116:21116/udp volumes: - ./data/hbbr:/data nginx: image: nginx:latest container_name: rustdesk-nginx restart: unless-stopped ports: - 80:80 - 443:443 volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/certs:/etc/letsencrypt depends_on: - hbbs - hbbr这个配置做了几件重要的事启动了hbbs信令服务器和hbbr中继服务器两个核心服务配置了Nginx作为反向代理和TLS终端设置了数据卷确保配置和日志持久化4. Nginx 配置与 TLS 加密4.1 配置 Nginx 反向代理在nginx/conf.d/目录下创建rustdesk.confserver { listen 80; server_name rustdesk.yourdomain.com; location / { return 301 https://$host$request_uri; } location /.well-known/acme-challenge/ { root /etc/letsencrypt; } } server { listen 443 ssl; server_name rustdesk.yourdomain.com; ssl_certificate /etc/letsencrypt/live/rustdesk.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/rustdesk.yourdomain.com/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass http://hbbs:21115; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; } location /relay { proxy_pass http://hbbr:21116; } }4.2 获取 Lets Encrypt 证书启动服务后获取证书docker-compose up -d docker exec -it rustdesk-nginx bash -c apt update apt install -y certbot certbot certonly --webroot -w /etc/letsencrypt -d rustdesk.yourdomain.com证书会自动存放在nginx/certs/目录下。建议设置crontab自动续期0 3 * * * docker exec rustdesk-nginx certbot renew --quiet5. 客户端配置与连接测试5.1 Windows 客户端配置下载并安装 RustDesk 客户端打开设置 → 网络 → ID/中继服务器填写ID服务器rustdesk.yourdomain.com:443中继服务器rustdesk.yourdomain.com:443保存设置并重启客户端5.2 连接问题排查如果连接失败可以按以下步骤排查检查服务器端口是否开放telnet rustdesk.yourdomain.com 443查看容器日志docker logs hbbs docker logs hbbr docker logs rustdesk-nginx测试Nginx代理是否正常工作curl -v https://rustdesk.yourdomain.com我在第一次部署时就遇到了Nginx配置错误导致客户端无法连接。后来发现是proxy_pass的端口写错了所以建议仔细检查每个配置项。

更多文章