跳至正文

備份、還原與資料清理

系統設定 → 維護 可用來自動或手動備份、匯入 fn-knock 的應用程式層級設定,或清除目前執行個體。.knock 封存檔適合用於移機與設定回復,但不等同於整機、Container Volume 或上游服務資料的備份。

備份包含哪些內容

匯出作業會收集 fn-knock 應用程式命名空間中可還原的設定與憑據,例如:

  • 身分驗證帳號、TOTP、Passkey 與外部登入設定;
  • 子網域、路徑、閘道、WAF、工作階段原則等應用程式設定;
  • 憑證與私密金鑰、DDNS、通知及 Tunnel 連線設定;
  • 其他由 fn-knock 持久化,且可在新執行個體重新套用的物件。

執行記錄、事件、工作階段、臨時授權、登入退避、鎖定狀態、流量統計、WAF 統計、Tunnel 執行狀態、DDNS 最近一次位址,以及其他短期執行資料都會排除。下載的 FRP / Cloudflared / acme.sh 檔案、Host 防火牆狀態、外部 DNS Record 與上游應用程式資料,也不包含在應用程式備份內。

因此,移轉整套環境時通常需要兩層備份:

  1. 從維護頁面匯出的 .knock,用來還原應用程式設定;
  2. 平台資料目錄、Docker Volume 或系統快照,用來保留 SQLite、下載資源與平台執行資料。

安全邊界

.knock 使用受密碼保護、相容 ZIP 的格式。這個固定封存密碼是業界常見的低成本應用程式套件封裝方式:讓程式能識別 fn-knock 備份格式、提高誤操作或隨手修改套件內容的門檻,並保留 ZIP 壓縮以降低檔案大小。它不是用來儲存或加密使用者登入密碼的機制,也不代表使用者密碼會以明文寫入封存檔;採用固定封存密碼本身不屬於「明文儲存密碼」的安全事故。

由於封存密碼會隨應用程式一同散布,因此不承擔加密或保密職責。封存檔仍可能包含憑證私密金鑰、TOTP Seed、帳號憑據雜湊,以及 OIDC / DDNS / 通知 / FRP 等可直接使用的敏感設定,因此仍應將檔案視為敏感設定備份:

  • 只儲存在加密磁碟、可信任的密碼保管庫,或受控的離線媒體;
  • 透過雲端硬碟、電子郵件或聊天工具傳送前,請另外進行高強度加密;
  • 不要上傳至公開 Issue、群組聊天、公開分享資料夾或診斷附件;
  • 定期清理舊副本,並將備份讀取權限限縮給實際維護人員。

自動備份

系統設定 → 維護 → 自動備份 可將 .knock 定期寫入伺服器資料目錄下的 backups/automatic。預設關閉;預設間隔為 24 小時、保留 7 天。間隔可設為 18760 小時,保留期限可設為 13650 天。

首次啟用後會立即建立一份備份,之後再依間隔執行。頁面會顯示實際目錄、最近成功時間、下次排程時間與最近錯誤;失敗後會提前重試,最晚約 1 小時內再次嘗試。清理工作只會刪除自動備份目錄中超過保留期限的 .knock 封存檔,不會將其他檔案視為舊備份刪除。

自動備份與手動匯出使用相同的內容、相容性和安全邊界。它儲存在目前伺服器的資料磁碟或 Container Volume 中,無法防護磁碟損壞、Volume 遺失或整台主機故障;請定期將重要副本另行複製至其他裝置或受控的異地儲存空間。

還原時可按一下 從自動備份選擇,直接讀取伺服器端自動備份目錄中的檔案,不必先下載至瀏覽器裝置。還原會保留目前的自動備份排程設定,避免匯入舊封存檔意外覆寫排程。執行「清空所有資料」後,既有自動備份檔仍會保留在伺服器目錄,但排程設定會隨應用程式資料重設為關閉;重新啟用前請先確認舊檔案的保留需求。

匯出備份

