Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

ysya/homelab-compose

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
20 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Homelab Compose

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)   │
    └─────────┘     └─────────┘     └─────────┘

快速開始

1. 設定環境變數

cp .env.example .env
# 修改 STACKS_DIR 為你的 stacks 完整路徑

2. 設定 Google Drive

# 啟動 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 離開

3. 啟動服務

docker compose up -d

4. 設定 Backrest 備份

開啟 http://localhost:9898,在 Web UI 中:

  1. 新增 Repository:選擇 rclone 類型,路徑填 rclone:gdrive:backrest-backup
  2. 設定加密密碼⚠️ 務必備份到密碼管理器,遺失無法恢復
  3. 建立 Backup Plan
    • 備份來源:/source/stacks/source/homelab-data
    • 排程:每 6 小時
    • 保留策略:hourly 24 / daily 7 / weekly 4 / monthly 6
  4. 執行首次備份:手動觸發確認一切正常

5. 匯入既有 Stacks 到 Dockhand

開啟 http://localhost:3000,透過 UI 的 import 功能掃描 stacks 目錄,逐一匯入既有的 Docker Compose stacks。

6. 存取 Web UI

服務 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)

備份策略

Backrest 備份什麼?

容器內路徑 內容
/source/homelab-data Backrest 設定 + rclone 設定
/source/stacks 所有 Docker Compose stacks

備份流程

本地資料 → Backrest (restic: 增量 + 去重 + 加密) → rclone → Google Drive

所有上傳到 Google Drive 的資料都是加密的,即使 Google 也無法讀取內容。

備份排程與保留策略皆在 Backrest Web UI 中設定,不需要使用 CLI。

災難恢復

從 Google Drive 恢復

# 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 授權(或記得如何重新授權)

相關資源

Releases

Packages

Contributors

Morty Proxy This is a proxified and sanitized view of the page, visit original site.