备份、恢复与数据清理
系统设置 → 维护 用于自动或手动备份、导入 fn-knock 的应用级配置,或清空当前实例。.knock 归档适合迁移和配置回退,但不等于整机、容器卷或上游业务数据备份。
备份包含什么
导出会收集 fn-knock 应用命名空间中可恢复的配置和凭据,例如:
- 认证账号、TOTP、Passkey 及外部登录配置;
- 子域、路径、网关、WAF、会话策略等应用设置;
- 证书和私钥、DDNS、通知与隧道配置;
- 远程 SSH 目标及其受保护的密码、私钥和口令;
- 静态 Host 的响应类型、服务器路径、默认文档和目录列表设置;
- 其他由 fn-knock 持久化、可在新实例重新应用的对象。
运行日志、事件、登录会话、活动终端会话、本机终端启用开关、临时授权、登录退避、锁、流量统计、WAF 统计、隧道运行状态、WOL 在线状态、DDNS 最近一次地址及其他短期或主机专属运行数据会被排除。下载的 FRP / Cloudflared / acme.sh 文件、Cloudflare API Token 与 Tunnel Token、WOL Relay PSK、点灯设备密钥与巴法云私钥、宿主机防火墙状态、外部 DNS 记录、静态映射实际文件和上游应用数据也不在应用备份内。恢复后需要重新连接 Cloudflare API、重新填写手动 Tunnel Token,并重新配对 WOL Relay 或填写第三方平台凭据;远端 Cloudflare 资源不会因导入备份而自动删除或重建。
导入会恢复远程 SSH 目标及其凭据,但不会复活导出时运行的 Shell。本机终端开关属于当前宿主机的安全选择,恢复后保持关闭;需要使用时,应在新环境重新核对执行身份、Shell 和初始目录,再完成风险确认并手动启用。
因此,迁移整套环境时通常需要两层备份:
- 从维护页导出的
.knock,用于恢复应用配置; - 平台数据目录、Docker 卷或系统快照,用于保留 SQLite、下载资源及平台运行数据。
安全边界
.knock 使用带密码的 ZIP 兼容格式。这里的固定归档密码是业界常见的低成本应用包封装方式:便于程序识别 fn-knock 备份格式,提高误操作或随手修改包内内容的门槛,同时利用 ZIP 压缩降低包体积。它不是用来存储或加密用户登录密码的机制,也不表示用户密码会以明文写入归档;采用固定归档密码本身不属于“明文存储密码”的安全事故。
由于归档密码会随应用一起分发,它不承担加密或保密职责。归档仍可能包含证书私钥、TOTP seed、账号凭据散列,以及 OIDC / LDAP / DDNS / 通知 / FRP 等可直接使用的敏感配置,因此仍应把文件作为敏感配置备份处理:
- 只保存到加密磁盘、可信密码库或受控离线介质;
- 经网盘、邮件或聊天工具传输前再做独立强加密;
- 不要上传到公开 Issue、群聊、公开共享目录或诊断附件;
- 定期清理旧副本,并把备份读取权限限制到实际维护人员。
自动备份
系统设置 → 维护 → 自动备份 可把 .knock 定期写入服务端数据目录下的 backups/automatic。默认关闭;默认间隔为 24 小时、保留 7 天。间隔可设为 1~8760 小时,保留期可设为 1~3650 天。
首次启用后会立即创建一份备份,随后按间隔执行。页面会显示实际目录、最近成功时间、下次计划时间和最近错误;失败后会提前重试,最长不会晚于约 1 小时。清理任务只删除自动备份目录中超过保留期的 .knock 归档,不会把其他文件当成旧备份删除。
自动备份与手动导出使用相同的内容、兼容性和安全边界。它保存在当前服务端的数据磁盘或容器卷中,无法防护磁盘损坏、卷丢失或整机故障;应定期把重要副本再复制到其他设备或受控的异地存储。
恢复时可点击 从自动备份选择,直接读取服务端自动备份目录中的文件,无需先下载到浏览器设备。恢复会保留当前自动备份计划设置,避免导入旧归档意外覆盖调度策略。执行“清空所有数据”后,已有自动备份文件仍留在服务端目录,但调度配置会随应用数据重置为关闭;重新启用前先确认磁盘中旧文件的保留需求。
备份邮件
在 系统设置 → 维护 → 自动备份 点击 备份邮件,进入独立页面,启用邮寄并配置 SMTP、发件人与收件人,再保存。备份邮件使用独立配置,不复用通知中心的邮件提供商;本地备份周期与保留设置仍在维护页管理。
邮寄默认关闭。连接默认使用端口 465、TLS 和 30 秒超时;附件上限默认 20 MiB,可设为 1–100 MiB。点击 发送测试邮件 会使用当前表单和已保存密码发送小型测试附件,不保存表单,也不生成备份。测试成功后仍需保存,并分别核对本地备份和邮件投递状态。
- 自动备份成功写入本地后,后台邮寄同一份
.knock文件;邮件失败不影响已保存的本地副本。 - 临时错误按
1、5、30分钟间隔重试,最多尝试4次;认证失败、永久拒收、无效地址、文件缺失和附件超限不重试。 - 附件上限按原始文件大小计算,邮件编码后可能超过服务商限制。超限时尝试发送无附件说明邮件,附件邮寄仍记为失败。
- 待发任务最多保留
24小时,其附件暂缓过期清理;服务重启后会恢复未完成任务。SMTP 已接收但本地尚未记录成功时发生中断,可能导致重复邮件。 - 关闭自动备份或邮寄、修改邮件配置会取消未开始的旧任务,已提交的邮件不能撤回。
邮件配置、SMTP 凭据和任务不包含在 .knock 备份中。恢复保留目标实例现有邮件设置及状态;新机器需要重新配置,清空全部数据会清理邮件凭据。附件仍是敏感配置归档,内置邮寄不会额外提供独立强加密,只应使用受控邮箱并限制附件访问。
导出备份
进入 系统设置 → 维护 → 导出备份:
- 页面提供共享目录能力时,可写入
fn-knock / backup,也可下载到当前浏览器设备; - 其他部署直接下载到当前设备;
- 文件名以
fn-knock-backup-开头,以.knock结尾,并包含导出时间。
共享目录入口通常只在原生飞牛 FPK 或明确挂载了受支持共享根目录的环境出现;Docker 和 OpenWrt 不显示该入口。共享目录并不天然安全,仍要检查其访问权限。
建议在以下时点导出:
- 首次完成认证、路由和证书配置后;
- 修改运行模式、根域名、认证方式或 WAF 前;
- 应用更新、迁移、重装或清理数据前;
- 凭据、证书、DDNS 或隧道配置发生重要变更后。
导出完成不代表备份可用。至少确认文件非空、扩展名正确,并在隔离或可回退的实例上定期演练导入。
导入前检查
导入不是合并,而是替换当前 fn-knock 应用命名空间。开始前:
- 从当前实例再导出一份回退备份。
- 确认仍有局域网、桌面入口或系统控制台可重新进入管理后台。
- 确认归档来源可信且没有在不可信设备上解压或修改。
- 记录当前版本、运行模式、认证 Host、网关端口和一条关键业务映射。
- 在跨平台迁移时,另外记录防火墙、端口发布、共享目录、静态内容目录或 Docker 只读挂载,以及外部 DNS 状态。
服务端当前接受的归档必须:
- 使用
.knock扩展名; - 大小不超过
128 MiB; - 使用当前支持的备份 Schema,当前为 Schema
1; - 归档应用版本满足当前代码定义的最低兼容要求;
- 归档应用版本不高于正在运行的 fn-knock 版本。
因此,新版本导出的备份不能直接恢复到旧版本。应先把目标升级到相同或更高版本,再导入;具体支持范围以失败提示中的版本区间为准。
执行恢复
- 在维护页选择本地
.knock文件;也可从服务端自动备份目录选择,支持共享目录时还可从fn-knock / backup选择。 - 核对文件名、大小和来源,点击开始导入。
- 阅读覆盖警告并确认。
- 等待导入结果;成功后页面会重新加载。
服务端会先校验完整归档并为当前可恢复数据创建事务快照,再替换 fn_knock: 应用数据。归档中带有效期的条目会扣除从导出到导入之间已经过去的时间,已经过期的条目不会被恢复。
Schema、版本、条目格式、重复键、配置迁移或 Cloudflared 凭据清理等致命步骤失败时,服务端会尝试把存储恢复到导入前快照;错误信息会额外指出存储或运行态回滚是否失败。通过这些步骤后,系统依次同步:
- 当前运行模式和网关路由;
- 网关可信客户端 IP、请求日志、WAF 和 SSL 部署;
- 自动 HTTPS、智能连接、飞牛端口图标接管和飞牛网络调优(适用时);
- 语言配置;
- 旧认证日志清理及系统资源监控状态。
导入结果中的“警告”表示配置条目已经导入,但一个或多个非致命运行态同步或事务收尾步骤失败。此时不会因为警告自动回滚已经导入的配置。保存警告内容,保持管理入口可用,并按下节逐项处理。
恢复后验收
按从管理面到公网链路的顺序检查:
- 能否重新进入管理后台,认证账号、TOTP、Passkey 或外部登录是否符合预期。
- 运行模式、根域名、认证 Host、映射数量、关键 Target 和静态服务器路径是否正确。
- 网关、WAF、证书和请求日志是否正常;有警告时先检查对应同步步骤。
- FRP / Cloudflared 资源是否已安装并重新运行;Cloudflare 托管模式需重新连接 API Token,手动模式需重新填写 Tunnel Token。
- DDNS、通知提供商和外部登录凭据能否测试成功。
- 检查远程 SSH 目标并重新测试指纹和连接;需要本机终端时,重新核对执行身份、Shell 和初始目录后再启用。
- 如果使用远程唤醒,重新配对 Relay、填写点灯或巴法云凭据,并验证设备 IP、广播地址和在线检测。
- 从移动网络访问认证 Host 和至少一条受保护业务 Host。
- 确认请求日志中的真实客户端 IP、路由与上游状态正确。
- 跨平台迁移时重新配置端口发布、宿主机防火墙、智能连接、系统服务和静态内容目录;Docker 还需重新创建只读挂载。
恢复的配置可能引用旧环境的回环地址、局域网 IP、文件路径或域名。配置存在不代表这些外部依赖在新平台也存在。静态映射恢复后应逐条打开 浏览,重新定位并选择文件或目录,再保存映射;.knock 只恢复路径和选项,不复制目录中的文件。完整边界见静态文件与目录响应。
常见失败
| 提示或现象 | 处理 |
|---|---|
| 文件扩展名不正确 | 选择原始 .knock,不要只修改普通 ZIP 或 JSON 的后缀 |
| Schema 或版本不支持 | 把目标升级到提示范围内;不要手工篡改归档版本字段 |
| 归档过大 | 确认文件没有损坏或被替换;单个归档上限为 128 MiB |
| 读取归档失败 | 检查文件完整性、归档密码、内部 fn-knock-backup.json 及磁盘空间;fn-knock 直接读取 ZIP,不依赖系统 unzip 命令 |
| 导入失败并提示已回滚 | 当前配置通常已恢复到导入前快照;若同时提示存储或运行态回滚失败,立即停止反复导入,保留错误详情并从平台入口检查实例 |
| 共享目录不可用 | 检查平台是否提供共享根目录、目录是否仍挂载且进程可读写;也可改用本地下载和上传 |
| 导入成功但有警告 | 不要重复导入;先检查警告对应的运行模式、WAF、SSL 或网关同步,再按需手动保存相关配置 |
| 页面刷新后无法公网登录 | 从保留的局域网或平台入口进入,检查认证 Host、DNS、证书和外部端口,再决定是否恢复导入前备份 |
清空所有数据
系统设置 → 维护 → 清理 → 清空所有数据 会重置网关并清除服务端存储中的配置、账号、会话、日志和其他应用数据,随后清空当前浏览器的本地存储并重新加载。
操作必须输入页面显示的确认短语;简体中文界面当前为 清空所有数据。它不可撤销,也不会替你从已导出的文件恢复内容。只有在已经验证备份、确认管理入口和部署数据目录无误,并明确要重新初始化实例时才执行。
