【远程控制】开箱即用的 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 客户端配置简单

相关推荐
一叶知秋yyds6 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
斯普信云原生组7 小时前
Prometheus 环境监控虚机 Redis 方案(生产实操版)
运维·docker·容器
喵了几个咪7 小时前
如何在 Superset Docker 容器中安装 MySQL 驱动
mysql·docker·容器·superset
工具罗某人7 小时前
docker compose部署kafka集群搭建
docker·容器·kafka
safestar20128 小时前
ES批量写入性能调优:BulkProcessor 参数详解与实战案例
java·大数据·运维·jenkins
来一颗砂糖橘8 小时前
负载均衡的多维深度解析
运维·负载均衡
楠奕8 小时前
CentOS7安装GoldenDB单机搭建及常见报错解决方案
linux·运维·服务器
GCTTTTTT9 小时前
远程服务器走本地代理
运维·服务器
剑锋所指,所向披靡!9 小时前
Linux常用指令(2)
linux·运维·服务器
飞Link9 小时前
逆向兼容的桥梁:3to2 自动化降级工具实现全解析
运维·开发语言·python·自动化