CrossDesk:轻量级跨平台远程桌面软件 - 基于 MiniRTC 的自托管解决方案

RTC相关项目 精选 12 分钟 |
CrossDesk:轻量级跨平台远程桌面软件 - 基于 MiniRTC 的自托管解决方案

想要一个轻量又好用的远程桌面软件?CrossDesk 可能是个不错的选择。它是基于 MiniRTC 实时音视频传输库开发的,最大的特点就是可以完全自托管,数据掌握在自己手里。

什么是 CrossDesk?

说起 CrossDesk,其实它就是 MiniRTC 的一个实验性应用。MiniRTC 这个库挺厉害的,集成了网络透传(RFC5245)、H264/AV1 视频编解码、Opus 音频编解码、信令交互、网络拥塞控制、SRTP 传输加密等一堆核心功能。CrossDesk 就是把这些能力包装成了一个好用的远程桌面工具。

核心特性

  • 🪶 轻量级设计:基于高效的 MiniRTC 库,资源占用少
  • 🌐 跨平台支持:支持 Windows、Linux、macOS 等主流操作系统
  • 🔒 自托管服务:完全可控的私有部署,数据安全有保障
  • ⚡ 高性能传输:支持 H264/AV1 视频编码和 Opus 音频编码
  • 🛡️ 安全加密:内置 SRTP 传输加密和证书认证
  • 🎛️ 简单易用:通过对端 ID 快速建立远程连接

重要资源链接

快速开始

下载预编译版本(推荐)

不想折腾编译?直接下载现成的版本就行:

Windows 用户

# 下载 Windows 版本
curl -L -o crossdesk-win-x64-1.0.1.exe https://github.com/kunkundi/crossdesk/releases/download/v1.0.1/crossdesk-win-x64-1.0.1.exe

# 直接运行
./crossdesk-win-x64-1.0.1.exe

Linux 用户

# 下载 Linux AMD64 版本 (.deb 包)
wget https://github.com/kunkundi/crossdesk/releases/download/v1.0.1/crossdesk-linux-amd64-1.0.1.deb

# 安装 deb 包
sudo dpkg -i crossdesk-linux-amd64-1.0.1.deb

# 或者下载 ARM64 版本
# wget https://github.com/kunkundi/crossdesk/releases/download/v1.0.1/crossdesk-linux-arm64-1.0.1.deb
# sudo dpkg -i crossdesk-linux-arm64-1.0.1.deb

macOS 用户

# 下载 macOS ARM64 版本 (Apple Silicon)
curl -L -o crossdesk-macos-arm64-1.0.1.pkg https://github.com/kunkundi/crossdesk/releases/download/v1.0.1/crossdesk-macos-arm64-1.0.1.pkg

# 或者下载 x64 版本 (Intel)
# curl -L -o crossdesk-macos-x64-1.0.1.pkg https://github.com/kunkundi/crossdesk/releases/download/v1.0.1/crossdesk-macos-x64-1.0.1.pkg

# 安装 pkg 包
sudo installer -pkg crossdesk-macos-arm64-1.0.1.pkg -target /

首次使用步骤

  1. 启动 CrossDesk:运行下载的可执行文件
  2. 获取设备 ID:启动后会显示本机的设备 ID
  3. 建立连接:在另一台设备上输入目标设备的 ID 即可连接
  4. 设置密码(可选):在设置中为连接设置密码保护

💡 提示:如果需要自托管服务器或从源码编译,请继续阅读下面的详细章节。

基本使用方法

CrossDesk 用起来很简单,基本上就是三步走:

  1. 连接远程桌面:在菜单栏找到”对端ID”,输入要连接的设备ID,点”→“就能连上
  2. 密码保护:如果对方设了密码,记得输入正确的密码才能连接成功
  3. 个性化设置:连接前可以在设置里调整语言、视频编码什么的,看个人喜好

CrossDesk 使用界面

从源码编译

想自己编译?也不难,就是需要准备一些工具。

必需依赖

  • xmake:主要的构建工具
  • cmake:辅助构建系统

Linux 系统依赖

Ubuntu/Debian 用户需要先装这些包(有点多,但都是必须的):

sudo apt-get install -y software-properties-common git curl unzip build-essential \
    libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev \
    libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev \
    libxcb-xkb-dev libxcb-xfixes0-dev libxv-dev libxtst-dev libasound2-dev \
    libsndio-dev libxcb-shm0-dev libpulse-dev

安装 Xmake 构建工具

CrossDesk 用的是 Xmake 来构建,所以得先把它装上:

Linux/macOS 安装

