備份、還原與資料清理
系統設定 → 維護 可用來自動或手動備份、匯入 fn-knock 的應用程式層級設定,或清除目前執行個體。.knock 封存檔適合用於移機與設定回復,但不等同於整機、Container Volume 或上游服務資料的備份。
備份包含哪些內容
匯出作業會收集 fn-knock 應用程式命名空間中可還原的設定與憑據,例如:
- 身分驗證帳號、TOTP、Passkey 與外部登入設定;
- 子網域、路徑、閘道、WAF、工作階段原則等應用程式設定;
- 憑證與私密金鑰、DDNS、通知及 Tunnel 連線設定;
- 其他由 fn-knock 持久化,且可在新執行個體重新套用的物件。
執行記錄、事件、工作階段、臨時授權、登入退避、鎖定狀態、流量統計、WAF 統計、Tunnel 執行狀態、DDNS 最近一次位址,以及其他短期執行資料都會排除。下載的 FRP / Cloudflared / acme.sh 檔案、Host 防火牆狀態、外部 DNS Record 與上游應用程式資料,也不包含在應用程式備份內。
因此,移轉整套環境時通常需要兩層備份:
- 從維護頁面匯出的
.knock,用來還原應用程式設定; - 平台資料目錄、Docker Volume 或系統快照,用來保留 SQLite、下載資源與平台執行資料。
安全邊界
.knock 使用受密碼保護、相容 ZIP 的格式。這個固定封存密碼是業界常見的低成本應用程式套件封裝方式:讓程式能識別 fn-knock 備份格式、提高誤操作或隨手修改套件內容的門檻,並保留 ZIP 壓縮以降低檔案大小。它不是用來儲存或加密使用者登入密碼的機制,也不代表使用者密碼會以明文寫入封存檔;採用固定封存密碼本身不屬於「明文儲存密碼」的安全事故。
由於封存密碼會隨應用程式一同散布,因此不承擔加密或保密職責。封存檔仍可能包含憑證私密金鑰、TOTP Seed、帳號憑據雜湊,以及 OIDC / DDNS / 通知 / FRP 等可直接使用的敏感設定,因此仍應將檔案視為敏感設定備份:
- 只儲存在加密磁碟、可信任的密碼保管庫,或受控的離線媒體;
- 透過雲端硬碟、電子郵件或聊天工具傳送前,請另外進行高強度加密;
- 不要上傳至公開 Issue、群組聊天、公開分享資料夾或診斷附件;
- 定期清理舊副本,並將備份讀取權限限縮給實際維護人員。
自動備份
系統設定 → 維護 → 自動備份 可將 .knock 定期寫入伺服器資料目錄下的 backups/automatic。預設關閉;預設間隔為 24 小時、保留 7 天。間隔可設為 1~8760 小時,保留期限可設為 1~3650 天。
首次啟用後會立即建立一份備份,之後再依間隔執行。頁面會顯示實際目錄、最近成功時間、下次排程時間與最近錯誤;失敗後會提前重試,最晚約 1 小時內再次嘗試。清理工作只會刪除自動備份目錄中超過保留期限的 .knock 封存檔,不會將其他檔案視為舊備份刪除。
自動備份與手動匯出使用相同的內容、相容性和安全邊界。它儲存在目前伺服器的資料磁碟或 Container Volume 中,無法防護磁碟損壞、Volume 遺失或整台主機故障;請定期將重要副本另行複製至其他裝置或受控的異地儲存空間。
還原時可按一下 從自動備份選擇,直接讀取伺服器端自動備份目錄中的檔案,不必先下載至瀏覽器裝置。還原會保留目前的自動備份排程設定,避免匯入舊封存檔意外覆寫排程。執行「清空所有資料」後,既有自動備份檔仍會保留在伺服器目錄,但排程設定會隨應用程式資料重設為關閉;重新啟用前請先確認舊檔案的保留需求。
匯出備份
前往 系統設定 → 維護 → 匯出備份:
- 頁面提供分享資料夾功能時,可寫入
fn-knock / backup,也可下載到目前瀏覽器所在的裝置; - 其他部署方式會直接下載到目前裝置;
- 檔名以
fn-knock-backup-開頭、以.knock結尾,並包含匯出時間。
分享資料夾選項通常只會出現在原生飛牛 FPK,或已明確掛載受支援分享根目錄的環境;Docker 與 OpenWrt 不會顯示此選項。分享資料夾並非天生安全,仍需檢查其存取權限。
建議在下列時機匯出:
- 首次完成身分驗證、路由與憑證設定後;
- 修改執行模式、根網域、驗證方式或 WAF 前;
- 應用程式更新、移機、重新安裝或清除資料前;
- 憑據、憑證、DDNS 或 Tunnel 設定有重大變更後。
匯出完成不代表備份一定可用。至少應確認檔案不是空檔、附檔名正確,並定期在隔離或可回復的執行個體上演練匯入。
匯入前檢查
匯入不是合併,而是取代目前的 fn-knock 應用程式命名空間。開始前請先:
- 從目前執行個體再匯出一份可供回復的備份。
- 確認仍可透過區域網路、桌面入口或系統主控台重新進入管理後台。
- 確認封存檔來源可信,且未曾在不受信任的裝置上解壓縮或修改。
- 記錄目前版本、執行模式、身分驗證 Host、閘道連接埠,以及一筆關鍵服務映射。
- 跨平台移轉時,另外記錄防火牆、連接埠發布、分享資料夾與外部 DNS 狀態。
目前伺服器端接受的封存檔必須:
- 使用
.knock附檔名; - 大小不超過
128 MiB; - 使用目前支援的備份 Schema,目前為 Schema
1; - 封存檔中的應用程式版本不得低於目前程式碼定義的最低相容版本(目前為
1.4.0); - 封存檔中的應用程式版本不得高於正在執行的 fn-knock 版本。
因此,由新版本匯出的備份無法直接還原至舊版本。請先將目標環境升級至相同或更高版本,再執行匯入;實際支援範圍以失敗訊息中顯示的版本區間為準。
執行還原
- 在維護頁面選擇本機
.knock檔案,也可從伺服器端自動備份目錄選擇;若支援分享資料夾,還可從fn-knock / backup中選取。 - 核對檔名、大小與來源,按下開始匯入。
- 閱讀覆寫警告並確認。
- 等待匯入結果;成功後頁面會重新載入。
伺服器端會清除現有的 fn_knock: 資料,寫入封存檔中允許還原的項目,再依序嘗試同步:
- 目前的執行模式與閘道路由;
- 直連模式允許清單(如適用);
- 閘道記錄、WAF 與 SSL 部署;
- 舊身分驗證記錄清理,以及系統資源監控狀態。
匯入結果中的「警告」代表設定項目已經匯入,但一或多個 Runtime 同步步驟失敗。系統不會自動將整個執行個體回復至匯入前的狀態。請保存警告內容、確保管理入口仍可使用,再依下一節逐項處理。
還原後驗收
請依管理介面至公網連線路徑的順序檢查:
- 是否能重新進入管理後台,身分驗證帳號、TOTP、Passkey 或外部登入是否符合預期。
- 執行模式、根網域、身分驗證 Host、映射數量與關鍵 Target 是否正確。
- 閘道、WAF、憑證與請求記錄是否正常;若有警告,先檢查對應的同步步驟。
- FRP / Cloudflared 資源是否已安裝並重新執行。
- DDNS、通知供應商與外部登入憑據是否能通過測試。
- 從行動網路存取身分驗證 Host,以及至少一個受保護的服務 Host。
- 確認請求記錄中的真實用戶端 IP、路由與上游狀態正確。
- 跨平台移轉時,重新設定連接埠發布、Host 防火牆、智慧連線與系統服務。
還原的設定可能引用舊環境的 Loopback 位址、區域網路 IP、檔案路徑或網域。設定存在,不代表這些外部相依項目在新平台上也同樣存在。
常見失敗
| 提示或現象 | 處理方式 |
|---|---|
| 檔案附檔名不正確 | 選擇原始 .knock 檔,不要只修改一般 ZIP 或 JSON 的附檔名 |
| 不支援 Schema 或版本 | 將目標環境升級至提示的支援範圍內;不要手動竄改封存檔的版本欄位 |
| 封存檔過大 | 確認檔案未損毀或遭取代;單一封存檔上限為 128 MiB |
| 無法讀取封存檔 | 檢查檔案完整性、磁碟空間與 unzip 是否可用;部分 Linux / OpenWrt 環境會嘗試透過系統套件管理員安裝 unzip |
| 分享資料夾無法使用 | 檢查平台是否提供分享根目錄、目錄是否仍已掛載,以及處理程序是否具備讀寫權限;也可改用本機下載與上傳 |
| 匯入成功但出現警告 | 不要重複匯入;先檢查警告所對應的執行模式、WAF、SSL 或閘道同步,再視需要手動儲存相關設定 |
| 頁面重新載入後無法從公網登入 | 從保留的區域網路或平台入口進入,檢查身分驗證 Host、DNS、憑證與外部連接埠,再決定是否還原匯入前的備份 |
清除所有資料
系統設定 → 維護 → 清理 → 清除所有資料 會重設閘道,並清除伺服器端儲存的設定、帳號、工作階段、記錄與其他應用程式資料,接著清除目前瀏覽器的 Local Storage 並重新載入。
執行此操作時,必須輸入頁面顯示的確認詞組;簡體中文介面目前為 清空所有数据。此操作無法復原,也不會自動從已匯出的檔案替你還原內容。只有在備份已通過驗證、確認管理入口與部署資料目錄皆無誤,而且確定要重新初始化執行個體時,才應執行。