前往 系統設定 → 維護 → 匯出備份

  • 頁面提供分享資料夾功能時,可寫入 fn-knock / backup,也可下載到目前瀏覽器所在的裝置;
  • 其他部署方式會直接下載到目前裝置;
  • 檔名以 fn-knock-backup- 開頭、以 .knock 結尾,並包含匯出時間。

分享資料夾選項通常只會出現在原生飛牛 FPK,或已明確掛載受支援分享根目錄的環境;Docker 與 OpenWrt 不會顯示此選項。分享資料夾並非天生安全,仍需檢查其存取權限。

建議在下列時機匯出:

  • 首次完成身分驗證、路由與憑證設定後;
  • 修改執行模式、根網域、驗證方式或 WAF 前;
  • 應用程式更新、移機、重新安裝或清除資料前;
  • 憑據、憑證、DDNS 或 Tunnel 設定有重大變更後。

匯出完成不代表備份一定可用。至少應確認檔案不是空檔、附檔名正確,並定期在隔離或可回復的執行個體上演練匯入。

匯入前檢查

匯入不是合併,而是取代目前的 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 部署;
  • 舊身分驗證記錄清理,以及系統資源監控狀態。

匯入結果中的「警告」代表設定項目已經匯入,但一或多個 Runtime 同步步驟失敗。系統不會自動將整個執行個體回復至匯入前的狀態。請保存警告內容、確保管理入口仍可使用,再依下一節逐項處理。

還原後驗收

請依管理介面至公網連線路徑的順序檢查:

  1. 是否能重新進入管理後台,身分驗證帳號、TOTP、Passkey 或外部登入是否符合預期。
  2. 執行模式、根網域、身分驗證 Host、映射數量與關鍵 Target 是否正確。
  3. 閘道、WAF、憑證與請求記錄是否正常;若有警告,先檢查對應的同步步驟。
  4. FRP / Cloudflared 資源是否已安裝並重新執行。
  5. DDNS、通知供應商與外部登入憑據是否能通過測試。
  6. 從行動網路存取身分驗證 Host,以及至少一個受保護的服務 Host。
  7. 確認請求記錄中的真實用戶端 IP、路由與上游狀態正確。
  8. 跨平台移轉時,重新設定連接埠發布、Host 防火牆、智慧連線與系統服務。

還原的設定可能引用舊環境的 Loopback 位址、區域網路 IP、檔案路徑或網域。設定存在,不代表這些外部相依項目在新平台上也同樣存在。

常見失敗

提示或現象處理方式
檔案附檔名不正確選擇原始 .knock 檔,不要只修改一般 ZIP 或 JSON 的附檔名
不支援 Schema 或版本將目標環境升級至提示的支援範圍內;不要手動竄改封存檔的版本欄位
封存檔過大確認檔案未損毀或遭取代;單一封存檔上限為 128 MiB
無法讀取封存檔檢查檔案完整性、磁碟空間與 unzip 是否可用;部分 Linux / OpenWrt 環境會嘗試透過系統套件管理員安裝 unzip
分享資料夾無法使用檢查平台是否提供分享根目錄、目錄是否仍已掛載,以及處理程序是否具備讀寫權限;也可改用本機下載與上傳
匯入成功但出現警告不要重複匯入;先檢查警告所對應的執行模式、WAF、SSL 或閘道同步,再視需要手動儲存相關設定
頁面重新載入後無法從公網登入從保留的區域網路或平台入口進入,檢查身分驗證 Host、DNS、憑證與外部連接埠,再決定是否還原匯入前的備份

清除所有資料

系統設定 → 維護 → 清理 → 清除所有資料 會重設閘道,並清除伺服器端儲存的設定、帳號、工作階段、記錄與其他應用程式資料,接著清除目前瀏覽器的 Local Storage 並重新載入。

執行此操作時,必須輸入頁面顯示的確認詞組;簡體中文介面目前為 清空所有数据。此操作無法復原,也不會自動從已匯出的檔案替你還原內容。只有在備份已通過驗證、確認管理入口與部署資料目錄皆無誤,而且確定要重新初始化執行個體時,才應執行。

QQ 群組:1081609274