Files
Mebbling/docs/OPERATIONS.md
T

1.9 KiB
Raw Blame History

維運:備份、還原與資料庫升級

備份

在專案根目錄執行:

./scripts/backup.sh

腳本會在 data/backups/YYYYMMDD-HHMMSS/ 建立兩個檔案:

  • hub.db:由正在執行的 SQLite 資料庫建立的一致性備份。
  • uploads.tar.gzHub 本機上傳的附件。

data/backups/ 已由 Git 排除。請將備份複製到另一台主機或加密的雲端儲存;只留在同一台機器不算完整備份。

還原

  1. 停止服務:docker compose down
  2. 備份目前的 data/hub.dbpublic/uploads/,以免操作失誤。
  3. 將選定備份中的 hub.db 覆蓋為 data/hub.db
  4. 解開附件:tar -xzf data/backups/<時間>/uploads.tar.gz -C public
  5. 重新啟動:docker compose up -d

請始終一起還原資料庫與附件,否則貼文中的附件連結可能失效。

健康檢查與日誌

反向代理或監控服務可呼叫 GET /api/health。收到 200 且 JSON 的 ok: true 表示 Web 與 SQLite 可用;failedJobs 可用於設定同步異常告警。

容器日誌為 JSON 事件。管理員頁會保留最近的同步錯誤;請定期備份 SQLite,因為錯誤事件和限流狀態同樣位於資料庫。

附件掃毒

Hub 原生附件預設只接受圖片、PDF、純文字與 Markdown。若要串接掃毒服務,設定 VIRUS_SCAN_URL;服務應接受檔案內容的 HTTP POST,並回覆 JSON { "clean": true }。設為 VIRUS_SCAN_REQUIRED=1 後,掃毒服務逾時或不可用時會拒絕上傳。

Schema migration

資料庫 schema 由 lib/db.ts 管理。每個欄位 migration 在 schema_migrations 表中記錄版本與套用時間,啟動 Web 或 Worker 時會自動執行尚未套用的安全 migration。

升級 Mebbling 前請先執行備份。若新版本在測試環境正常運作,再升級正式資料;不支援直接以舊程式碼讀取已升級 schema 的保證。