使用 curl:

curl -fsSL https://xmake.io/shget.text | bash

使用 wget:

wget https://xmake.io/shget.text -O - | bash

Windows 安装

使用 PowerShell:

irm https://xmake.io/psget.text | iex

编译 CrossDesk

1. 获取源码

# 克隆仓库
git clone https://github.com/kunkundi/crossdesk.git
cd crossdesk

# 初始化子模块
git submodule init
git submodule update

2. 编译项目

# 编译 CrossDesk
xmake b -vy crossdesk

3. 运行程序

# 运行 CrossDesk
xmake r crossdesk

没有 CUDA 环境怎么办?

Linux 开发者

没装 CUDA?别担心,CrossDesk 准备了一个 Ubuntu 22.04 Docker 镜像,里面该有的都有了,直接用就行。

进容器后,下载代码然后:

export CUDA_PATH=/usr/local/cuda
export XMAKE_GLOBALDIR=/data
xmake b --root -vy crossdesk

Windows 开发者

Windows 用户也一样,没 CUDA 的话可以这样装:

# 安装 CUDA 12.6.3
xmake require -vy "cuda 12.6.3"

# 查看安装信息
xmake require --info "cuda 12.6.3"

根据输出获取 CUDA 的安装目录(installdir),将 CUDA_PATH 加入系统环境变量:

set CUDA_PATH=path_to_cuda_installdir

然后重新执行编译:

xmake b -vy crossdesk

Xmake 编译选项

编译模式切换

# 切换到调试模式
xmake f -m debug

# 切换到发布模式  
xmake f -m release

编译参数说明

# 可选编译参数
# -r : 重新构建目标
# -v : 显示详细的构建日志
# -y : 自动确认提示

# 示例:详细模式编译
xmake b -vy crossdesk

运行选项

# 使用调试模式运行
xmake r -d crossdesk

更多使用方法可参考 Xmake 官方文档

自托管服务器部署

想搭个自己的服务器?用 Docker 是最省事的方法。

Docker 部署(推荐)

使用以下命令部署 CrossDesk 服务器:

sudo docker run -d \
  --name crossdesk_server \
  --network host \
  -e EXTERNAL_IP=xxx.xxx.xxx.xxx \
  -e INTERNAL_IP=xxx.xxx.xxx.xxx \
  -e CROSSDESK_SERVER_PORT=9099 \
  -v /path/to/your/certs:/crossdesk-server/certs \
  -v /path/to/your/db:/crossdesk-server/db \
  -v /path/to/your/logs:/crossdesk-server/logs \
  crossdesk/crossdesk-server:latest

参数说明

用户需要配置的关键参数:

  • EXTERNAL_IP:服务器公网 IP,对应 CrossDesk 客户端自托管服务器配置中填写的服务器地址
  • INTERNAL_IP:服务器内网 IP
  • CROSSDESK_SERVER_PORT:自托管服务使用的端口,对应 CrossDesk 客户端自托管服务器配置中填写的服务器端口
  • /path/to/your/certs:证书文件目录(需要提前创建)
  • /path/to/your/db:CrossDesk Server 设备管理数据库目录
  • /path/to/your/logs:日志文件目录

网络端口要求

服务器需要开放以下端口:

  • 3478/udp3478/tcp:STUN/TURN 服务端口
  • 30000-60000/udp:媒体传输端口范围
  • CROSSDESK_SERVER_PORT/tcp:CrossDesk 服务端口(如示例中的 9099)
  • 443/tcp:HTTPS 端口

防火墙配置示例

# Ubuntu/Debian 系统使用 ufw
sudo ufw allow 3478/udp
sudo ufw allow 3478/tcp
sudo ufw allow 30000:60000/udp
sudo ufw allow 9099/tcp
sudo ufw allow 443/tcp

# CentOS/RHEL 系统使用 firewalld
sudo firewall-cmd --permanent --add-port=3478/udp
sudo firewall-cmd --permanent --add-port=3478/tcp
sudo firewall-cmd --permanent --add-port=30000-60000/udp
sudo firewall-cmd --permanent --add-port=9099/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

部署注意事项

几个容易踩的坑:

  1. 目录权限:那些挂载目录(/path/to/your/)记得先建好,不然容器起不来
  2. 路径替换:别忘了把示例里的 /path/to/your/ 改成你自己的路径
  3. IP 配置:EXTERNAL_IP 和 INTERNAL_IP 别搞错了
  4. 端口冲突:确保端口没被别的程序占用

证书配置

CrossDesk 需要证书来保证安全。客户端要根证书,服务端要私钥和服务器证书。

