一個分散式雲端硬碟系統,採用 Panel->Node 架構。
┌─────────────────────────────────────────────────────────────┐
│ HimService │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 前端網頁 │───▶│ Panel 端 │───▶│ Node 端 │ │
│ │ (瀏覽器) │◀───│(Port 5000) │◀───│ (Port 5001) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
- Panel 端:主控制器,負責用戶認證、節點管理、檔案協調
- Node 端:儲存節點,負責實際的檔案儲存與讀取
- 前端網頁:使用 Bootstrap + JavaScript 構建的使用者介面
- ✅ 分散式儲存架構
- ✅ 多節點支援(一個 Panel 可連接多個 Node)
- ✅ 用戶管理與配額控制(允許設定用戶存儲配額)
- ✅ 開發者 API Token 支援
- ✅ 帳戶控制系統
- ✅ 準確的節點綁定機制(兩步驟驗證)
- ✅ 資料夾管理(建立、刪除、移動)
- ✅ 資料夾移動時自動移動內部子資料夾和檔案
- ✅ 刪除資料夾時自動扣除用戶配額
- ✅ 檔案拖拽移動
- ✅ 圖片/影片預覽
- ✅ 批量操作功能(多選刪除、移動、下載)
- ✅ 批次下載 ZIP 壓縮檔
- ✅ Shift + 點擊多選
- Python 3.7+
- requirements.txt
pip install -r requirements.txtcd panel
python init_admin.py按照提示輸入管理員帳號和密碼。
cd panel
python app.py在後台管理頁面新增節點,取得配置文件後:
- 將配置複製到 Node 的
config.yml - 啟動 Node:
cd node
python app.pyNode 會自動與 Panel 綁定。
- 網址:http://localhost:5000/admin
- 帳號密碼:首次使用須執行
init_admin.py建立
- 登入後台
- 進入「節點管理」
- 點擊「新增節點」
- 填寫節點資訊並建立
- 將配置檔案提供給 Node 使用
在後台刪除節點時,會同時刪除綁定記錄,該 Node 將無法再次連線,除非重新創建token。
在後台「開發者 API」頁面可以:
- 建立 API Token
- 設定權限
- 管理 Token
API 使用方式:
X-API-Token: your_token_here| 權限 | 說明 |
|---|---|
file:read |
讀取檔案列表 |
file:upload |
上傳檔案 |
file:download |
下載檔案 |
file:delete |
刪除檔案 |
file:move |
移動檔案 |
file:preview |
預覽檔案 |
folder:read |
讀取資料夾列表 |
folder:list |
列出資料夾內容 |
folder:create |
建立資料夾 |
folder:delete |
刪除資料夾 |
folder:write |
移動資料夾 |
user:read |
讀取用戶資訊 |
user:create |
建立用戶 |
user:update |
更新用戶 |
user:delete |
刪除用戶 |
user:quota |
設定用戶配額 |
node:read |
讀取節點資訊 |
node:create |
建立節點 |
node:update |
更新節點 |
node:delete |
刪除節點 |
node:config |
產生節點配置 |
auth:login |
登入驗證 |
auth:check |
檢查登入狀態 |
1. Panel 後台建立節點配置
│
▼
2. Panel 生成 token_id + token
│
▼
3. 管理員取得配置檔案
│
▼
4. Node 發送 token_id 驗證
│
▼
5. 驗證通過,發送 token 綁定
│
▼
6. 綁定成功,節點上線
- Panel 資料庫:
panel/data/data.db - Node 資料庫:
node/data/node.db - Node 儲存數據目錄:
node/storage/
- API 文檔 - 完整的 API 端點說明
- Panel:5000
- Node:5001
請見 License