Skip to content

ysya/homelab-compose

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

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

相關資源

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors