【远程控制】开箱即用的 RustDesk 自建服务端完整 Docker Compose 模板

一个 开箱即用的 RustDesk 自建服务端完整 Docker Compose 模板,包含:

  • hbbs(Broker)和 hbbr(Relay)服务
  • 公网访问端口映射
  • Nginx 反向代理 + TLS(Let's Encrypt 自动证书)
  • 可直接启动使用

目录结构示例

复制代码
rustdesk-server/
├─ docker-compose.yml
├─ nginx/
│   ├─ conf.d/
│   │   └─ rustdesk.conf
│   └─ certs/   # TLS 证书(Let's Encrypt 自动生成后存放)

docker-compose.yml

yaml 复制代码
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_HOST=hbbr
    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"      # HTTP 用于 Let's Encrypt 验证
      - "443:443"    # HTTPS
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/certs:/etc/letsencrypt

Nginx 配置示例:nginx/conf.d/rustdesk.conf

假设域名为 rustdesk.yourdomain.com

nginx 复制代码
server {
    listen 80;
    server_name rustdesk.yourdomain.com;

    # HTTP 重定向到 HTTPS
    location / {
        return 301 https://$host$request_uri;
    }

    # 用于 Let's Encrypt 自动验证
    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;

    # Broker 转发
    location / {
        proxy_pass http://hbbs:21115;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # Relay 转发
    location /relay {
        proxy_pass http://hbbr:21116;
    }
}

注意:

  • hbbshbbr 是 Docker Compose 内部服务名,可直接在 Nginx 容器中访问。
  • TLS 证书可用 Certbot 自动申请。

操作步骤

  1. 进入项目目录:
bash 复制代码
cd ~/rustdesk-server
  1. 启动服务:
bash 复制代码
docker-compose up -d
  1. 使用 Certbot 自动申请证书:
bash 复制代码
sudo docker exec -it rustdesk-nginx bash
# 安装 certbot 并生成证书
certbot certonly --webroot -w /etc/letsencrypt -d rustdesk.yourdomain.com
  1. 确保防火墙放行端口:
bash 复制代码
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 21115/tcp
sudo ufw allow 21115/udp
sudo ufw allow 21116/tcp
sudo ufw allow 21116/udp
sudo ufw reload

Windows 客户端配置

  1. 打开 RustDesk → 设置 → 中继 / ID 服务器

  2. 输入域名和端口(假设 HTTPS 已代理):

    • ID 服务器(Broker) : rustdesk.yourdomain.com:443
    • 中继服务器(Relay) : rustdesk.yourdomain.com:443

使用域名 + TLS 可以保证公网安全访问,同时无需客户端手动信任自签证书。


特点

  • 一键启动 RustDesk 自建服务端
  • 支持公网访问和 NAT 穿透
  • TLS 加密保证安全
  • Docker 卷持久化日志和配置
  • Windows 客户端配置简单

相关推荐
小p17 小时前
docker学习: 2. 构建镜像Dockerfile
docker
小p1 天前
docker学习: 1. docker基本使用
docker
蝎子莱莱爱打怪2 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀2 天前
Docker部署Nacos
docker·容器
缓解AI焦虑2 天前
Docker + K8s 部署大模型推理服务:资源划分与多实例调度
docker·容器
1candobetter2 天前
Docker Compose Build 与 Up 的区别:什么时候必须重建镜像
docker·容器·eureka
DianSan_ERP2 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
呉師傅2 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
不是二师兄的八戒2 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器