价值 10000 美元的开源 PHP图床程序
内容提要
该文章介绍了作者自用的开源图床程序 LitePic,项目已持续开发近一年,代码量约两万行。作者分享了自己作为独立开发者,在多个项目中反复打磨、随性更新的工作习惯,并指出该图床功能简洁,主要用于个人及少数用户的上传、格式转换和分享需求。
LitePic:一个写给自己的图床
惭愧得很,这个程序我断断续续更新了差不多一年。如果不是 LitePic.io 域名提醒续费,我差点又把它忘了。查了一下,域名是 2025-05-30 注册的——那时我刚学会用 VS Code 配 Copilot 改代码。从开始到现在大约两万行,是时候再拿出来说一说。中间功能加了又减、页面和后台也翻过几轮;到 3.7 已经能开可选多用户,不再只是「我和朋友两人用的私货」。
说程序之前先说我自己。我大抵是有点毛病:任何想法敲第一行代码之前,一定要先注册域名。.com / .net 不行就最低 .ai / .io,再不行才轮到 .sb、.ga 这类。趣域、SAV、Cloudflare、Name.com、腾讯云、阿里云加起来三百多个域名,这么多年好像一个都没卖出去——当然我也没认真卖过,倒是买域名花了不少钱。
现在文章更新频率很低,每天忙着用 AI 做程序员的梦。做外贸没吃的苦,全特么吃到这儿了:熬夜是小事,思路卡住就拽头发,感觉都快秃了。公司外贸从订单到销售的整套系统、自己的博客 Utterlog、图床平台 toimg.com、单机/自托管图床 LitePic,再加上别的零碎,projects 里三十多个项目。每天除了固定几块,逮着哪个顺眼就完善哪个。除了 WordPress 插件,主题我一个都还没开源。
再说这张图床。其实我自己真正「重度用图床」的场景并不多。项目大概从去年下半年开始写,很长一段时间都是个人版:上传、转格式、压缩、外链,主要是我和 菲克 在用。中间大大小小修了几十次;印象里连同这次,整体推倒重来级别的大改也有好几轮——页面风格、目录结构、队列和存储,动起来都不小。
好景不长的是:刚改完一版,睡一觉又能把自己否定掉。五一前后又折腾过一轮;平时周五早上四五点起来写也是常态。最近为了把架构和交互再捋顺,Codex、Claude 轮着上——审查、大段实现、再核查——token 烧得很凶。按标价算很吓人,还好多半是订阅,真实成本没那么夸张;但到发这篇的时候,也还谈不上「完全收工」,后面大概还得继续磨。
中间也试过让别的模型「简单改改就行」。AI 太主动:加功能容易臃肿,一说删又删出一串问题,再回头修。后来基本是 Codex 扛实现、再交叉检查,比单靠一个模型稳一点。
LitePic 是什么
轻量自托管图床:PHP + SQLite,推荐 FrankenPHP(内置 Caddy)一条命令跑起来;也支持 Nginx / 宝塔(记得配伪静态)。默认仍是单管理员;需要时再在设置里打开多用户。
设计上坚持先入库,再处理:上传只把原图安全落下,缩略图、压缩、WebP/AVIF、水印、远程同步进队列异步做。某个环节挂了,原图和库里的记录也不至于一起丢。
功能概览(按现在的 3.7)
上传
- 点击 / 拖拽 / 粘贴上传
- 多文件队列,失败可单独重试
- 上传后即时返回链接
- 常见图片格式:JPG、PNG、GIF、WebP、AVIF、HEIC、SVG、ICO、BMP、TIFF 等
- 允许格式与处理策略可在后台改
- 磁盘文件名随机化,原名仅作展示
图片处理(异步队列)
- 缩略图、压缩(TinyPNG / ImageMagick / GD)
- 自动转 WebP / AVIF,可保留或丢掉原图
- 文字水印 / PNG 水印,可上传字体
- Worker:请求后 drain / Cron / 后台手动触发
图库与相册
- 图库批量选择、删除、侧栏信息
- 相册:公开 / 未列出 / 私密 / 密码;宫格或瀑布流公开页
- 访问次数统计(可选)
- 复制 URL / HTML / Markdown / BBCode
多用户(可选,默认关)
- 关闭:和以前一样,管理员密码 + Passkey
- 邀请制 / 开放注册:每人独立图库、相册与配额
- 可选 Google / GitHub 登录、SMTP 发邀请邮件
- 设置 → 基础 → 多用户模式,保存后再配用户 / 邀请码 / 登录 / 邮件
远程存储
- S3 兼容:Cloudflare R2、AWS S3、MinIO、B2 等
- WebDAV 客户端(坚果云 / Nextcloud / 群晖等;不是搭 WebDAV 服务端)
- 远程备份(本地为主)或云端存储(链接走远端公网域名)
- 同时只启用一种后端;本地删除后远端延迟清理
Telegram
- Bot 白名单发图入库、可归到相册
- 适合自己给自己「聊天即上传」
API 与后台
/api/v1:上传、导出、队列 drain 等- API Key / Bearer Token(多用户下也可发用户自己的 Token)
- 设置页路径化 + PJAX;配置落在 SQLite(不再依赖改
.env) - SQLite 热备份、残留清理、在线更新
- Passkey / WebAuthn、登录限速、CSRF、MIME 校验、Referer 防盗链
部署与体验
- 自定义图片链接前缀(如
/img/) - 亮色 / 暗色 / 跟随系统
- Tailwind CSS v4,响应式后台
更细的安装说明、宝塔伪静态、升级注意,写在官网文档和 GitHub README 里了。
我还算听劝,时间也还挤得出一点。有意见直接说,能当天改的我尽量当天改,别不好意思。为了方便及时反馈,可以评论或者加LitePic 用户交流反馈QQ群:1041444750
官网下载地址
https://github.com/gentpan/LitePic






















