价值 10000 美元的开源 PHP图床程序

价值 10000 美元的开源 PHP图床程序

AI 摘要
该文章介绍了作者自用的开源图床程序 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

官网下载地址

GitHub
gentpan/LitePic

页面加载完成后异步读取仓库信息。

页面加载后读取
作者本文采用CC BY-NC-SA 4.0许可协议,转载请注明来源。
发表评论
必填项已用 * 标注
请理性讨论,禁止广告及无关内容