跳到正文

备份、恢复与数据清理

系统设置 → 维护 用于自动或手动备份、导入 fn-knock 的应用级配置,或清空当前实例。.knock 归档适合迁移和配置回退,但不等于整机、容器卷或上游业务数据备份。

备份包含什么

导出会收集 fn-knock 应用命名空间中可恢复的配置和凭据,例如:

  • 认证账号、TOTP、Passkey 及外部登录配置;
  • 子域、路径、网关、WAF、会话策略等应用设置;
  • 证书和私钥、DDNS、通知与隧道连接配置;
  • 其他由 fn-knock 持久化、可在新实例重新应用的对象。

运行日志、事件、会话、临时授权、登录退避、锁、流量统计、WAF 统计、隧道运行状态、DDNS 最近一次地址及其他短期运行数据会被排除。下载的 FRP / Cloudflared / acme.sh 文件、宿主机防火墙状态、外部 DNS 记录和上游应用数据也不在应用备份内。

因此,迁移整套环境时通常需要两层备份:

  1. 从维护页导出的 .knock,用于恢复应用配置;
  2. 平台数据目录、Docker 卷或系统快照,用于保留 SQLite、下载资源及平台运行数据。

安全边界

.knock 使用带密码的 ZIP 兼容格式。这里的固定归档密码是业界常见的低成本应用包封装方式:便于程序识别 fn-knock 备份格式,提高误操作或随手修改包内内容的门槛,同时利用 ZIP 压缩降低包体积。它不是用来存储或加密用户登录密码的机制,也不表示用户密码会以明文写入归档;采用固定归档密码本身不属于“明文存储密码”的安全事故。

由于归档密码会随应用一起分发,它不承担加密或保密职责。归档仍可能包含证书私钥、TOTP seed、账号凭据散列,以及 OIDC / DDNS / 通知 / FRP 等可直接使用的敏感配置,因此仍应把文件作为敏感配置备份处理:

  • 只保存到加密磁盘、可信密码库或受控离线介质;
  • 经网盘、邮件或聊天工具传输前再做独立强加密;
  • 不要上传到公开 Issue、群聊、公开共享目录或诊断附件;
  • 定期清理旧副本,并把备份读取权限限制到实际维护人员。

自动备份

系统设置 → 维护 → 自动备份 可把 .knock 定期写入服务端数据目录下的 backups/automatic。默认关闭;默认间隔为 24 小时、保留 7 天。间隔可设为 18760 小时,保留期可设为 13650 天。

首次启用后会立即创建一份备份,随后按间隔执行。页面会显示实际目录、最近成功时间、下次计划时间和最近错误;失败后会提前重试,最长不会晚于约 1 小时。清理任务只删除自动备份目录中超过保留期的 .knock 归档,不会把其他文件当成旧备份删除。

自动备份与手动导出使用相同的内容、兼容性和安全边界。它保存在当前服务端的数据磁盘或容器卷中,无法防护磁盘损坏、卷丢失或整机故障;应定期把重要副本再复制到其他设备或受控的异地存储。

恢复时可点击 从自动备份选择,直接读取服务端自动备份目录中的文件,无需先下载到浏览器设备。恢复会保留当前自动备份计划设置,避免导入旧归档意外覆盖调度策略。执行“清空所有数据”后,已有自动备份文件仍留在服务端目录,但调度配置会随应用数据重置为关闭;重新启用前先确认磁盘中旧文件的保留需求。

导出备份

进入 系统设置 → 维护 → 导出备份

  • 页面提供共享目录能力时,可写入 fn-knock / backup,也可下载到当前浏览器设备;
  • 其他部署直接下载到当前设备;
  • 文件名以 fn-knock-backup- 开头,以 .knock 结尾,并包含导出时间。

共享目录入口通常只在原生飞牛 FPK 或明确挂载了受支持共享根目录的环境出现;Docker 和 OpenWrt 不显示该入口。共享目录并不天然安全,仍要检查其访问权限。

建议在以下时点导出:

  • 首次完成认证、路由和证书配置后;
  • 修改运行模式、根域名、认证方式或 WAF 前;
  • 应用更新、迁移、重装或清理数据前;
  • 凭据、证书、DDNS 或隧道配置发生重要变更后。

