開源推薦:PicoUploader - 一個支援動態配置和 Docker 一鍵部署的 FastAPI 圖床
2025-06-29 22:03:56 網站開發

介紹一款基於 FastAPI 和 Docker 的開源個人圖床專案 PicoUploader。本文將分享如何透過一鍵部署腳本,在自己的 VPS 上快速搭建一個支援動態配置、上傳限制和自定義儲存路徑的安全、輕量級圖床服務。
前言:為什麼我需要一個「更好」的圖床?
作為一個開發者和內容創作者,我每天都在和圖片打交道。無論是寫部落格、做筆記,還是開發專案,一個穩定、快速、易用的圖床都是必不可少的。
我嘗試過很多方案:
- 公共圖床服務:方便,但有隱私洩漏、數據丟失、或突然關停的風險。
- 大型雲存儲 (如 S3, R2):功能強大,但配置複雜,對於個人使用來說,有點「殺雞用牛刀」的感覺,而且總擔心不小心產生高額帳單。
- 一些開源專案:功能很棒,但往往過於龐大,依賴一堆我不需要的服務 (如資料庫、Redis),部署起來也頗費周章。
我想要的其實很簡單:
- 數據私有:所有圖片必須儲存在我自己的伺服器上。
- 部署簡單:最好一條命令就能搞定。
- 配置靈活:能輕鬆修改上傳限制、儲存路徑,而且最好不用重啟服務。
- 輕量高效:只做圖床這一件事,並且做好。
PicoUploader 是什麼?
PicoUploader 是一個基於 FastAPI 的輕量級圖床後端服務,專為個人和小型團隊設計。它將強大功能與極致簡潔相結合,讓你在自己的 VPS 上擁有一個完全可控的圖床服務。
它有什麼特別之處?
🚀 一鍵 Docker 部署,三分鐘上線
忘掉複雜的環境設定吧!PicoUploader 採用完全容器化的設計。你只需要在你的伺服器上執行一個腳本,剩下的事情——包括建立目錄、設定權限、啟動服務——它都會自動完成。
# 克隆專案,進入後端目錄
git clone git@github.com:Arkalytix/pico-uploader.git
cd pico-uploader/src/backend
# 從範本建立你的配置檔案
cp .env.example .env
# 只需要設定你的 Token 和域名
nano .env
# 執行部署腳本,大功告成!
chmod +x deploy-production.sh
./deploy-production.sh
🔄 獨特的「動態配置重載」,無需停機
當你需要調整上傳限制時,傳統的做法是修改配置檔案,然後重啟服務。這不僅麻煩,還會造成短暫的服務中斷。
PicoUploader 內建了一個智能的監控系統,它會自動檢測 .env
配置檔案的變化。無論你修改的是:
MAX_FILE_SIZE_MB
(單檔大小限制)MAX_STORAGE_SIZE_MB
(總空間限制)ALLOWED_EXTENSIONS
(允許的檔案類型)
它都會在 2 秒內自動生效,完全不需要你手動重啟 Docker 容器。這讓維護變得前所未有的輕鬆。
# 服務運行中...
# 你只需要修改 .env 檔案
echo 'MAX_FILE_SIZE_MB=20' >> .env
# 查看日誌,你會看到配置已自動更新!
docker logs -f picouploader-prod
# 📝 檢測到 .env 檔案變化
# 🔄 開始載入配置...
# ✅ 配置已更新
🛡️ 全方位的安全與上傳限制
一個好的圖床,安全是底線。PicoUploader 提供了多層次的安全保障:
- Bearer Token 驗證:所有上傳操作都必須經過安全的 Token 驗證。
- 檔案類型限制:你可以精確定義允許上傳的副檔名,從源頭杜絕潛在風險。
- 檔案大小限制:防止惡意的大檔案攻擊,佔用你的伺服器資源。
- 儲存空間限制:設定一個總容量上限,當儲存空間接近飽和時,服務會自動停止接收新檔案,保護你的伺服器磁碟不被撐爆。
這些限制不僅在後端強制執行,前端也會同步獲取配置進行預先驗證,提供了流暢的用戶體驗。
Bearer Token 驗證
📁 靈活的儲存路徑,無縫整合你的雲端硬碟
想把圖片存到哪裡?你說了算!
- 預設儲存在家目錄下的
pico_uploads
。 - 你可以在
.env
中設定CUSTOM_UPLOAD_DIR
為任何你想要的絕對路徑。
這意味著你可以輕鬆地將圖片儲存到:
- 掛載的外部硬碟 (
/mnt/storage/images/
) - 系統的網站目錄 (
/var/www/my-site/uploads/
) - 甚至是同步的雲端硬碟目錄,比如 OneDrive 或 Google Drive (
/home/user/OneDrive/PublicImages/
)!
同步的雲端硬碟目錄
📊 透明的監控與除錯
想知道服務運行得怎麼樣?PicoUploader 提供了清晰的 API 端點:
GET /config
:無需驗證,即可即時查看當前的上傳限制和已使用的儲存空間。GET /debug/config
:需要 Token 驗證,提供更詳細的系統配置資訊。- 完整的日誌記錄,讓你對每一次上傳和配置變更都了然於心。
快速預覽核心功能
功能點 | 描述 |
---|---|
簡單部署 | 提供 deploy-production.sh 腳本,一鍵啟動 |
動態配置 | 修改 .env 即時生效,無需重啟 |
安全驗證 | 強制的 Bearer Token 保護 |
上傳控制 | 可自訂檔案類型、單檔大小、總空間限制 |
路徑自訂 | 支援任意絕對路徑,可整合雲盤同步 |
容器化 | 基於 Docker,環境隔離,易於遷移 |
輕量高效 | 使用 FastAPI,佔用資源極少 |
前端整合 | 提供配套的純靜態前端,部署在 Netlify 上極速訪問 |
誰適合使用 PicoUploader?
- 獨立開發者:需要一個穩定、私有的圖床來支撐你的部落格或個人專案。
- 技術愛好者:喜歡折騰,想在自己的 HomeLab 或 VPS 上搭建實用服務。
- 小型團隊:需要一個內部共享、易於管理的圖片資源庫。
- 隱私注重者:不希望將個人圖片託管在第三方平台。
現在就試試吧!
PicoUploader 是一個因需求而生,並在不斷打磨中成長的專案。它解決了我在圖片管理上的所有痛點,我相信它也能為你帶來同樣的便利。
專案已經在 GitHub 上完全開源,包含了詳細的 README 和部署指南。如果你覺得這個專案對你有幫助,歡迎給我一個 Star ⭐!這是我持續維護和開發新功能的最大動力。
➡️ 點擊這裡前往 PicoUploader 的 GitHub Repo
如果你有任何問題、建議或功能請求,歡迎在 GitHub Issues 中提出。讓我們一起把它變得更好!