Lychee 是开源相册里公认「好看」的那一类:Laravel 编写,v7 起用 FrankenPHP 提供运行时,一个应用容器加一个 MariaDB 就能跑。它没有沉重的 AI 流水线,但相册、标签、共享链接、权限、水印、人脸识别都齐全,适合想要干净家庭相册的人。
一、镜像与端口
| 项目 | 值 |
|---|---|
| 应用镜像 | ghcr.io/lycheeorg/lychee:latest(或 Docker Hub lycheeorg/lychee) |
| 人脸识别(可选) | ghcr.io/lycheeorg/lychee-facial-recognition:latest |
| 数据库 | mariadb:10 |
| Web 端口 | 8000 |
v7 的镜像结构有变化,旧教程里的 nginx + php-fpm 双容器写法已经过时,直接按官方新的 Compose 来。
二、下载官方 Compose
mkdir -p /opt/lychee && cd /opt/lychee
curl -O https://raw.githubusercontent.com/LycheeOrg/Lychee/master/docker-compose.minimal.yaml
mv docker-compose.minimal.yaml docker-compose.yml
mkdir -p lychee/uploads lychee/logs lychee/tmp
三、生成密钥并配置
openssl rand -base64 32
# 输出类似:Xb7...= ,前面加 base64: 填进 APP_KEY
编辑 docker-compose.yml 顶部的公共环境变量:
APP_KEY: "base64:把刚才生成的值填在这里"
APP_URL: "https://photos.example.com"
APP_FORCE_HTTPS: "true"
DB_PASSWORD: "请替换成数据库强密码"
DB_ROOT_PASSWORD: "请替换成 root 强密码"
TIMEZONE: "Asia/Shanghai"
如果你不需要人脸识别,可以把 lychee_facial_recognition 整个服务删掉,并去掉 AI_VISION_* 环境变量,能省 1GB 左右内存。
四、启动
docker compose up -d
docker compose ps
docker compose logs -f lychee_api
浏览器打开 http://服务器IP:8000,首次访问会引导创建管理员账号。登录后进入「相册」新建相册并上传照片。
五、反向代理与 HTTPS
server {
listen 443 ssl http2;
server_name photos.example.com;
ssl_certificate /etc/letsencrypt/live/photos.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/photos.example.com/privkey.pem;
client_max_body_size 2000M;
proxy_read_timeout 600s;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
若用宝塔面板,直接在站点设置里加反向代理到 http://127.0.0.1:8000,再开 SSL 即可。

六、日常使用
- 共享:相册右上角「分享」,可设公开、密码、过期时间,适合发给亲戚。
- 权限:设置里创建用户,分配「可上传 / 只读」角色。
- 水印与版权:设置 → 图片处理,可批量加水印。
- 人脸识别:保留 facial-recognition 容器后,在设置里开启并等待扫描。
七、备份与升级
- 备份
lychee/uploads(原图与缩略图)、lychee/logs,以及 MariaDB 数据卷。 - 升级:
docker compose pull && docker compose up -d。v6 → v7 这类大版本务必先读官方 Upgrade Guide,镜像结构变过。 APP_KEY必须保留,换机时一起带走。
八、常见问题
上传大图报错? 反代 client_max_body_size 与 PHP 侧 upload_max_filesize 都要放开;FrankenPHP 镜像可通过环境变量调整。
页面样式丢失? APP_URL 与实际访问地址不一致,改成正式域名并重启。
内存吃紧? 关掉 facial-recognition 服务,Lychee 本体 512MB 左右就够。
九、小结
Lychee 是「够用、好看、好维护」的平衡点。它不试图接管你的手机备份,但作为一个家庭共享相册,界面和分享体验都相当舒服。
相关阅读:Piwigo 部署教程 · 2026 开源家庭相册横评