star了,一会试一下。我有个lskypro,但是感觉太商业化了,部署迁移也麻烦,22年买了就没用过。
博主评论区姓名邮箱网站输入框好像有问题,[img]https://nos.netease.com/ysf/69d7c54897bc3340135b9df04a8efc30.jpg[/img]
手机edge浏览器,小米浏览器都是这样子,宽度有些溢出了。
谢谢, 我先修复主题评论框移动端问题
修改密码之后就会404 跳转到gallery,请问这个咋解决呀,用的宝塔面板,NGINX
之前我也遇到过 设置伪静态了吗
伪静态设置上,再把PHP换成8.4就没啥问题了
在宝塔补一行(推荐,子路径才完整):
网站 → 设置 → 配置文件 / 伪静态,确保有:
location / {
try_files $uri $uri/ /index.php?$query_string;
}
然后重载 Nginx。/settings/账号、/gallery/page/2 这类路径仍依赖这段配置。
这句伪静态添加上,后台正常了,但是创建相册的时候,点保存提示请求失败500,控制台提示Failed to load resource: the server responded with a status of 500 () ( :96:23)错误
VM64:114 Album save error: Error: 请求失败 (500)
at HTMLFormElement.
我把PHP版本换成8.4就没啥问题了
有准备搞一个交流群吗 我在挂载外部存储也有点问题呢 S3 始终无法正常连接 WEBDAV 可以连接上 但是不能直接存储到外部存储 本地可以 稍晚些时候我准备在换阿里 OSS 测试一下
看着很不错啊,我前几天刚弄好了兰空,哈哈,又想换这个了,先部署一个试试。
一直找不到什么合适的图床程序,纯个人用的,部署试试,感谢大佬开源啊
谢谢,欢迎使用,最近版本更新比较多,后台可以自动更新。
标题很炸裂哦,看了下,好像不支持webdav功能
对,webdav没有支持,这个功能我不了解,应该也可以添加的。
能加上 WEBDAV 那就更爽了 多了一个存储
新版本已经添加WebDAV 网络磁盘支持,可以后台更新看下。
新版本已经添加WebDAV 网络磁盘支持,可以安装看看,有问题随时反馈。
大佬 我刚去装了看了一下 可能你理解错误了 不是提供 WEBDAV 给别的服务挂载 是图床可以具备挂载别家提供的 webdav 服务器 比如某某网盘提供了 webdav 我们的图床就可以挂载它作为新的存储方式
又更新了,你可以抽空部署看看
真猛啊 刚才直接在线升级 真好使 完美了
有问题随时反馈哈
大佬有计划更新到多用户吗
好,我研究下
新版本已经支持开启多用户,欢迎更新使用,有问题随时反馈。
尝试几次申请友链失败了。
这几天在更新博客程序, 很多东西我直接部署到服务器还没来得及一一测试,我已经添加了。
我要研究一下,把兰空的升级到这个
可以尝试下, 这个基本功嗯个够用, 比lsky 要精简很多,适合自用图床
这样的话,还得有个空间去存放照片,有CDN去给它做节点加速。我缺的也就是这两个。
我们的toimg.com 提供空间和cdn加速,你可以尝试下,还可以绑定你自己的域名
如果不吃内存,且存储空间富余,部署一个这样的图床不失为一个好主意,关键是开源。
图床不知道咋说
我一直都不太爱用,感觉还是有点麻烦
300个域名,这么猛,这得不少钱吧
这功能也太丰富 太齐全了吧 赞
正愁找个图床系统,恰好就刷到你了,明天回去部署个试试看[:dacall:]
我第一次就部署失败了 不知道哪里出了问题……😂
错误是什么贴给我看下嘛?
修改密码之后就会404 跳转到gallery
我加你 QQ 了,方便同意一下吗, 应该是 nginx 没有配置好
Ai就是这样,JS/CSS不断往后堆,堆到最后就是几千上万行,让它缩短又不会了,只能从头来。
大哥经理充沛,实在佩服!
我也有个图床,用的别人的开源的,放在了cf,哪哪都好,唯一问题是 cf 网络不是很稳定
这个确实很牛。没有数据库更方便。
只要用了图床,就得一直部署,我这不想用兰空了,但是那一千张图片着实让人难受
功能确实很齐全了
简直是没苦硬吃,为爱发电。免费版只提供最基础的功能,什么api啊,防盗链,远程备份高阶功能必须收费 50刀不还价
赚钱很难,但花钱真的太容易了。
这么多项目,也是很牛逼的了
真心佩服你,你应该把搞外贸之后的休息时候都用来搞代码了。
外贸没吃的苦,在这里都吃完了,可能新鲜一阵子,之前憋屈的太难受了。AI 也让自己的只是层更进一步,想的越多想做的就越多了。
自己搞还是不错的,一切可控
方便的很 哈哈
功能挺全的
瞎折腾呗,怎么舒坦怎么来。
以前我还往博客网站里插图片,那时为了节省本不宽裕的虚拟主机空间,就使用第三方图床。后来突然有一天,第三方图床崩溃了,图片也找不回了。再后来干脆写博客尽量不插图片了,能省则省。[:mojing:]
我的文字功底不够,只能拿图来凑。
不错不错,回头也部署一个试试,先赚它1000美元玩玩。
这 1000 美金赚的简单了 – –
我原来的友链里很久打不开你的网站了,聚合订阅中你的订阅链接也失败了很久,今天更新后终于全都回来了。
前段时间我又犯病了去备案了,不知道脑子抽风了啥 ,周一刚备案好,哈哈