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