Skip to content

常见问题

部署

一定要副节点吗?

不需要。一个主节点就能完整工作。副节点只是用来在多地分摊下载带宽的优化项,小规模/单地区完全不用上。

一定要 PostgreSQL 吗?

不。SQLite / MySQL / PostgreSQL 三选一,SQLite 最省事(单文件零运维),适合起步。需要更强并发或横向扩展时再迁到 PostgreSQL。见 选择数据库

要手动建表吗?

不用。主节点启动时自动执行内嵌迁移(CREATE TABLE IF NOT EXISTS,幂等)。除非你用 CNV_SKIP_MIGRATE=1 关掉它并自己管 schema。

第一个管理员怎么来?

服务端不会自动建。用 admintool create-admin 引导(见 快速部署)。

需要前端构建吗?(npm run build?)

不需要。管理后台前端是 React + 浏览器内 Babel,服务端直接静态分发 .jsx,没有构建步骤。注意:这里说的是业务前端;你现在读的这套文档站是 VitePress,那个才需要 npm 构建。

客户端连不上 / 行为异常

所有客户端都被要求强制更新?

allowed_versions 白名单里没有当前客户端版本。去后台「版本管理」把当前发布版本加进白名单。空白名单 = 拒绝所有客户端。

客户端握手被拒(signature_rejected)?

签名校验没过。要么:

  • 你配的 CNV_SIGNATURE_WHITELIST 与客户端实际签名证书摘要不一致 —— 重新用 keytool -exportcert ... | sha256 核对;
  • 或客户端确实是改包的(正常风控,应当拒绝)。

调试时可临时清空白名单(放行所有,仅开发)。见 防改包闸门

卡在"维护中"?

后台「服务器控制」状态是 维护中。切回 正常

边缘节点不出现 / 面板连不上节点?

  • 节点首次启动会在日志打印连接密钥;确认已把它和 ctrl_url(ws://host:9090/ctrl)、api_url 一起填进面板节点注册表
  • 跨机部署时节点须设 CNV_CONTROL_ADDR=:9090(默认只绑 127.0.0.1),并在防火墙对面板放行该端口。
  • 面板「节点状态」页确认节点 online=true;离线时面板每 30s 自动重连。
  • 客户端要看到边缘节点,需业务节点配置了 CNV_DIRECTORY_FILE(已签名目录,且该节点声明了 caps: ["resource"])。

来源 IP / 限流

限流好像把所有人当成一个人?

放在反代后面却没设 CNV_TRUST_PROXY,导致所有请求 IP 都记成网关 IP,IP 维度限流退化成全局共享一个桶。设对 CNV_TRUST_PROXY 并让网关重写转发头。见 受信任代理

审计日志里 IP 全是内网网关地址?

同上,trust proxy 没配对。

账号 / 邮件

注册收不到验证码?

当前实现把验证码写入数据库,实际发信需要你对接外部邮件服务(本仓库不含 SMTP 客户端)。本地开发可设 CNV_EMAIL_DEV_MODE=on 把验证码打到日志看。

生产别开 EMAIL_DEV_MODE

开着等于把验证码公开在日志里。生产必须关闭(默认即关)。

玩家忘了密码?

让玩家走「找回密码」(邮箱验证码),或管理员用 admintool reset-account 重置。

玩家想多设备登录?

支持。玩家会话按 token 管理,可在「用户中心」看到所有登录设备并踢下线。改密码会让其它设备下线。

数据 / 备份

最该备份什么?

数据库里的 config(配置)、accounts(玩家)、saves(存档)。整库定期快照即可。见 日常运维

云存档有多大限制?

全站请求体上限 8 MiB;云存档上传额外限速单会话 2 次/分钟,防刷。

能从 SQLite 迁到 PostgreSQL 吗?

可以,schema 简单。用新 DSN 启动建表,再用通用工具搬数据。见 选择数据库

升级 / 运维

升级会丢数据吗?

不会。迁移只新增表/索引(IF NOT EXISTS),不动既有数据。但升级前务必先备份数据库

改了后台配置要重启吗?

不用。配置写数据库,客户端下次握手即生效。改 CNV_* 环境变量才需要重启。

怎么平滑停机?

systemctl stopCtrl-CSIGTERM,进程会给在途请求最多 10 秒优雅收尾再退出。

还有问题?

文档正文以 CC BY-NC-SA 4.0 授权 · 代码部分以 GPLv3 开源 · 本项目仅作学习研究使用,与版权方无任何关联