Dockhand + Backrest 的 Homelab 基礎設施管理與備份方案。
┌─────────────────────────────────────────────────────────┐
│ 這個 Repo │
├─────────────────────────────────────────────────────────┤
│ Dockhand (Port 3000) │ Backrest (Port 9898) │
│ - Docker Compose 管理 │ - 備份 Web UI (restic) │
│ - 容器監控 / 更新 │ - 增量備份 + 去重 │
│ │ - 加密儲存 → Google Drive │
└─────────────────────────────────────────────────────────┘
│
┌────────────────┼────────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Stack A │ │ Stack B │ │ Stack C │
│ (nginx) │ │ (DB) │ │ (app) │
└─────────┘ └─────────┘ └─────────┘
cp .env.example .env
# 修改 STACKS_DIR 為你的 stacks 完整路徑# 啟動 rclone 互動式設定
docker run --rm -it -v ./data/rclone:/config/rclone rclone/rclone config
# 依照提示操作:
# 1. 輸入 n(新增 remote)
# 2. 輸入名稱,例如:gdrive
# 3. 選擇 Google Drive(輸入對應數字)
# 4. client_id 和 client_secret 可留空(使用 rclone 預設)
# 5. scope 選擇 1(完整存取)
# 6. 其他選項按 Enter 使用預設值
# 7. 會開啟瀏覽器進行 Google 授權
# 8. 完成後輸入 q 離開docker compose up -d開啟 http://localhost:9898,在 Web UI 中:
- 新增 Repository:選擇 rclone 類型,路徑填
rclone:gdrive:backrest-backup - 設定加密密碼:
⚠️ 務必備份到密碼管理器,遺失無法恢復 - 建立 Backup Plan:
- 備份來源:
/source/stacks和/source/homelab-data - 排程:每 6 小時
- 保留策略:hourly 24 / daily 7 / weekly 4 / monthly 6
- 備份來源:
- 執行首次備份:手動觸發確認一切正常
開啟 http://localhost:3000,透過 UI 的 import 功能掃描 stacks 目錄,逐一匯入既有的 Docker Compose stacks。
| 服務 | URL | 說明 |
|---|---|---|
| Dockhand | http://localhost:3000 | Docker 管理 |
| Backrest | http://localhost:9898 | 備份管理 |
homelab-compose/
├── compose.yml # 服務定義(Dockhand + Backrest)
├── .env.example # 環境變數範本
├── .env # 你的設定(不進 Git)
├── data/ # 服務資料(不進 Git)
│ ├── backrest/
│ │ ├── config/
│ │ ├── data/
│ │ └── cache/
│ └── rclone/
└── stacks/ # Docker Compose stacks(不進 Git)
| 容器內路徑 | 內容 |
|---|---|
/source/homelab-data |
Backrest 設定 + rclone 設定 |
/source/stacks |
所有 Docker Compose stacks |
本地資料 → Backrest (restic: 增量 + 去重 + 加密) → rclone → Google Drive
所有上傳到 Google Drive 的資料都是加密的,即使 Google 也無法讀取內容。
備份排程與保留策略皆在 Backrest Web UI 中設定,不需要使用 CLI。
# 1. 安裝 Docker
curl -sSL https://get.docker.com | sh
# 2. 安裝 restic 和 rclone
apt install restic
curl https://rclone.org/install.sh | sudo bash
# 3. 設定 Google Drive
rclone config
# 重新設定 gdrive remote(同上面的步驟)
# 4. 列出可用備份
restic -r rclone:gdrive:backrest-backup snapshots
# 5. 還原資料
restic -r rclone:gdrive:backrest-backup restore latest --target /home/user/restore
# 6. 重新啟動服務
docker compose up -d- Backrest Repository 加密密碼 - 遺失無法恢復備份
data/rclone/rclone.conf- Google Drive 授權(或記得如何重新授權)