跳转到指南

文档 9.6.24

许可证与升级

请保密许可证,并从截图中移除令牌。

凭证仅留在服务器#

使用 server.cfg,不要放入共享配置、NUI、客户端事件或公开仓库。短期上传令牌不能替代服务器许可证。

阅读 Cfx 官方指南

更换旧密钥#

使用 9.6.24 替换旧文件,在维护期间重启资源。旧版本可能曾向客户端发送长期面板密钥。停止全部旧实例后,与管理员协同轮换受影响的许可证及旧面板/API 密钥,更新设置并验证连接。仅安装更新不会撤销此前泄露的密钥。

必须填写许可证密钥#

自 2026 年 10 月 7 日起下载的安装包,在未填写本服务器许可证密钥时不会运行反作弊。缺少密钥或填写了其他服务器的密钥时,服务器拒绝玩家加入、断开在线玩家,并在控制台说明原因。

从面板的“服务器”页面复制密钥,并在 server.cfg 的 ensure 行之前添加:set tosun_ac_license "服务器许可证"。也可以使用 configs/anticheat_server.lua 中的 licenseKey 字段。稍后填写的密钥(较晚的 server.cfg 行或控制台中的 set)无需重启即可对玩家开放服务器。

如果您在面板中更换了许可证,旧安装包将不再匹配新密钥;请重新下载并安装安装包。

选择正确的凭据#

Tosun 服务器许可证标识已登记服务器,与 FiveM 的 sv_licenseKey 不同。组件 API 凭据可能有独立权限范围。证据上传凭据短期有效且绑定上传场景;上传 token 不提供面板管理或数据库桥接权限。

在 Servers 选择目标服务器,把当前许可证用 set 写入 server.cfg,替换示例占位值。不要放进 NUI、shared/client Lua 或公开仓库。桥接使用同一服务器许可证,面板操作仍需账户权限。

set tosun_ac_license "YOUR_SERVER_LICENSE"

确认真正运行的是更新版本#

先备份资源和设置,再下载对应服务器的包并对照集成说明,在维护时间替换。确认只有一个活动副本;新文件放在别的目录不会停止旧资源。

本地格式或 license-lock 检查不是订阅付款凭证。API 提示租户未激活或服务器暂停时,检查实际订阅和服务器状态。不要通过关闭保护来掩盖认证错误。

  1. 对比运行中 manifest 版本、启动输出与下载包。
  2. 迁移受支持配置,检查传送、背包和管理员工具的集成。
  3. 从 9.6.14 起,面板连接和在线余额编辑默认开启。旧的 set tosun_db_bridge_enabled 和 set tosun_db_bridge_money_write 行会被忽略,可以删除;9.6.14 之前的安装包仍需要这些行。如果之前关闭过连接或余额编辑,请在服务器的 Tosun Connect 卡片中点击“Disable connection”,或使用手动模式(set tosun_db_bridge_manual "1"),此时 server.cfg 中的值照旧生效。先用小规模读取确认连接并验证正常玩法,再让管理员编辑余额。

更换泄露密钥并清理旧副本#

替换文件不会撤销已公开或曾发送给客户端的许可证。在 Servers 重新生成许可证,更新受保护配置并确认重新连接。其他面板/API 密钥应与管理员协调更换。

付款逾期时在 Billing 查看未付发票和当前支付动作。重新生成密钥不能修复付款。支付结果不明时先核对发票再决定,支持人员只需要参考号和脱敏错误,不需要许可证。

  • 列出所有使用旧密钥的实例和集成,更换前停止过时副本。
  • 尽可能从公开仓库历史、截图、公开备份和支持附件中移除秘密。
  • 新密钥只保存在必要服务端配置,不能放进共享诊断命令。
  • 连接失败时记录服务器 ID、时间和脱敏错误;再次申请密钥前核对服务器与订阅。

把密钥轮换安排为维护操作#

先核对面板所选服务器的名称和 ID,确认它对应实际运行的安装。记录错误开始时间、资源版本以及有权读取配置的人员。订阅逾期、选错服务器和网络故障需要不同处理;单次连接错误不能证明密钥已经泄漏。不要为了排查连接而连续生成多个新密钥。

确需轮换时,在服务器列表中使用所选记录的许可证更新操作。同一记录的密钥会改变,无须新增服务器占用配额。先停止使用旧值的资源副本和私有集成,再更新受保护的 server.cfg,并按维护计划重启。长期有效的密钥不能放入浏览器代码或公开文件。

重装文件时保留服务器身份#

重装资源文件与删除面板服务器记录是不同操作。文件损坏时,应重新下载现有正确服务器的安装包,并独立备份可编辑配置。把旧目录放到活动资源路径之外;同时启动两个副本会使实际生效的配置难以确认。