使用现有 SSL 证书

有现成的 SSL 证书?直接用就行,下面的生成步骤可以跳过。

自己生成证书

没证书也不要紧,用这个脚本可以自动生成:

1. 创建证书生成脚本

# 创建证书生成脚本
vim generate_certs.sh

2. 脚本内容

将以下内容复制到脚本中:

#!/bin/bash
set -e

# 检查参数
if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <SERVER_IP>"
    exit 1
fi

SERVER_IP="$1"

# 文件名定义
ROOT_KEY="crossdesk.cn_root.key"
ROOT_CERT="crossdesk.cn_root.crt"
SERVER_KEY="crossdesk.cn.key"
SERVER_CSR="crossdesk.cn.csr"
SERVER_CERT="crossdesk.cn_bundle.crt"
FULLCHAIN_CERT="crossdesk.cn_fullchain.crt"

# 证书主题信息
SUBJ="/C=CN/ST=Zhejiang/L=Hangzhou/O=CrossDesk/OU=CrossDesk/CN=$SERVER_IP"

# 1. 生成根证书私钥
echo "正在生成根证书私钥..."
openssl genrsa -out "$ROOT_KEY" 4096

# 2. 生成自签名根证书
echo "正在生成自签名根证书..."
openssl req -x509 -new -nodes -key "$ROOT_KEY" -sha256 -days 3650 -out "$ROOT_CERT" -subj "$SUBJ"

# 3. 生成服务器私钥
echo "正在生成服务器私钥..."
openssl genrsa -out "$SERVER_KEY" 2048

# 4. 生成服务器证书签名请求
echo "正在生成服务器 CSR..."
openssl req -new -key "$SERVER_KEY" -out "$SERVER_CSR" -subj "$SUBJ"

# 5. 创建临时 OpenSSL 配置文件,添加 SAN 扩展
SAN_CONF="san.cnf"
cat > $SAN_CONF <<EOL
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no

[ req_distinguished_name ]
C = CN
ST = Zhejiang
L = Hangzhou
O = CrossDesk
OU = CrossDesk
CN = $SERVER_IP

[ req_ext ]
subjectAltName = IP:$SERVER_IP
EOL

# 6. 用根证书签发服务器证书
echo "正在签发服务器证书..."
openssl x509 -req -in "$SERVER_CSR" -CA "$ROOT_CERT" -CAkey "$ROOT_KEY" -CAcreateserial \
    -out "$SERVER_CERT" -days 3650 -sha256 -extfile "$SAN_CONF" -extensions req_ext

# 7. 生成完整证书链
cat "$SERVER_CERT" "$ROOT_CERT" > "$FULLCHAIN_CERT"

# 8. 清理临时文件
rm -f "$ROOT_CERT.srl" "$SAN_CONF" "$ROOT_KEY" "$SERVER_CSR" "$FULLCHAIN_CERT"

echo "证书生成完成!部署文件:"
echo "  客户端根证书: $ROOT_CERT"
echo "  服务器私钥: $SERVER_KEY"
echo "  服务器证书: $SERVER_CERT"

3. 执行证书生成

# 添加执行权限
chmod +x generate_certs.sh

# 生成证书(替换为您的服务器公网 IP)
./generate_certs.sh 111.111.111.111

证书文件说明

生成的几个文件分别是:

  • crossdesk.cn_root.crt:客户端用的根证书
  • crossdesk.cn.key:服务器私钥(要保密)
  • crossdesk.cn_bundle.crt:服务器证书

证书部署

将生成的证书文件放置到服务器的证书目录中:

# 创建证书目录
sudo mkdir -p /opt/crossdesk/certs

# 复制证书文件
sudo cp crossdesk.cn.key /opt/crossdesk/certs/
sudo cp crossdesk.cn_bundle.crt /opt/crossdesk/certs/
sudo cp crossdesk.cn_root.crt /opt/crossdesk/certs/

# 设置适当的权限
sudo chmod 600 /opt/crossdesk/certs/crossdesk.cn.key
sudo chmod 644 /opt/crossdesk/certs/crossdesk.cn_bundle.crt
sudo chmod 644 /opt/crossdesk/certs/crossdesk.cn_root.crt

客户端配置

安装客户端证书

运行时如果客户端状态栏显示”未连接服务器”,需要先安装客户端证书:

  1. 官方客户端安装:先在 CrossDesk 官方网站 下载并安装客户端,以便在环境中安装所需的证书文件

  2. 手动证书安装:将生成的 crossdesk.cn_root.crt 根证书文件导入到客户端系统的证书存储中

