[开源] PicHost - 自托管个人轻量图床
![[开源] PicHost - 自托管个人轻量图床](https://s.muxui.com:8015/images/2026/09/A37g7XclOd9d.webp)
博客写久了,配图是刚需。市面上图床功能越堆越满——相册、社交、付费套餐——对我这种只给自己和评论区用的场景来说反而太重。我更在意几件事:数据在自己手里、不绑某家图床的政策和续费、自己不删就尽量一直在。
PicHost 就是为此做的:个人轻量图床,图片放好,管理也要顺手。从最早蹭 Cloudflare R2 的实验版,到推倒重来的 Docker 自托管,再到现在的主线——标签、备份、多后端(含 Telegram 频道/群组)、Twikoo 兼容、上传策略与 API tagNames 打标都齐了,一条 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 备份恢复、跨后端同步 |
| v1.4.1 | 上传要可管、博客要原图 | 上传策略(大小/格式/限流)、保留原图、API tagNames |
| v1.4.2+ | API/标签要更顺手、脚本鉴权要清晰 | 每账号单一 API Token;上传 API 统一 tagNames;标签管理排序与布局;批量打标与 Auth-Token 鉴权修复 |
| v1.4.3+ | 想多一种「不占本地盘」的归档 | Telegram 存储后端(Bot 入库,直链仍经 PicHost 代理) |
| v1.4.4+ | Cap 登录与 wasm 依赖 | Cap hashwx 挑战;wasm 改由本站托管,少依赖外网 CDN |
CF 版教会我防盗链和双 Token;Docker 版让我把图床和数据一起挂在 NAS 或 VPS 上,不必再跟 Cloudflare Dashboard 较劲。cloudflare 分支仍保留 R2 专版,在线演示见 pic.roven.cc。
现在长什么样
后台基于 Nuxt 4 + Nuxt UI 4,默认暗黑、中英文切换。登录支持本地滑块、Cloudflare Turnstile 或 Cap 人机验证——管理员在设置里一键切换。上传区支持拖拽、点击、Ctrl+V 粘贴;默认入库 sharp → WebP,v1.4.1 起可在设置里打开保留原图关闭服务端转换。
上传
上传完一键复制直链 / Markdown / HTML;卡片可调客户端预压缩、自动复制链接、按用户自动删除;上传后可直接批量打标签。

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


标签
v1.4 的重头戏。每用户独立标签、彩色标记;上传后单张或批量打标,设置页里新建、改色、合并、删除。v1.4.2 起标签列表可按图片数 / 最近使用排序,桌面端列布局、窄屏卡片列表更易扫。图库堆了几百张截图之后,按标签筛比按文件名搜省心太多。

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

设置、API 与日志
v1.4.1 把全站上传策略收进「基础设置」:单文件大小、允许格式、上传/登录限流、保留原图(也可用 .env 覆盖)。Referer 白名单、双域名分离仍在设置里;v1.4.2 起每账号单一 API Token(界面与文档一致),API 页带在线调试,上传接口以 tagNames 按名创建或复用标签(Twikoo 兼容路由同步);脚本上传时 Auth-Token / 表单 token 优先于会话,并兼容全局 API_UPLOAD_TOKEN。



首次部署走 Web 引导创建管理员,也支持从备份包直接恢复——不用预先写密钥,容器起来就能用。
几个我自己用得上的点
- 多用户:管理员可开放注册,普通用户只看到自己的图;每人一个 API Token,脚本上传归属清晰。
- Twikoo 评论配图:
POST /api/index.php兼容 EasyImage 2.0,评论发图和正文配图走同一套图床;Referer 白名单记得把博客域名(含www)都加上。 - 双域名分离:管理域和图片域拆开,中间件自动隔离;配错了有
clear-domainsCLI 兜底。 - 服务端 WebP + 防盗链:默认入库压缩 + 可选 Referer 白名单;要原图可在 v1.4.1 打开保留原图。
- GPL-3.0 开源:欢迎 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-10-10v1.4.4
Cap 登录支持 hashwx 挑战;Cap 求解 wasm 由本站提供,减少对 jsDelivr 的依赖。
- 2026-10-03v1.4.3
Telegram 存储后端:Bot 将图片存入频道或群组(含私有),直链仍由 PicHost 代理;可选 API 代理访问 Telegram。图库删除会尝试删 Telegram 消息;备份包不含 Bot Token。
- 2026-09-23v1.4.2
每账号单一 API Token;上传 API 仅
tagNames(Twikoo 路由同步)。标签管理按使用量排序、桌面列 / 窄屏卡片布局。修复图库批量打标(管理员/跨归属)与上传鉴权(Auth-Token、表单token、API_UPLOAD_TOKEN)。 - 2026-09-16v1.4.1
上传策略(设置 → 基础):单文件大小、允许格式、上传/登录限流、保留原图;上传 API 支持
tagNames(与tagIds可并用)。 - 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-29v1.2.1
登录滑动拼图验证;VitePress 文档站发布。
- 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 评论配图,把运维成本打下来,把目录和备份模型理顺,用标签让图库真正能管,补齐上传策略与原图,收顺 API Token 与 tagNames,再多了 Telegram 等存储选择与登录体验打磨。
若你也在 Firefly + Twikoo 这条路上,或者只是想找一套能 docker run、数据能整包带走的自托管图床,欢迎 Star、Issue 或评论区聊。
相关链接
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!












