视频加载失败

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

1985 字
10 分钟
[开源] PicHost - 自托管个人轻量图床
[开源] PicHost - 自托管个人轻量图床

博客写久了,配图是刚需。市面上图床功能越堆越满——相册、社交、付费套餐——对我这种只给自己和评论区用的场景来说反而太重。我更在意几件事:数据在自己手里、不绑某家图床的政策和续费、自己不删就尽量一直在。

PicHost 就是为此做的:个人轻量图床,图片放好,管理也要顺手。从最早蹭 Cloudflare R2 的实验版,到推倒重来的 Docker 自托管,再到现在的主线——标签、备份、多后端(含 Telegram 频道/群组)、Twikoo 兼容、上传策略与 API tagNames 打标都齐了,一条 docker run 就能跑。部署细节、环境变量、API 字段见用户文档(文末链接);这篇只聊它是什么、为什么值得试、现在长什么样。

它解决什么问题#

阶段当时的痛点PicHost 的回应
v0(CF 版,已归档)博客配图,想蹭 CF 免费额度R2 + Worker 双域出图,Referer 防盗链
接上 Twikoo评论发图不想绑收费官方图床EasyImage 2.0 兼容 + 独立上传 Token
v1.0CF 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;卡片可调客户端预压缩、自动复制链接、按用户自动删除;上传后可直接批量打标签。

PicHost 上传页
PicHost 上传页

图库#

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

PicHost 图库
PicHost 图库

PicHost 图库详情
PicHost 图库详情

标签#

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

PicHost 批量打标签
PicHost 批量打标签

存储与备份#

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

PicHost 存储管理
PicHost 存储管理

设置、API 与日志#

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

PicHost 系统设置
PicHost 系统设置

PicHost API 页
PicHost API 页

PicHost 操作日志
PicHost 操作日志

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


几个我自己用得上的点#

  • 多用户:管理员可开放注册,普通用户只看到自己的图;每人一个 API Token,脚本上传归属清晰。
  • Twikoo 评论配图:POST /api/index.php 兼容 EasyImage 2.0,评论发图和正文配图走同一套图床;Referer 白名单记得把博客域名(含 www)都加上。
  • 双域名分离:管理域和图片域拆开,中间件自动隔离;配错了有 clear-domains CLI 兜底。
  • 服务端 WebP + 防盗链:默认入库压缩 + 可选 Referer 白名单;要原图可在 v1.4.1 打开保留原图。
  • GPL-3.0 开源:欢迎 Star、Issue 和 PR(仓库见文末链接)。

想试的话#

Terminal window
docker run -d \
--name pichost \
-p 6892:6892 \
-v ./data:/data \
--restart unless-stopped \
muxui/pichost:latest

浏览器打开 http://<主机IP>:6892,按引导完成设置即可。反代、HTTPS、双域名、Twikoo 对接、cURL 示例见用户文档,不在这篇重复抄说明书。


版本轨迹#

  1. 2026-10-10
    v1.4.4

    Cap 登录支持 hashwx 挑战;Cap 求解 wasm 由本站提供,减少对 jsDelivr 的依赖。

  2. 2026-10-03
    v1.4.3

    Telegram 存储后端:Bot 将图片存入频道或群组(含私有),直链仍由 PicHost 代理;可选 API 代理访问 Telegram。图库删除会尝试删 Telegram 消息;备份包不含 Bot Token。

  3. 2026-09-23
    v1.4.2

    每账号单一 API Token;上传 API 仅 tagNames(Twikoo 路由同步)。标签管理按使用量排序、桌面列 / 窄屏卡片布局。修复图库批量打标(管理员/跨归属)与上传鉴权(Auth-Token、表单 token、API_UPLOAD_TOKEN)。

  4. 2026-09-16
    v1.4.1

    上传策略(设置 → 基础):单文件大小、允许格式、上传/登录限流、保留原图;上传 API 支持 tagNames(与 tagIds 可并用)。

  5. 2026-09-09
    v1.4.0

    标签系统:每用户独立标签、彩色标记;上传后单张/批量打标;图库 OR/AND 筛选;操作日志扩展至登录、设置变更、标签操作;API 支持标签 CRUD 与 tagIds。

  6. 2026-09-07
    v1.3.0

    整站导出/恢复 .phost.tar.gz;跨后端同步与任务中心;setup 未初始化时可从备份恢复。移除遗留 migrate CLI,由备份恢复与启动索引同步替代。

  7. 2026-09-01
    v1.2.6–v1.2.8

    设置/图库/存储/API 页 UI 重构;登录验证支持 Turnstile / Cap;双域名保存风险确认与 clear-domains CLI。

  8. 2026-08-31
    v1.2.5

    图库页(/gallery)替代原统计导航;图片详情弹层、全选/反选;移除 /stats 路由。

  9. 2026-08-30
    v1.2.2

    双域名设置保存误清空管理域、未知 Host 绕过隔离等修复;文档站新增更新日志。

  10. 2026-08-29
    v1.2.1

    登录滑动拼图验证;VitePress 文档站发布。

  11. 2026-08-28
    v1.2.0

    本地图片统一进 data/images/;启动时自动扫描补索引。

  12. 2026-08-26
    v1.1.0

    S3 多后端、/storage 存储管理页;操作日志与上传限流。

  13. 2026-08-23
    v1.0

    Docker 自托管首发:多用户、Web 引导、Twikoo 兼容、服务端 WebP。CF R2 版归档至 cloudflare 分支。

  14. 2025 前后
    v0(CF 版,已归档)

    Nuxt + R2 + Worker;运维成本高,后推倒为 Docker 版。


写在最后#

PicHost 的演进很直白:先为博客配图,再为 Twikoo 评论配图,把运维成本打下来,把目录和备份模型理顺,用标签让图库真正能管,补齐上传策略与原图,收顺 API Token 与 tagNames,再多了 Telegram 等存储选择与登录体验打磨。

若你也在 Firefly + Twikoo 这条路上,或者只是想找一套能 docker run、数据能整包带走的自托管图床,欢迎 Star、Issue 或评论区聊。

相关链接#

O96u
/
PicHost
Lightweight self-hosted image hosting — Docker, multi-user, gallery & API, local disk or S3-compatible storage.
—
—
GPL-3.0
TypeScript
muxui
/
pichost
轻量自托管图床,WebP压缩,防盗链,适合NAS与个人博客
9.7K
0

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

[开源] PicHost - 自托管个人轻量图床
https://muxui.com/posts/pichost-cloudflare-r2-image-host/
作者
Muxui
发布于
2026-08-03
许可协议
CC BY-NC-SA 4.0
随机文章随机推荐

评论区

Profile Image of the Author
Muxui
写代码、记笔记,把折腾过的东西留给未来的自己。
公告
欢迎来到我的博客!这是一则示例公告。
统计
分类
标签
站点统计
文章
23
分类
3
标签
28
总字数
56,853
运行时长
0 天
天气预报
定位中...
----
高温 --°C / 低温 --°C
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录