想要一个轻量又好用的远程桌面软件?CrossDesk 可能是个不错的选择。它是基于 MiniRTC 实时音视频传输库开发的,最大的特点就是可以完全自托管,数据掌握在自己手里。
什么是 CrossDesk?
说起 CrossDesk,其实它就是 MiniRTC 的一个实验性应用。MiniRTC 这个库挺厉害的,集成了网络透传(RFC5245)、H264/AV1 视频编解码、Opus 音频编解码、信令交互、网络拥塞控制、SRTP 传输加密等一堆核心功能。CrossDesk 就是把这些能力包装成了一个好用的远程桌面工具。
核心特性
- 🪶 轻量级设计:基于高效的 MiniRTC 库,资源占用少
- 🌐 跨平台支持:支持 Windows、Linux、macOS 等主流操作系统
- 🔒 自托管服务:完全可控的私有部署,数据安全有保障
- ⚡ 高性能传输:支持 H264/AV1 视频编码和 Opus 音频编码
- 🛡️ 安全加密:内置 SRTP 传输加密和证书认证
- 🎛️ 简单易用:通过对端 ID 快速建立远程连接
重要资源链接
- 💻 GitHub 仓库:https://github.com/kunkundi/crossdesk
- 📦 最新版本:https://github.com/kunkundi/crossdesk/releases/tag/v1.0.1
- 📖 项目文档:https://github.com/kunkundi/crossdesk/blob/self-hosted-server/README.md
- 🐛 问题反馈:https://github.com/kunkundi/crossdesk/issues
快速开始
下载预编译版本(推荐)
不想折腾编译?直接下载现成的版本就行:
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 /
首次使用步骤
- 启动 CrossDesk:运行下载的可执行文件
- 获取设备 ID:启动后会显示本机的设备 ID
- 建立连接:在另一台设备上输入目标设备的 ID 即可连接
- 设置密码(可选):在设置中为连接设置密码保护
💡 提示:如果需要自托管服务器或从源码编译,请继续阅读下面的详细章节。
基本使用方法
CrossDesk 用起来很简单,基本上就是三步走:
- 连接远程桌面:在菜单栏找到”对端ID”,输入要连接的设备ID,点”→“就能连上
- 密码保护:如果对方设了密码,记得输入正确的密码才能连接成功
- 个性化设置:连接前可以在设置里调整语言、视频编码什么的,看个人喜好

从源码编译
想自己编译?也不难,就是需要准备一些工具。
必需依赖
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
部署注意事项
几个容易踩的坑:
- 目录权限:那些挂载目录(
/path/to/your/)记得先建好,不然容器起不来 - 路径替换:别忘了把示例里的
/path/to/your/改成你自己的路径 - IP 配置:EXTERNAL_IP 和 INTERNAL_IP 别搞错了
- 端口冲突:确保端口没被别的程序占用
证书配置
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
客户端配置
安装客户端证书
运行时如果客户端状态栏显示”未连接服务器”,需要先安装客户端证书:
-
官方客户端安装:先在 CrossDesk 官方网站 下载并安装客户端,以便在环境中安装所需的证书文件
-
手动证书安装:将生成的
crossdesk.cn_root.crt根证书文件导入到客户端系统的证书存储中
自托管服务器配置
在 CrossDesk 客户端中配置自托管服务器:
- 打开 CrossDesk 客户端
- 进入设置 → 自托管服务器配置
- 填写服务器地址:您的服务器公网 IP
- 填写服务器端口:配置的 CROSSDESK_SERVER_PORT(如 9099)
- 导入根证书文件:
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
性能优化建议
服务器端优化
-
资源配置:
- 确保服务器有足够的 CPU 和内存资源
- 使用 SSD 存储提升 I/O 性能
-
网络优化:
- 选择低延迟的网络环境
- 考虑使用 CDN 加速(如果有多个地理位置的用户)
-
系统调优:
# 调整网络参数
echo 'net.core.rmem_max = 16777216' >> /etc/sysctl.conf
echo 'net.core.wmem_max = 16777216' >> /etc/sysctl.conf
sysctl -p
客户端优化
- 编码设置:根据网络带宽选择合适的视频编码格式(H264/AV1)
- 分辨率调整:在网络条件较差时降低分辨率
- 网络环境:优先使用有线网络连接
安全最佳实践
网络安全
- 使用 VPN:建议通过 VPN 访问自托管服务器
- IP 白名单:在防火墙中配置 IP 白名单限制访问
- 定期更新:保持系统和 Docker 镜像的及时更新
证书管理
- 定期更换:建议每年更换一次证书
- 安全存储:妥善保管私钥文件,设置适当的文件权限
- 备份证书:定期备份证书文件到安全位置
常见问题
更多详细的常见问题和解决方案,请参考 CrossDesk 常见问题文档。
总结
CrossDesk 作为一个基于 MiniRTC 的轻量级远程桌面解决方案,为用户提供了:
- 🪶 轻量高效:基于优化的 MiniRTC 库,资源占用少,性能表现优秀
- 🔒 完全自托管:数据完全掌控在自己手中,无需依赖第三方服务
- 🛡️ 安全可靠:内置 SRTP 加密传输和完整的证书认证体系
- 🌐 跨平台兼容:支持主流操作系统,满足不同环境需求
- ⚡ 先进技术:支持 H264/AV1 视频编码和 Opus 音频编码
- 🎛️ 简单易用:通过对端 ID 即可快速建立连接
标签
版权声明
本文由 WebRTC.link 创作,采用 CC BY-NC-SA 4.0 许可协议。本站转载文章会注明来源以及作者。如果您需要转载,请注明出处以及作者。



评论区
Giscus评论由 Giscus 驱动,基于 GitHub Discussions