[开源] PicHost - 自托管个人轻量图床

博客写久了,配图是刚需。市面上图床功能越堆越满——相册、社交、付费套餐——对我这种只给自己和评论区用的场景来说反而太重。我更在意几件事:数据在自己手里、不绑某家图床的政策和续费、自己不删就尽量一直在。
PicHost 就是为此做的:个人轻量图床,图片放好,管理也要顺手。从最早蹭 Cloudflare R2 的实验版,到推倒重来的 Docker 自托管,再到现在的 v1.4.0——标签、备份、多后端、Twikoo 兼容都齐了,一条 docker run 就能跑。部署细节、环境变量、API 字段见 用户文档;这篇只聊它是什么、为什么值得试、现在长什么样。
它解决什么问题
| 阶段 | 当时的痛点 | PicHost 的回应 |
|---|---|---|
| v0(CF 版,已归档) | 博客配图,想蹭 CF 免费额度 | R2 + Worker 双域出图,Referer 防盗链 |
| 接上 Twikoo | 评论发图不想绑收费官方图床 | EasyImage 2.0 兼容 + 独立上传 Token |
| v1.0 | CF Dashboard 运维成本高、配置易被 deploy 覆盖 | Docker 零配置引导、本地盘 + SQLite、多用户 |
| v1.1–v1.2 | 想接回对象存储,目录模型要收拢 | S3 多后端、双域名分离、统一 images/ |
| v1.3–v1.4(当前) | 图多了要分类、数据要能整包带走 | 标签打标、.phost.tar.gz 备份恢复、跨后端同步 |
CF 版教会我防盗链和双 Token;Docker 版让我把图床和数据一起挂在 NAS 或 VPS 上,不必再跟 Cloudflare Dashboard 较劲。cloudflare 分支仍保留 R2 专版,在线演示见 pic.roven.cc。
现在长什么样
后台基于 Nuxt 4 + Nuxt UI 4,默认暗黑、中英文切换。登录支持本地滑块、Cloudflare Turnstile 或 Cap 人机验证——管理员在设置里一键切换。上传区支持拖拽、点击、Ctrl+V 粘贴;入库前 sharp 转 WebP,体积稳得住。
上传
上传完一键复制直链 / Markdown / HTML;卡片背面可调客户端预压缩、自动复制链接、按用户自动删除——写博客时少切几次窗口。

图库
/gallery 替代了旧版统计页:网格 / 列表切换,按存储、来源、标签筛选(OR / AND),批量删除与批量打标;点图弹出详情层,尺寸、上传方式、多格式链接一目了然。

标签
v1.4 的重头戏。每用户独立标签、彩色标记;上传后单张或批量打标,设置页里新建、改色、合并、删除。图库堆了几百张截图之后,按标签筛比按文件名搜省心太多。

存储与备份
本地磁盘和 S3 兼容后端(R2 / COS / OSS / AWS)可混用;存储页导出整站 .phost.tar.gz、从备份恢复、跨后端同步,任务中心看进度。换机器或升大版本,整包带走比对着旧目录手工 migrate 踏实——v1.3 起遗留迁移 CLI 已移除,备份恢复是官方推荐路径。

设置、API 与日志
Referer 白名单、单域 / 双域名分离、全局与个人 API Token 都在设置里;API 页带在线调试。操作日志记录上传、删除、登录、设置变更、标签操作等,管理员可按用户、日期、来源筛选——偶尔查「谁删了这张图」有用。



首次部署走 Web 引导创建管理员,也支持从备份包直接恢复——不用预先写密钥,容器起来就能用。

几个我自己用得上的点
- 多用户:管理员可开放注册,普通用户只看到自己的图;每人独立 API Token,脚本上传归属清晰。
- Twikoo 评论配图:
POST /api/index.php兼容 EasyImage 2.0,评论发图和正文配图走同一套图床;Referer 白名单记得把博客域名(含www)都加上。 - 双域名分离:管理域和图片域拆开,中间件自动隔离;配错了有
clear-domainsCLI 兜底。 - 服务端 WebP + 防盗链:入库压缩 + 可选 Referer 白名单,个人博客量级够用了。
- GPL-3.0 开源:github.com/O96u/PicHost 欢迎 Star、Issue 和 PR。
想试的话
docker run -d \ --name pichost \ -p 6892:6892 \ -v ./data:/data \ --restart unless-stopped \ muxui/pichost:latest浏览器打开 http://<主机IP>:6892,按引导完成设置即可。反代、HTTPS、双域名、Twikoo 对接、cURL 示例——统统在 用户文档,不在这篇重复抄说明书。
版本轨迹
- 2026-09-09v1.4.0
标签系统:每用户独立标签、彩色标记;上传后单张/批量打标;图库 OR/AND 筛选;操作日志扩展至登录、设置变更、标签操作;API 支持标签 CRUD 与
tagIds。 - 2026-09-07v1.3.0
整站导出/恢复
.phost.tar.gz;跨后端同步与任务中心;setup 未初始化时可从备份恢复。移除遗留migrateCLI,由备份恢复与启动索引同步替代。 - 2026-09-01v1.2.6–v1.2.8
设置/图库/存储/API 页 UI 重构;登录验证支持 Turnstile / Cap;双域名保存风险确认与
clear-domainsCLI。 - 2026-08-31v1.2.5
图库页(
/gallery)替代原统计导航;图片详情弹层、全选/反选;移除/stats路由。 - 2026-08-30v1.2.2
双域名设置保存误清空管理域、未知 Host 绕过隔离等修复;文档站新增更新日志。
- 2026-08-28v1.2.0
本地图片统一进
data/images/;启动时自动扫描补索引。 - 2026-08-26v1.1.0
S3 多后端、
/storage存储管理页;操作日志与上传限流。 - 2026-08-23v1.0
Docker 自托管首发:多用户、Web 引导、Twikoo 兼容、服务端 WebP。CF R2 版归档至
cloudflare分支。 - 2025 前后v0(CF 版,已归档)
Nuxt + R2 + Worker;运维成本高,后推倒为 Docker 版。
写在最后
PicHost 的演进很直白:先为博客配图,再为 Twikoo 评论配图,把运维成本打下来,把目录和备份模型理顺,最后用标签让图库真正能管。
若你也在 Firefly + Twikoo 这条路上,或者只是想找一套能 docker run、数据能整包带走的自托管图床,去 GitHub 点个 Star,部署遇到问题文档站里有答案,也欢迎 Issue 或评论区聊。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!