自托管服务器配置

在 CrossDesk 客户端中配置自托管服务器:

  1. 打开 CrossDesk 客户端
  2. 进入设置 → 自托管服务器配置
  3. 填写服务器地址:您的服务器公网 IP
  4. 填写服务器端口:配置的 CROSSDESK_SERVER_PORT(如 9099)
  5. 导入根证书文件:crossdesk.cn_root.crt

故障排除

常见问题

1. 客户端显示”未连接服务器”

解决方案

  • 确保已正确安装客户端证书
  • 检查服务器 IP 和端口配置是否正确
  • 验证防火墙设置,确保相关端口已开放

2. Docker 容器启动失败

检查步骤

# 查看容器日志
sudo docker logs crossdesk_server

# 检查挂载目录是否存在
ls -la /path/to/your/certs
ls -la /path/to/your/db
ls -la /path/to/your/logs

# 创建缺失的目录
sudo mkdir -p /path/to/your/{certs,db,logs}

3. 编译失败

常见原因和解决方案

# 检查 xmake 版本
xmake --version

# 更新 xmake
xmake update

# 清理构建缓存
xmake clean

# 重新编译
xmake b -vy crossdesk

4. 网络连接问题

诊断步骤

# 检查端口监听状态
netstat -tulpn | grep 9099

# 测试端口连通性
telnet your-server-ip 9099

# 检查防火墙状态
sudo ufw status  # Ubuntu
sudo firewall-cmd --list-all  # CentOS

日志分析

查看服务器日志

# Docker 部署查看日志
sudo docker logs -f crossdesk_server

# 查看挂载的日志文件
tail -f /path/to/your/logs/crossdesk-server.log

客户端调试

# 使用调试模式运行客户端
xmake r -d crossdesk

性能优化建议

服务器端优化

  1. 资源配置

    • 确保服务器有足够的 CPU 和内存资源
    • 使用 SSD 存储提升 I/O 性能
  2. 网络优化

    • 选择低延迟的网络环境
    • 考虑使用 CDN 加速(如果有多个地理位置的用户)
  3. 系统调优

# 调整网络参数
echo 'net.core.rmem_max = 16777216' >> /etc/sysctl.conf
echo 'net.core.wmem_max = 16777216' >> /etc/sysctl.conf
sysctl -p

客户端优化

  1. 编码设置:根据网络带宽选择合适的视频编码格式(H264/AV1)
  2. 分辨率调整:在网络条件较差时降低分辨率
  3. 网络环境:优先使用有线网络连接

安全最佳实践

网络安全

  1. 使用 VPN:建议通过 VPN 访问自托管服务器
  2. IP 白名单:在防火墙中配置 IP 白名单限制访问
  3. 定期更新:保持系统和 Docker 镜像的及时更新

证书管理

  1. 定期更换:建议每年更换一次证书
  2. 安全存储:妥善保管私钥文件,设置适当的文件权限
  3. 备份证书:定期备份证书文件到安全位置

常见问题

更多详细的常见问题和解决方案,请参考 CrossDesk 常见问题文档

总结

CrossDesk 作为一个基于 MiniRTC 的轻量级远程桌面解决方案,为用户提供了:

  • 🪶 轻量高效:基于优化的 MiniRTC 库,资源占用少,性能表现优秀
  • 🔒 完全自托管:数据完全掌控在自己手中,无需依赖第三方服务
  • 🛡️ 安全可靠:内置 SRTP 加密传输和完整的证书认证体系
  • 🌐 跨平台兼容:支持主流操作系统,满足不同环境需求
  • ⚡ 先进技术:支持 H264/AV1 视频编码和 Opus 音频编码
  • 🎛️ 简单易用:通过对端 ID 即可快速建立连接

标签

#CrossDesk #远程桌面 #MiniRTC #跨平台 #自托管 #WebRTC

版权声明

本文由 WebRTC.link 创作,采用 CC BY-NC-SA 4.0 许可协议。本站转载文章会注明来源以及作者。如果您需要转载,请注明出处以及作者。

评论区

Giscus

评论由 Giscus 驱动,基于 GitHub Discussions

相关文章

探索更多相关内容,深入了解 WebRTC 技术的各个方面

演示 Demo

LIVE

基础摄像头访问

展示如何使用 getUserMedia API 获取摄像头和麦克风

媒体获取 体验

PTZ 摄像头控制

控制支持 PTZ 功能的摄像头进行平移、倾斜和缩放

媒体获取 体验

屏幕共享

使用 getDisplayMedia API 进行屏幕共享

媒体获取 体验