【自建图床 01】用 VPS 搭私人相册:Chevereto / Lychee 图床部署与备份
2026-08-15 · DevCraft Studio
不想把照片交给公有云?本文用一台廉价 VPS 通过 Docker 部署 Chevereto 与 Lychee 两款开源相册/图床,手把手讲安装、外部存储、分享链接与备份恢复,帮你自建可控的私人图库。
自建相册图床 · 共 2 篇
延伸阅读
更多相关攻略推荐:Ollama AI系列(2):VPS上的AI推理与API应用、Ollama AI系列(2):VPS上的AI推理与API应用、【CPU选型 01】搭载 AMD Ryzen 9950X 的 VPS、ARM / Ampere 席卷 VPS:性价比真香还是兼容陷阱?、Ollama AI系列(2):VPS上的AI推理与API应用。
一、为什么要把照片从公有云迁到自己的 VPS
照片是普通人数字生活里最珍贵的资产,可越来越多的人开始对公有云相册失去信任。Google Photos 和 iCloud 容量按量收费,价格年年涨;更让人不安的是,上传的内容会被算法扫描、被用于训练模型,服务商一句政策调整就可能限流甚至封号。国内网盘则普遍限速、强审核,原图传上去再下载回来要等半天。
把照片迁到自己租的 VPS 上,等于给记忆上了一把只有你能开的锁。数据主权完全在你手里,没有第三方能翻看或下架;容量上限只受你挂载的磁盘大小限制,想扩就扩;原图无损保存,不会被悄悄压缩;你还能生成分享链接发给家人朋友,或者直接当图床给博客文章贴图。本文用 Chevereto 与 Lychee 两款开源项目,教你在一台廉价 VPS 上把私人相册跑起来。
二、Chevereto 与 Lychee 怎么选
两款都是免费开源、可自托管的照片平台,但定位差别很大,先想清楚自己要什么再动手。
Chevereto 是一个功能完整的图床与相册平台,可以理解为自建版的 Flickr 或 Imgur。它有完整的用户系统、公开与私有相册、HTML5 拖拽上传器,支持多语言、自定义主题、用户级 API 和 CDN 集成,还能把存储后端接到 Amazon S3、阿里云、Google Cloud 或 SFTP 上实现无限扩容。免费版就支持本地存储,付费版多了更多企业功能。它最适合三类人:写博客需要稳定图床的、要展示摄影作品集的、以及需要给客户私密分享成片的工作室。
Lychee 则是一个轻量而优雅的照片管理器,更像自建版的 Google Photos。它支持嵌套相册结构、自动标签、智能搜索、批量操作,分享链接可以设密码,还能加水印保护。界面极简好看,上手零门槛,资源占用很低。它更适合个人整理生活照片、做家庭相册,或者小团队搭一个内部图片库。
决策很简单:要图床能力、对外分享、接外部存储,选 Chevereto;只想优雅地管好自己的照片、追求好看和简单,选 Lychee。
三、环境准备:VPS、Docker 与磁盘规划
照片是吃空间的大户,所以这台 VPS 的磁盘比 CPU 更重要。建议选提供大容量磁盘、或支持挂载块存储的套餐,内存 1 核 2G 起步即可。系统仍推荐 Ubuntu 22.04 或 24.04 LTS。
先在服务器上装好 Docker 与 Docker Compose,步骤和知识库那篇一致:用官方脚本或系统包管理器安装,把当前用户加入 docker 组。照片目录一定要挂到大磁盘上,否则系统盘很快会被原图塞满。
如果打算对外访问,提前准备好域名并做 A 记录解析,两个项目都有一个非常关键的环境变量 APP_URL,必须填成最终访问的完整地址,填错会导致页面里的图片和样式路径全部错乱。另外建议装一个监控工具留意磁盘占用,因为照片增长往往比预想快得多。
四、Chevereto 部署实战(Docker Compose)
新建一个名为 chevereto 的项目目录并进入,用编辑器创建 docker-compose.yml。文件里同样定义两个服务:chevereto 应用(免费版镜像为 ghcr.io/chevereto/chevereto:latest)和 mariadb 数据库。
应用服务的环境变量要填 CHEVERETO_DB_HOST 指向数据库服务名、CHEVERETO_DB_USER 与 CHEVERETO_DB_PASS 设成自定义用户名密码、CHEVERETO_DB_PORT 为 3306、CHEVERETO_DB_NAME 为库名。上传大图必须放大限制,把 CHEVERETO_MAX_POST_SIZE 和 CHEVERETO_MAX_UPLOAD_SIZE 都设成 2G。免费版若想以后在应用内直接升级,还需加 CHEVERETO_SERVICING=server。
把宿主机的 images 目录挂载进容器的 /var/www/html/images 路径来持久化照片,并把宿主机某个端口映射到容器 80 端口。数据库服务用 mariadb 镜像,设置 root 密码、库名、用户名和密码,并挂载数据卷。配置好后执行后台启动命令,再用日志命令确认启动成功。
首次启动后,记得给挂载的 images 目录设置正确的写权限,否则网页上传会报权限错误。最后浏览器访问 http://你的IP:端口,进入安装向导创建管理员账号。
五、Chevereto 初始化与外部存储
安装向导里填好管理员用户名、邮箱和密码,就进入了后台仪表盘。后台可以设置首页选项、隐私级别,以及是否允许游客公开上传——如果是纯私人相册,强烈建议关闭公开上传,避免被外人拿来乱传图。
上传体验很顺手:用 HTML5 拖拽上传器把照片拖进窗口即可,系统会自动生成原图、中图(约 1280 像素宽)和缩略图(约 250 像素宽)三套尺寸,网页展示和列表预览各取所需,既省流量又不丢原图。
相册分个人相册和公开相册,可以建立多级分类。真正让 Chevereto 强大的,是外部存储引擎:在后台接上 S3、阿里云 OSS 或 SFTP 后,照片实际存到这些地方,本地磁盘只放程序,扩容几乎没有上限,再配合 CDN 还能给全球访客加速。用户级 API 则可以和 PicGo 这类工具配合,让你写文章时一键把截图传上来拿到外链。
六、Lychee 部署实战(Docker Compose)
新建一个名为 lychee 的目录并进入,创建 docker-compose.yml。它也是应用加数据库的结构:应用用 lycheeorg/lychee:latest 镜像,数据库用 mariadb。
应用环境变量先填 PUID、PGID 和时区(PHP_TZ 与时区都设成 Asia/Shanghai),关键是 APP_URL 必须填成最终访问地址,比如 http://你的IP:8080。数据库部分把 DB_CONNECTION 设成 mysql,再填 DB_HOST 指向数据库服务名、DB_PORT 为 3306、DB_DATABASE、DB_USERNAME、DB_PASSWORD。挂载目录要准备 conf、uploads、sym 三个,分别对应配置、上传照片和符号链接,有的部署还会加上 logs 与 tmp。
执行后台启动命令拉起容器,浏览器访问对应地址,第一次打开会让你创建管理员账号,填好用户名密码点创建即可进入。务必确认 APP_URL 正确,否则相册里的图片会显示成破图。
七、Lychee 相册管理与分享
登录后进界面,点右上角的加号就能上传,支持批量选择一整批照片。Lychee 的相册是嵌套结构,你可以在一个相册里再建子相册,比如按年份套旅行再套城市,层级随意。系统会对照片做自动标签和智能搜索,配合批量操作能一次移动、重命名或加描述,管理大量照片也不乱。
分享是 Lychee 的亮点:你可以把整个相册或单张照片生成一个公开链接,还能给链接设访问密码,只发给特定的人看;需要保护版权时可以为相册开启水印。权限层面支持用户组、相册访问控制,小团队也能各看各的。
八、备份策略与故障恢复
照片往往无可替代,备份是私人相册的头等大事,比部署本身更重要。原则就一条:异地、多份、定期。
对 Chevereto,要备份两块:宿主机上的 images 目录(所有原图)和 mariadb 数据库卷(相册结构、用户信息)。对 Lychee,要备份 uploads 与 sym 目录,以及它的数据库卷。数据库可以用定时任务导出成 SQL 文件,照片目录用同步工具传一份到另一台机器或对象存储。
如果照片特别重要,建议再额外存一份到 S3 之类的对象存储做异地容灾,鸡蛋不要放在同一个磁盘里。恢复时,重新部署容器、挂回原来的数据卷和目录、再导入数据库即可原样还原。
别忘了监控磁盘:设置一个空间预警,快满时要么清理废图,要么给 VPS 挂载更大容量的块存储或扩容外部存储。照片只会越来越多,提前规划比半夜被告警叫醒强。
#VPS #自托管 #私人相册 #Chevereto #Lychee #图床