导出完成不代表备份可用。至少确认文件非空、扩展名正确,并在隔离或可回退的实例上定期演练导入。

导入前检查

导入不是合并,而是替换当前 fn-knock 应用命名空间。开始前:

  1. 从当前实例再导出一份回退备份。
  2. 确认仍有局域网、桌面入口或系统控制台可重新进入管理后台。
  3. 确认归档来源可信且没有在不可信设备上解压或修改。
  4. 记录当前版本、运行模式、认证 Host、网关端口和一条关键业务映射。
  5. 在跨平台迁移时,另外记录防火墙、端口发布、共享目录和外部 DNS 状态。

服务端当前接受的归档必须:

  • 使用 .knock 扩展名;
  • 大小不超过 128 MiB
  • 使用当前支持的备份 Schema,当前为 Schema 1
  • 归档应用版本不低于当前代码定义的最低兼容版本(当前为 1.4.0);
  • 归档应用版本不高于正在运行的 fn-knock 版本。

因此,新版本导出的备份不能直接恢复到旧版本。应先把目标升级到相同或更高版本,再导入;具体支持范围以失败提示中的版本区间为准。

执行恢复

  1. 在维护页选择本地 .knock 文件;也可从服务端自动备份目录选择,支持共享目录时还可从 fn-knock / backup 选择。
  2. 核对文件名、大小和来源,点击开始导入。
  3. 阅读覆盖警告并确认。
  4. 等待导入结果;成功后页面会重新加载。

服务端会清空现有 fn_knock: 数据并写入归档中允许恢复的条目,然后依次尝试同步:

  • 当前运行模式和网关路由;
  • 直连模式白名单(适用时);
  • 网关日志、WAF 和 SSL 部署;
  • 旧认证日志清理及系统资源监控状态。

导入结果中的“警告”表示配置条目已经导入,但一个或多个运行态同步步骤失败。它不会自动把整个实例回滚到导入前状态。保存警告内容,保持管理入口可用,并按下节逐项处理。

恢复后验收

按从管理面到公网链路的顺序检查:

  1. 能否重新进入管理后台,认证账号、TOTP、Passkey 或外部登录是否符合预期。
  2. 运行模式、根域名、认证 Host、映射数量和关键 Target 是否正确。
  3. 网关、WAF、证书和请求日志是否正常;有警告时先检查对应同步步骤。
  4. FRP / Cloudflared 资源是否已安装并重新运行。
  5. DDNS、通知提供商和外部登录凭据能否测试成功。
  6. 从移动网络访问认证 Host 和至少一条受保护业务 Host。
  7. 确认请求日志中的真实客户端 IP、路由与上游状态正确。
  8. 跨平台迁移时重新配置端口发布、宿主机防火墙、智能连接和系统服务。

恢复的配置可能引用旧环境的回环地址、局域网 IP、文件路径或域名。配置存在不代表这些外部依赖在新平台也存在。

常见失败

提示或现象处理
文件扩展名不正确选择原始 .knock,不要只修改普通 ZIP 或 JSON 的后缀
Schema 或版本不支持把目标升级到提示范围内;不要手工篡改归档版本字段
归档过大确认文件没有损坏或被替换;单个归档上限为 128 MiB
读取归档失败检查文件完整性、磁盘空间及 unzip 可用性;部分 Linux / OpenWrt 环境会尝试通过系统包管理器安装 unzip
共享目录不可用检查平台是否提供共享根目录、目录是否仍挂载且进程可读写;也可改用本地下载和上传
导入成功但有警告不要重复导入;先检查警告对应的运行模式、WAF、SSL 或网关同步,再按需手动保存相关配置
页面刷新后无法公网登录从保留的局域网或平台入口进入,检查认证 Host、DNS、证书和外部端口,再决定是否恢复导入前备份

清空所有数据

系统设置 → 维护 → 清理 → 清空所有数据 会重置网关并清除服务端存储中的配置、账号、会话、日志和其他应用数据,随后清空当前浏览器的本地存储并重新加载。

操作必须输入页面显示的确认短语;简体中文界面当前为 清空所有数据。它不可撤销,也不会替你从已导出的文件恢复内容。只有在已经验证备份、确认管理入口和部署数据目录无误,并明确要重新初始化实例时才执行。

QQ群:1081609274