跳至主要内容 跳至导航 跳至页脚

订阅与许可证

了解 account、rdc 和 renet 如何处理机器槽位、仓库许可证和计划限制。

订阅与许可证

Rediacc 许可证管理分为三个组成部分:

  • account 签署权利并追踪使用情况
  • rdc 进行身份验证、请求许可证、将其交付给机器并在运行时强制执行
  • renet(机器上的运行时)在本地验证已安装的许可证,无需调用账户服务器

本页说明这些部分如何在本地部署中协同工作。

许可证的作用

许可证管理控制两件不同的事情:

  • 通过浮动许可证进行机器访问核算
  • 通过仓库许可证进行仓库运行时授权

这两者相关联,但它们不是同一个制品。

许可证的工作原理

account 是计划、合同覆盖、机器槽位状态和每月仓库许可证发放的真实来源。

rdc 在您的工作站上运行。它将您登录到账户服务器,请求所需的许可证,并通过 SSH 将其安装到远程机器上。当您运行仓库命令时,rdc 确保所需许可证已就位,并在机器上的运行时验证它们。

正常流程如下:

  1. 您使用 rdc subscription login 进行身份验证
  2. 您运行仓库命令,例如 rdc repo createrdc repo uprdc repo down
  3. 如果所需许可证缺失或已过期,rdcaccount 请求
  4. rdc 将签名的许可证写入机器
  5. 许可证在机器上本地验证,操作继续进行

有关工作站与服务器的分工,请参阅 rdc vs renet;有关仓库生命周期本身,请参阅 仓库

对于自动化和 AI 代理,请使用范围受限的订阅令牌而非浏览器登录:

rdc subscription login --token "$REDIACC_TOKEN"

您也可以直接通过环境注入令牌,使 CLI 无需任何交互式登录步骤即可发放和刷新仓库许可证:

export REDIACC_TOKEN="rdt_..."
export REDIACC_ACCOUNT_SERVER="https://www.rediacc.com/account"

机器槽位和仓库许可证

机器槽位(服务器端)

机器槽位追踪在服务器端强制执行。当 CLI 发放仓库许可证时,账户服务器会检查订阅的机器槽位配额。每个自助服务计划(Community、Professional、Business)都包含一个机器槽位;多机器部署属于需要与合作伙伴协商配置的 Enterprise 方案。槽位从该机器上最后一次仓库许可证发放起保持 5 小时,不活跃后自动释放。由于槽位仅在您积极进行配置操作时才被占用,一个槽位在一个月内仍可覆盖多台机器。

机器上不存储任何机器许可证文件。槽位强制执行在服务器的发放时间进行。

仓库许可证

仓库许可证是针对一台机器上的一个仓库的签名许可证。它是机器上唯一存储的许可证文件,按签名密钥进行组织:

/var/lib/rediacc/license/repos/{guid}/{keyId}.json

{keyId} 是一个 16 位十六进制指纹(对签名服务器的 Ed25519 公钥取 SHA-256 后的前 8 个字节)。由多个账户宇宙管理的仓库(例如生产环境和 bench 部署到同一台机器上)会在其 {guid} 目录下为每个签名密钥保留一个文件。该机器的 renet 构建只会验证其内置密钥、或链接到该密钥的委托证书能够验证的那个文件;其他宇宙的文件则处于无效状态。切换宇宙永远不会使许可证失效:新宇宙中的第一个操作会为该宇宙签发一次许可证(返回 missing 结果时会自动签发),此后两者会共存。

用于:

  • rdc repo createrdc repo fork,在配置前验证(预发放无身份证明,创建后用身份证明重新发放)
  • rdc repo resizerdc repo expand,包括到期在内的完整验证
  • rdc repo uprdc repo downrdc repo delete跳过到期验证
  • rdc repo pushrdc repo pullrdc repo sync包括到期在内的完整验证:备份传输需要有效权益
  • 机器重启时的仓库自动启动,跳过到期验证

仓库许可证绑定到机器和目标仓库。每个许可证包含机器 ID、仓库 GUID、订阅 ID、计划限制和到期时间。对于加密仓库,Rediacc 还验证底层卷的 LUKS 身份。

多个订阅可以共存于同一台机器上。每个仓库都携带自己的许可证和自己的订阅上下文。

默认限制

仓库大小取决于权利级别:

  • Community:最多 10 GB
  • 付费计划:计划或合同限制

付费计划默认限制为:

计划浮动许可证仓库大小每月仓库许可证发放次数委托证书默认/最大有效期
Community110 GB10015d / 30d
Professional1100 GB2,000+60d / 120d
Business1500 GB5,000+90d / 180d
Enterprise定制1 TB+15,000+120d / 365d

特定合同限制可以为特定客户提高或降低这些值。委托证书有效期还受 subscription.expiresAt + 3 day grace 的硬性上限约束,因此按月计费的订阅自然会获得与计费周期对齐的证书。完整规则请参阅 许可链与委托 - 有效期策略

免费试用与 Community 回退

新注册用户会自动开始 Professional 或 Business 计划的 14 天免费试用。注册时会收集信用卡信息,但首次扣费只会在试用结束时发生,因此在此之前取消不会产生任何费用。每位客户仅可使用一次试用。

Community 是始终存在的免费基础计划。新账户已不能直接注册使用该计划;相反,只要订阅结束(无论是试用期内取消、日后取消付费计划,还是扣款失败),账户就会回退到 Community。回退到 Community 后,您将保留 1 台机器、每个仓库 10 GB 以及每月 100 次设置的额度。在试用制模型上线之前创建的账户会保留其现有的 Community 权限。

限制的执行方式在最关键之处仍然宽松:订阅结束后,正在运行的仓库(updowndelete、自动启动)仍会继续正常工作。而新的操作(创建、分叉、调整大小和许可证刷新)以及备份传输(pushpullsync)则会受到有效权益的限制。

虚拟机迁移宽限期

当托管提供商将虚拟机迁移到不同的物理硬件时,机器 ID 会改变(它派生自 DMI UUID、/etc/machine-id 和 NIC MAC 地址等硬件标识符)。仓库许可证绑定到机器 ID,因此迁移通常会使所有许可证失效。

为了透明地处理这个问题,仓库许可证包含一个 40 天的机器 ID 宽限期。如果机器 ID 不匹配但许可证是在 40 天内发放的,许可证仍然被接受。由于许可证每 30 天刷新一次,下次刷新会自动绑定到新的机器 ID。

实际上:

  • 虚拟机迁移,机器 ID 改变:仓库保持运行(在 40 天窗口内)
  • 下一个 rdc 操作用新机器 ID 刷新许可证
  • 无需手动干预
  • 使用 rdc machine status <machine> --system --licenses 检查机器 ID 和许可证状态

Edge 渠道账户运行在 Community 计划上,限制为 2 倍(20 GB 仓库、每月 200 次设置、2 台机器)。付费计划仅在 Stable 渠道提供。详情请参阅 发布渠道

仓库创建、启动、停止和重启期间发生的情况

创建和分叉仓库

创建或分叉仓库时:

  1. rdc 确保您的订阅令牌可用(如需要则触发设备代码身份验证)
  2. rdc 从账户服务器预发放仓库许可证(此时服务器检查机器槽位配额和月度发放限制)
  3. 预发放的仓库许可证被写入机器并在本地验证(签名、机器 ID、仓库 GUID、到期和大小限制)
  4. 成功创建后,rdc 用仓库身份证明(LUKS UUID 或存储指纹)重新发放仓库许可证

该账户支持的发放计入您的月度仓库许可证发放使用量。每个许可证包含账户持有人的电子邮件和公司名称,renet 验证许可证时会记录这些信息。

启动、停止和删除仓库

rdc 验证机器上安装的仓库许可证,但跳过到期检查。签名、机器 ID、仓库 GUID 和身份仍会被验证。即使订阅过期,用户也不会被锁定无法操作其仓库。

调整和扩展仓库

rdc 执行包括到期和大小限制在内的完整仓库许可证验证。

机器重启和自动启动

自动启动使用与 rdc repo up 相同的规则:跳过到期,因此仓库总是可以自由重启。

仓库许可证使用长期有效性模型:

  • refreshRecommendedAt 是软刷新点
  • hardExpiresAt 是阻塞点

如果仓库许可证已过时但仍在硬到期之前,运行时可以继续。一旦达到硬到期,rdc 必须为调整或扩展操作刷新它。

其他仓库操作

列出仓库、检查仓库信息和挂载等操作不需要任何许可证验证。

检查状态和刷新许可证

人工登录:

rdc subscription login

自动化或 AI 代理登录:

rdc subscription login --token "$REDIACC_TOKEN"

对于非交互式环境,设置 REDIACC_TOKEN 是最简单的选项。令牌应仅限于代理所需的订阅和仓库许可证操作。

显示账户支持的订阅状态:

rdc subscription status

显示一台机器的机器激活详情:

rdc subscription status -m hostinger

显示一台机器上已安装的仓库许可证详情:

rdc subscription status -m hostinger

刷新机器上某个仓库的许可证:

rdc subscription refresh -m hostinger --repo my-app

--repo ref 必须能在本地 rdc 配置中解析。在机器上发现但本地配置中缺少的仓库将被拒绝:它会被报告为失败,且不会自动分类。

首次使用时,找不到可用仓库许可证的已授权仓库或备份操作可以自动触发账户授权移交。CLI 打印授权 URL,在交互式终端中尝试打开浏览器,并在授权和发放成功后重试一次操作。

在非交互式环境中,CLI 不等待浏览器批准。相反,它告诉您使用 rdc subscription login --token ...REDIACC_TOKEN 提供范围受限的令牌。

有关机器首次设置,请参阅 机器设置

离线行为和到期

许可证验证在机器本地进行。您不需要联系账户服务器来操作您的仓库。

这意味着:

  • 运行中的环境不需要在每个命令上都有实时账户连接
  • 即使许可证过期,所有仓库也可以随时启动、停止和删除,用户永远不会被锁定无法操作自己的仓库
  • 配置操作(createfork)需要预发放的仓库许可证,增长操作(resizeexpand)需要有效的仓库许可证
  • 真正过期的仓库许可证必须在调整或扩展之前通过 rdc 刷新
  • 许可证签名通过嵌入的公钥进行验证,签名验证无法被禁用

恢复行为

自动恢复有意保持在较窄的范围:

  • missingrdc 可能会在需要时授权账户访问、批量刷新仓库许可证并重试一次
  • expiredrdc 可能会批量刷新仓库许可证并重试一次
  • machine_mismatch:快速失败并告诉您从当前机器上下文重新发放
  • repository_mismatch:快速失败并告诉您明确刷新仓库许可证
  • sequence_regression:作为仓库许可证完整性或状态问题快速失败
  • invalid_signature:作为仓库许可证完整性或状态问题快速失败
  • identity_mismatch:快速失败,仓库身份与已安装许可证不匹配
  • cert_expired:在成长类操作(createforkresize)和备份传输(pushpull)上会快速失败;repo up 和自动启动仍可正常运行,这与宽松的许可证到期模型一致。请续期该委托证书
  • cert_invalid:快速失败,委托证书未通过约束检查(主密钥签名无效、订阅/计划不匹配、超出容量上限,或序列号超过 maxTotalIssuances)。请在修复相应限制后重新签发证书

这些快速失败情况不会自动消耗账户支持的刷新或发放调用。

本地部署的委托证书

对于本地部署和隔离网络部署,这会变得复杂。上游账户服务器颁发委托证书,授权您的本地部署实例使用自己的 Ed25519 密钥签署许可证。该证书约束本地部署在其计划限制内运行,并创建防篡改的证书链。

订阅所有者的关键注意事项:

  • 每个订阅只能有一个有效证书。 每个本地部署实例根据自身本地账本执行每月和每台机器的配额,因此多实例会成倍增加有效配额且无法对账。需要生产 + 预发布 + 灾备环境的客户必须为每个实例购买单独的订阅。
  • 基于层级的默认有效期(15d / 60d / 90d / 120d)和上限(30d / 120d / 180d / 365d)—请参阅上方的限制表。
  • 通过客户门户自助管理。 组织所有者和管理员可以在 /account/delegation-certs 创建、续期和撤销委托证书。所有客户均可查看该页面,无论计划层级如何,仅限制不同。
  • 自动续期通过一键引导支持,为本地部署生成一个范围为 delegation:renew 的 API 令牌用于上游续期调用。
  • 隔离网络续期通过已签名的续期请求清单支持,本地部署管理员下载后离线传输到上游,上游处理后颁发新证书。

操作设置请参阅 本地部署安装 - 隔离网络部署的许可,加密设计请参阅 许可链与委托

每月仓库许可证发放次数

此指标统计当前 UTC 日历月内成功的账户支持仓库许可证发放活动。

包括:

  • 首次仓库许可证发放
  • 返回新签名许可证的成功仓库许可证刷新

不包括:

  • 未更改的批量条目
  • 失败的发放尝试
  • 在发放前被拒绝的未追踪仓库

如果您需要面向客户的使用情况和近期仓库许可证发放历史视图,请使用账户门户。如果您需要机器端检查,请使用 rdc subscription status -mrdc subscription status -m