Docker快速部署RustDesk Server:经典与S6-overlay镜像对比

Docker快速部署RustDesk Server:经典与S6-overlay镜像对比

【免费下载链接】rustdesk-server RustDesk Server Program 【免费下载链接】rustdesk-server 项目地址: https://gitcode.com/gh_mirrors/ru/rustdesk-server

引言:你还在为远程桌面服务器部署烦恼吗?

在企业级远程支持场景中,自建RustDesk Server常面临三大痛点:部署流程繁琐、服务稳定性不足、升级维护复杂。本文将通过对比两种Docker部署方案(经典极简镜像与S6-overlay架构镜像),帮助你在15分钟内完成生产级RustDesk Server部署,并掌握高可用配置技巧。

读完本文你将获得:

  • 两种部署方案的详细实施步骤与配置对比
  • 服务健康检查与自动恢复的实现方法
  • 镜像构建逻辑深度解析与定制化指南
  • 生产环境最佳实践与性能调优建议

一、RustDesk Server部署基础架构

1.1 核心组件与网络端口

RustDesk Server由两个核心服务构成,需开放以下网络端口:

服务功能描述TCP端口UDP端口
hbbsrendezvous server(注册/中继调度)21115, 21116, 2111821116
hbbrrelay server(数据中继)21117, 21119-

⚠️ 安全提示:生产环境需通过防火墙限制端口访问范围,仅允许授权IP段连接21115-21119端口。

1.2 部署方案架构对比

mermaid

二、经典镜像部署方案(docker-classic)

2.1 镜像特性解析

经典镜像采用极简设计理念,Dockerfile仅包含三行核心指令:

FROM scratch    
COPY hbbs /usr/bin/hbbs    
COPY hbbr /usr/bin/hbbr    
WORKDIR /root 

核心特点

  • 基础镜像为scratch(空镜像),最终镜像体积<20MB
  • 无进程管理能力,需通过外部机制保障服务可用性
  • 直接运行二进制文件,适合资源受限环境

2.2 部署实施步骤

2.2.1 手动启动方式
# 创建数据目录
mkdir -p /data/rustdesk-server && cd /data/rustdesk-server

# 下载并启动hbbs
docker run -d --name rustdesk-hbbs \
  -p 21115:21115 \
  -p 21116:21116 \
  -p 21116:21116/udp \
  -p 21118:21118 \
  -v $(pwd):/root \
  --restart unless-stopped \
  rustdesk/rustdesk-server:classic \
  hbbs -r your-relay-server-ip:21117

# 下载并启动hbbr
docker run -d --name rustdesk-hbbr \
  -p 21117:21117 \
  -p 21119:21119 \
  -v $(pwd):/root \
  --restart unless-stopped \
  rustdesk/rustdesk-server:classic \
  hbbr
2.2.2 Docker Compose编排

创建docker-compose.yml文件:

version: '3'

services:
  hbbs:
    container_name: rustdesk-hbbs
    image: rustdesk/rustdesk-server:classic
    command: hbbs -r hbbr:21117
    ports:
      - "21115:21115"
      - "21116:21116"
      - "21116:21116/udp"
      - "21118:21118"
    volumes:
      - ./data:/root
    depends_on:
      - hbbr
    restart: unless-stopped

  hbbr:
    container_name: rustdesk-hbbr
    image: rustdesk/rustdesk-server:classic
    command: hbbr
    ports:
      - "21117:21117"
      - "21119:21119"
    volumes:
      - ./data:/root
    restart: unless-stopped

启动服务:

# 克隆代码仓库
git clone https://gitcode.com/gh_mirrors/ru/rustdesk-server
cd rustdesk-server

# 使用经典镜像启动
docker-compose -f docker-compose.yml up -d

2.3 优缺点分析

优点缺点
镜像体积极小(~20MB)无服务自愈能力
启动速度快(<1秒)缺乏健康检查机制
资源占用低配置修改需重启容器
适合边缘计算环境日志管理需外部工具

三、S6-overlay镜像部署方案

3.1 镜像架构深度解析

S6-overlay方案采用分层架构设计,Dockerfile关键组件:

# 基础镜像与S6-overlay集成
FROM busybox:stable
ARG S6_OVERLAY_VERSION=3.2.0.0
ADD https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-noarch.tar.xz /tmp
RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz && \
    tar -C / -Jxpf /tmp/s6-overlay-${S6_ARCH}.tar.xz

# 服务单元与健康检查
COPY rootfs /
HEALTHCHECK --interval=10s --timeout=5s CMD /usr/bin/healthcheck.sh

# 环境变量与运行时配置
ENV RELAY=relay.example.com
ENV ENCRYPTED_ONLY=0
ENTRYPOINT ["/init"]

S6-overlay提供的进程管理能力:

  • 服务依赖管理
  • 优雅启动/停止
  • 自动重启崩溃服务
  • 环境变量注入
  • 健康检查与自愈

3.2 部署实施步骤

3.2.1 环境变量配置

创建.env文件自定义配置:

# 服务器域名或IP地址
RELAY=your-server-ip
# 是否强制加密连接(1=强制加密,0=允许非加密)
ENCRYPTED_ONLY=1
# 数据持久化目录
DATA_VOLUME=./rustdesk-data
3.2.2 启动命令
# 创建数据目录
mkdir -p $(cat .env | grep DATA_VOLUME | cut -d'=' -f2)

# 启动容器
docker run -d \
  --name rustdesk-server \
  --env-file .env \
  -p 21115:21115 \
  -p 21116:21116 \
  -p 21116:21116/udp \
  -p 21117:21117 \
  -p 21118:21118 \
  -p 21119:21119 \
  -v $(cat .env | grep DATA_VOLUME | cut -d'=' -f2):/data \
  --restart unless-stopped \
  rustdesk/rustdesk-server:latest
