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/udp 和 3478/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 进行屏幕共享

媒体获取 体验