Repository navigation
Releases
ArdUi v6.10
ArdUi v6.10
自 v6.3 以来的变化(v6.4–v6.9 未单独发布)。
不兼容旧版本:服务器只接受 v6.10 及以上的客户端。v6.3 及以上的旧版会自动下载新版并提示安装;更早的版本请手动安装。
账号
- 只有登录的设备可以连接(控制)其他设备;未登录时标题栏显示“匿名用户”,只能被控。被控的一方不需要账号。
- 登录、注册、修改密码都在服务器(M)的账号网页中完成:ArdUi 点“在浏览器中登录”打开网页,网页上显示要登录的是哪台设备,登录后 ArdUi 自动更新(登录链接 10 分钟内有效,只能用一次)。ArdUi 内不再输入密码。
- 自行注册需要用户名、邮箱和密码,账号需管理员审核后才能使用。
- 管理页面
https://域名/api/admin:审核注册、新建用户、重置密码、停用或启用、设为管理员、删除。 - 未登录时发起连接,会弹出账号卡片说明原因。
共享文件夹
- 设备卡片上的“文件”在浏览器中打开对方的共享文件夹:浏览、下载(可续传)、上传多个文件(逐个显示进度、速度和剩余时间,断开后自动续传)、新建文件夹、重命名、删除。也可在资源管理器中打开(WebDAV)。
- 只在直连时可用,不占用中转节点(ArdFerry)的带宽。每台设备在本机的地址固定,可存为书签。
- 被控端在设置中选择共享文件夹;不选时每台主控使用自己的文件夹
文档\ArdUi 文件\<计算机名>-<设备ID>。删除和覆盖的内容进入隐藏的回收文件夹,可以找回。 - 列表显示上传人;所有操作记入被控端审计。
对话
- 发出的消息和文件立即显示,并标明“发送中 / 已送达 / 已读 / 未送达(重试)”;重试不会让对方收到两条。
- 已读回执,可在设置中关闭。
- 文件传输可续传;某些文件接近传完时报“控制消息过大”的问题已修复;对方拒收时不再误显示“已送达”。
- 文字消息不再排在文件传输后面。
- “抖一抖”:提醒对方查看对话(10 秒内一次),对方的灵动岛抖动并显示提示,点击直接打开对话。
- 权限:“对话”包含文字、文件与图片、语音通话;“文件”是共享文件夹的读写。
更新
- 有新版本时几秒内就会发现,在后台从服务器下载(可续传、校验 SHA-256),开始时提示,灵动岛显示进度,下载完询问是否安装。当前版本被服务器拒绝时立即显示下载进度。
其他
- 设备卡片上的延迟每秒更新。
- 集成 FRD v5.5:远程桌面窗口标题显示设备名。
服务器(自托管)
- M 包包含同一版本的 ArdUi 安装包,供客户端更新下载;用新的
selfhost.sh重新运行一次即可升级。 - 第一个管理员在服务器上创建:
sudo -u arduiserver /opt/arduiserver/venv/bin/python /opt/arduiserver/arduiserver.py --add-user 名字 --admin。 - 发布文件可以用一次性令牌上传:
… arduiserver.py --upload-token。
传输层 ard 4.0.0-pre.4(未变)。
ArdUi v6.3
ArdUi v6.3
兼容:可与 v6.2、v6.pre2 互连。官方服务器仍拒绝 v6.pre2 之前的版本(包括 v5.5、v6.pre1)。
下载引导(新)
- 有新版本时,ArdUi 在后台从自己的服务器(M)下载安装包,平时不打扰;下载完成后弹出提示,由你决定是否安装,不会自行安装。
- 当前版本被服务器拒绝时,会立即弹出提示并显示下载进度,下载完成后即可安装。
- 下载可断点续传;已下载并校验过的不重复下载;大小或 SHA-256 与服务器公布的不一致的文件会被删除,不会被安装。
- 失败后不会频繁重试:等待时间从 1 分钟起逐次加倍,最长 1 小时。
- 安装时 ArdUi 会关闭,当前连接会断开;需要本机的人亲自点击,远程操作不能触发安装。
- 旧版本仍保留在安装目录的
versions\下。 - v6.2 及更早的版本没有这个功能,需要手动安装这一次。
服务器(自托管)
- M 包现在包含同一版本的 ArdUi 安装包(
client/ArdUi-v6.3_setup.exe),selfhost.sh安装时直接从 M 包中取出,提供给本网络的客户端,不需要另外从 GitHub 下载。 - 新增接口:
GET /api/v1/release(最新版本、大小、SHA-256)和GET /api/v1/release/<文件名>(支持断点续传,同时下载数有上限)。 - 用新的
selfhost.sh重新运行一次即可升级。
传输层 ard 4.0.0-pre.4、集成 FRD v5.4(均未变)。
ArdUi v6.2
ArdUi v6.2
正式版:内容与预览版 v6.pre2 相同,可与 v6.pre2 互连。
不兼容旧版本: v6.2 不能与 v6.pre2 之前的 ArdUi(包括 v5.5、v6.pre1)互连,官方服务器也已拒绝这些版本。请所有设备一起升级。
连接更快(慢速网络上尤其明显)
- 会话的 ArdFerry 由主控端选定:主控端用最近一次测得最快的节点,并把它写进签名的连接请求,被控端校验后使用同一个节点。ard 启动时不再逐个探测所有中继再挑选,会话中途也不会再切换中继。
- 主控端在连上 ArdFerry 的同时就去找对方,不再先等自己登记完成。
- ard 与服务器之间的信令连接改为复用:空闲连接可以直接发下一个请求,省去重新握手;请求之间互不等待。
- 实测(本机经手机热点,到服务器每个往返约 0.6 秒,连接 SY0812A,各 5 次):平均从 8.0 秒缩短到 3.9 秒,最快 2.0 秒;“正在建立加密连接”阶段从 5.5–10.5 秒缩短到 2.0–3.9 秒。启动后的第一次连接仍较慢(约 6 秒)。
- 传输层 ard 升级到 4.0.0-pre.4(新增
--ferry、--ferry-key、--ferry-addr)。
没有可用的 ArdFerry 时:连接直接失败并提示,不再退回其他方式。
排查
- 新增
ArdUi --connect-test 设备码 [次数]:用本机真实身份连接一台已授权设备若干次,并报告每个阶段的耗时(需先关闭 ArdUi 窗口)。
服务器(自托管)
- 连接请求带上会话的 ArdFerry,服务器会校验其格式。
- M 包更新:ard-relay 4.0.0-pre.3 允许一条信令连接连续处理多个请求。用新的
selfhost.sh重新运行一次即可升级。
集成 FRD v5.4(未变)。
ArdUi v6.pre2
ArdUi v6.pre2(预览版)
不兼容旧版本: v6.pre2 只能与 v6.pre2 及以上的 ArdUi 互连,官方服务器也已拒绝 v6.pre2 以下的客户端。请所有设备一起升级。
连接更快(慢速网络上尤其明显)
- 会话的 ArdFerry 由主控端选定:主控端用最近一次测得最快的节点,并把它写进签名的连接请求,被控端校验后使用同一个节点。ard 启动时不再逐个探测所有中继再挑选,会话中途也不会再切换中继。
- 主控端在连上 ArdFerry 的同时就去找对方,不再先等自己登记完成。
- ard 与服务器之间的信令连接改为复用:空闲连接可以直接发下一个请求,省去重新握手;请求之间互不等待。
- 实测(本机经手机热点,到服务器每个往返约 0.6 秒,连接 SY0812A,各 5 次):平均从 8.0 秒缩短到 3.9 秒,最快 2.0 秒;“正在建立加密连接”阶段从 5.5–10.5 秒缩短到 2.0–3.9 秒。启动后的第一次连接仍较慢(约 6 秒)。
- 传输层 ard 升级到 4.0.0-pre.4(新增
--ferry、--ferry-key、--ferry-addr)。
没有可用的 ArdFerry 时:连接直接失败并提示,不再退回其他方式。
排查
- 新增
ArdUi --connect-test 设备码 [次数]:用本机真实身份连接一台已授权设备若干次,并报告每个阶段的耗时(需先关闭 ArdUi 窗口)。
服务器(自托管)
- 连接请求带上会话的 ArdFerry,服务器会校验其格式。
- M 包更新:ard-relay 4.0.0-pre.3 允许一条信令连接连续处理多个请求。用新的
selfhost.sh重新运行一次即可升级。
集成 FRD v5.4(未变)。
ArdUi v6.pre1
ArdUi v6.pre1(预览版)
不兼容旧版本: v6.pre1 只能与 v6.pre1 及以上的 ArdUi 互连,官方服务器也已拒绝 v6.pre1 以下的客户端。请所有设备一起升级。
连接更快
- 被控端不再每 3 秒向服务器轮询一次。现在服务器有连接请求时立即通知它;主控端也不再每秒询问一次对方是否就绪。
- 在网络良好时,建立一次连接从平均约 5 秒(最慢约 7 秒)缩短到约 2.5 秒,而且每次耗时更稳定,不再偶尔多等 3 秒以上。
- 网络很慢时(例如经手机热点,到服务器每个往返约 0.6 秒),剩下的时间主要花在建立加密隧道的多次网络往返上,这次改进只能省掉约 2–3 秒。
- 传输层 ard 升级到 4.0.0-pre.3:启动时登记地址和连接中继改为同时进行;主控端补登记中继地址时不再推迟连接对方。
修复
- 主控端没有正常告别就消失时(例如对方电脑离线、ArdUi 被强制结束),被控端以前会一直显示"正在建立连接",不断重试;现在连续 2 分钟没有可用路径就结束这个会话。
- 两条路径的健康探测结果先后到达时,较早发出的探测不再覆盖较新的结果,避免不必要的回退到备用路径。
- 通过中继的会话现在记到实际经过的 ArdFerry 上,会话往返时间和带宽能正常上报到状态面板。
排查
- 日志现在包含 ard 在连接建立前的全部输出,以及被控端收到请求、本机就绪、通知服务器的时间点,便于分析连接耗时。
服务器(自托管)
- 设备目录服务改为异步(uvicorn):等待中的设备不再占用处理线程。用新的
selfhost.sh重新运行一次即可升级。 - ArdFerry 停止心跳 10 分钟后从目录和状态面板中移除(原为 1 小时);状态面板只显示 M 当前认识的节点。
集成 FRD v5.4(未变)。
ArdUi v5.5
ArdUi v5.5
不兼容旧版本: v5.5 只能与 v5.5 及以上的 ArdUi 互连,官方服务器也已拒绝 v5.5 以下的客户端。请所有设备一起升级。
角色与职责
- 网络只有三种角色:M、ArdFerry、ArdUi,每个角色只配置一个 HTTPS 域名;一个网络只有一个 M。见 README 顶部和
ROLES.md。 - ArdUi 的配置不变(
config.json里的server就是 M 的域名)。中继目录和 M 的公钥改由 M 告诉客户端;config.json里旧的relay、relayKey两项不再使用,留着也没有影响。
安全
- 每个会话的密钥交换都由双方设备密钥签名:即使有人拿到会话令牌,也冒充不了已授权的设备。
- 被控端的本地入口每个会话只接受一次准入,本机其他程序拿不到会话令牌。
- 撤销授权或关闭被控时,正在等待确认的请求也会被拒绝。
- 收到的文件带“来自网络”标记,运行前 Windows 会提示;每次连接最多接收 10 GB。
- 首次连接密码按设备限制尝试次数;发给对方的错误信息不再包含本机路径、账户名和计算机名。
- 同时进行的请求过多时只回复“对端正忙”,不再断开整个会话。
权限
- 新增“对话”“文件”“通话”三项权限,与 FRD、RDP 一起在被控端逐设备授权,双向生效。旧授权保持原有能力。
- 移除 SMB 文件共享(原本就不可用)。
集成 FRD v5.4
- 新增:被控端悬浮面板里的“截屏”标注工具:抓取被控机主屏后在图片上标注,保存为 PNG 或复制到剪贴板,不影响被控机的操作,也不发给主控端。
- 包含 v5.3 的修复:被控端打开任务管理器(管理员窗口)后键鼠无法转发。需要在被控端安装一次 FRD 的被控服务:运行安装包里
frd目录中的frd-service-*-setup.exe并确认 UAC,也可以在 FRD 界面点“安装被控服务”。已装 v5.3 被控服务的不必重装。 - 安全提示: 装了被控服务之后,已连接并有输入权限的主控端可以操作被控机上的管理员窗口,与它能操作 UAC 和锁屏界面是同一级别的授权。只给信任的设备开 FRD 权限。
- FRD 协议未变。
ArdFerry 与状态面板
-
中继统一由 ArdFerry 承担,旧的候选中继 ArdTransit 已退役。所有 ArdFerry 一视同仁,由客户端按实测延迟挑选,不再有"兜底"节点。
-
ArdUi 每 30 秒实测一次各 ArdFerry 的延迟和成功率,记下经过它的会话,用设备密钥签名后上报 M。节点自己不上报任何数据。
-
状态面板 https://f.visnova.cn/api/ferries 用小地图展示每个节点的大致地域。每个节点并列显示两类数据:
- M 的探测结果:握手延迟、24 小时可用率;
- 客户端的实测汇总:延迟、成功率、设备数、中继会话数。
公开页面不含 IP 地址。
其他修复
- 装了 Hyper-V、WSL、Docker 等软件的电脑上,会话或 FRD 偶尔建立不起来(Windows 保留的端口段导致端口绑定失败),现已改为避开这些端口段。
自托管
selfhost.sh支持只用公网 IP 部署(Let's Encrypt 短期 IP 证书)、完全离线安装(--wheels),服务运行在加固的沙箱里。- 加
--m-bundle一次装好整个 M:设备登记、信令、地址发现、ArdFerry 目录和状态面板,并自动生成 M 的密钥。对公网的进程拿不到这把密钥。官方服务器 NJ 也用同一个安装器部署。 - ArdFerry(流量转发节点)只需配置 M 的域名即可加入网络:自己生成密钥、自助登记,M 探测通过后才会被使用。安装器会自动下载并校验官方
iroh-relay,支持 UPnP 和 NAT-PMP 端口映射。