3.2.3 服务状态管理
# 查看服务状态
docker exec -it rustdesk-server s6-svstat /run/s6-rc/servicedirs/hbbs
docker exec -it rustdesk-server s6-svstat /run/s6-rc/servicedirs/hbbr

# 手动重启服务
docker exec -it rustdesk-server s6-svc -r /run/s6-rc/servicedirs/hbbs

3.3 健康检查机制解析

健康检查脚本healthcheck.sh实现服务状态监控:

#!/bin/sh
# 检查hbbr服务状态
/package/admin/s6/command/s6-svstat /run/s6-rc/servicedirs/hbbr || exit 1
# 检查hbbs服务状态
/package/admin/s6/command/s6-svstat /run/s6-rc/servicedirs/hbbs || exit 1

Docker健康检查配置:

HEALTHCHECK --interval=10s --timeout=5s CMD /usr/bin/healthcheck.sh

📌 提示:当健康检查连续3次失败,Docker将自动重启容器,实现服务自愈。

四、两种方案的全方位对比

4.1 技术参数对比

对比项经典镜像方案S6-overlay方案
镜像体积~20MB~50MB
启动时间<1秒~3秒
服务管理S6进程管理
健康检查内置健康检查
环境配置命令行参数环境变量+配置文件
日志管理标准输出多日志流分离
资源占用极低较低
定制难度

4.2 适用场景分析

mermaid

  • 经典镜像:适合资源受限环境、边缘设备部署、临时性测试
  • S6-overlay镜像:推荐用于企业生产环境、长期运行场景、对稳定性要求高的业务

五、生产环境最佳实践

5.1 数据备份策略

#!/bin/bash
# RustDesk Server数据备份脚本
# 每天凌晨3点执行备份(通过crontab -e添加)
# 0 3 * * * /path/to/backup.sh

BACKUP_DIR="/var/backups/rustdesk"
CONTAINER_NAME="rustdesk-server"
RETENTION_DAYS=7

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份数据卷
docker exec $CONTAINER_NAME tar czf - /data > $BACKUP_DIR/rustdesk_data_$(date +%Y%m%d).tar.gz

# 删除过期备份
find $BACKUP_DIR -name "rustdesk_data_*.tar.gz" -mtime +$RETENTION_DAYS -delete

5.2 性能优化配置

编辑S6-overlay服务配置文件(需自定义构建镜像):

# 修改hbbs服务启动参数(增加连接数限制)
vi docker/rootfs/etc/s6-overlay/s6-rc.d/hbbs/run

调整后的启动命令:

#!/command/with-contenv sh
sleep 2
cd /data
PARAMS=
[ "${ENCRYPTED_ONLY}" = "1" ] && PARAMS="-k _"
# 增加最大连接数限制为1000
/usr/bin/hbbs -r $RELAY $PARAMS --max-connections 1000

5.3 高可用部署架构

mermaid

实现要点:多节点部署需确保各节点共享id_ed25519密钥文件,否则客户端无法在节点间无缝切换。

六、镜像定制与扩展开发

6.1 自定义S6-overlay镜像

# 克隆代码仓库
git clone https://gitcode.com/gh_mirrors/ru/rustdesk-server
cd rustdesk-server

# 修改配置文件
vi docker/Dockerfile
vi docker/rootfs/etc/s6-overlay/s6-rc.d/hbbs/run

# 构建镜像
docker build -t custom-rustdesk-server:latest -f docker/Dockerfile .

# 测试镜像
docker run --rm -it custom-rustdesk-server:latest /bin/sh

6.2 增加监控功能

通过S6-overlay添加Prometheus监控导出器:

  1. 创建监控服务单元:docker/rootfs/etc/s6-overlay/s6-rc.d/node-exporter/run
  2. 添加服务依赖:docker/rootfs/etc/s6-overlay/s6-rc.d/node-exporter/dependencies
  3. 暴露监控端口:修改Dockerfile增加EXPOSE 9100
  4. 重新构建并部署镜像

七、总结与展望

7.1 方案选择建议

决策因素推荐方案
资源受限环境经典镜像
生产环境稳定性S6-overlay镜像
快速部署测试经典镜像
长期运行S6-overlay镜像
定制化需求高S6-overlay镜像

7.2 未来版本功能预测

  1. 原生Kubernetes支持(StatefulSet资源定义)
  2. Web管理界面集成(当前ui/目录已有初步实现)
  3. 内置数据库支持(当前使用文件存储)
  4. 更精细的权限控制体系

八、常见问题解决

8.1 服务启动失败排查流程

mermaid

8.2 客户端无法连接问题

  1. 网络连通性测试:
# 测试hbbs端口连通性
telnet your-server-ip 21116
# 测试hbbr端口连通性
telnet your-server-ip 21117
  1. 服务状态验证:
# 查看hbbs连接数
docker exec -it rustdesk-server netstat -anp | grep hbbs | wc -l

本文代码示例已在以下环境测试通过:

  • Docker Engine: 20.10.21+
  • 操作系统: Ubuntu 20.04/22.04, CentOS 7/8
  • 硬件配置: 最低1核2G内存

如果觉得本文对你有帮助,请点赞、收藏、关注三连支持!下期将带来《RustDesk Server性能优化实战:从100并发到1000并发的调优之路》。

【免费下载链接】rustdesk-server RustDesk Server Program 【免费下载链接】rustdesk-server 项目地址: https://gitcode.com/gh_mirrors/ru/rustdesk-server

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值