比较新包的清单版本、依赖启动顺序和本地设置。启动后核对面板中对应服务器的状态。数据库桥接已启用时,只需一次小范围读取验证授权,不要为此修改余额。正确记录、唯一活动副本、预期版本和正常游戏流程都通过后,才接受此次重装。

提供不含秘密的连接故障记录#

支持请求应包含服务器 ID、资源版本、首个错误时间、最后成功连接时间和变更顺序。区分授权拒绝与网络不可达。共享控制台片段前,清除许可证、Authorization 请求头、数据库连接字符串和个人信息;不要发送整份私有备份。

轮换后不要重新使用已泄漏的旧密钥。需要回退资源文件时,把当前有效密钥写入恢复后的配置。同时修复泄漏源,例如公开仓库;只更换密钥却保留公开副本会重现问题。最后记录连接恢复、旧副本停用和多余访问权限移除的时间,以便后续追踪。

迁移机器时查看许可证会话#

迁移前先停旧副本。把下载页面会话的指纹、最后 IP、版本和最后活动,与迁移记录对应。这是服务器安装会话,不是玩家账号会话。释放错误行可能影响另一安装,不要因看到多行就全清除。新增面板服务器不能替代会话管理,也可能涉及另一配额。

旧机器停用后,通过面板操作释放其正确会话。旧副本仍运行时可在之后重新登记,因此必须先停。当前政策约二十分钟无连接后可释放活动会话的占位;明确撤销的会话不会自动当作过期。seat_taken 应查占用和正确行,不要与 license_rotated 或订阅问题混淆。用启动输出、新会话和正常连接验收新机器。

2026 年 10 月 7 日之前下载的安装包可能在每次许可证检查时发送不同的服务器指纹。服务器因此把自己的会话当成第二台服务器,收到 seat_taken,并在每次启动几分钟后停止接受玩家("Lisans dogrulanamadi")。许可证服务在 2026 年 11 月 5 日之前重新接受这些安装包:请重启该资源一次,并在该日期之前重新下载安装包以获得已修复的许可证客户端。

一起理解 Build ID 与 license_rotated#

下载历史 Build ID 标识分发包,不是许可证本身。把文件名版本与 Build ID 前缀对应历史。其他服务器的包即使名称相似仍不正确。unknown_build、revoked、license_mismatch、license_rotated 是不同绑定检查,不应每个消息都生成新密钥。记录准确结果并排除私有值。

服务器页面轮换后,旧分发包仍绑定旧许可证摘要,仅改 server.cfg 不更新包绑定。应从同一正确服务器记录下载当前包,并更新受保护设置。回退时也不能假定旧密钥包有效。历史帮助追踪分发,却不能证明具体分享者。当前包、有效密钥和成功许可结果须一起核对,付款另行确认。

了解各保护层的边界#

此软件包不要求Tebex或Asset Escrow账户;FiveM的普通Cfx.re服务器许可证是独立要求。AES-256-GCM保护存储中的ZIP,不会向游戏服务器所有者隐藏下载的源文件。

Ed25519验证已签名的许可证回复,私有签名密钥不随包分发。SHA-256检测文件修改,不加密内容。Lua混淆可以逆向。Build ID帮助查询分发记录,不能单独证明泄露者身份。网络故障不等于经过认证的许可证拒绝。

准备更新与回退#

私下备份configs、admins、editable、bridge、语言文件及server.cfg。为同一个服务器下载。有效缓存包可能保留相同Build ID;下载不会续订方案或轮换许可证。

逐项比较设置,不要用旧共享配置整体覆盖新文件。机密值仅留在服务器,不要修改受保护核心。检查启动、正常玩家登录与小规模面板读取。许可证轮换后,仅修改server.cfg可能无法让旧包重新有效。

复制所选服务器的 Tosun 许可证#

在 TosunDev 的服务器页面选择自己的 FiveM 服务器,复制该记录的 Tosun AC 许可证。tac_live_ 不是 Cfx.re 许可证、sv_licenseKey、Discord Token 或面板 API 密钥,各项凭据不能混用。

  1. 将 server.cfg 中引号内的 YOUR_SERVER_LICENSE 替换为真实 Tosun 许可证。
  2. tosun_ac_license 必须位于 ensure tosun-ac 前;只用 set,不能使用 setr 或 sets。
  3. 也可以填写 configs/anticheat_server.lua 的 credentials.licenseKey。非空 convar 优先于文件。
  4. 不要在截图、聊天、shared config 或客户端文件中公开许可证。
set tosun_ac_license "YOUR_SERVER_LICENSE"
# Alternative: configs/anticheat_server.lua
# credentials.licenseKey = "YOUR_SERVER_LICENSE"