飞牛NAS部署Immich:下一代智能相册管理
飞牛NAS(fnOS)自带的相册应用已经足够日常使用,但如果你追求更强大的AI识别、更灵活的元数据管理,或者希望彻底摆脱第三方云盘对照片的“绑架”,那么自托管的Immich绝对是目前最值得折腾的方案。它拥有媲美Google Photos的机器学习能力,而且完全开源。
本文将手把手带你在飞牛NAS的Docker环境中部署Immich,并解决几个关键的配置痛点,让你拥有一套“本地化”的智能相册。
为什么选择 Immich?
Immich 的核心优势在于其“全链路”的本地化处理。它内置了基于TensorFlow的智能搜索,可以识别人脸、物体和场景,且所有计算都在你的NAS本地完成,照片永远不出家门。同时,它的移动端App体验极佳,支持后台自动备份、断点续传,并且能直接通过官方App或Web端管理多用户权限,非常适合家庭共享。
部署前的准备
在飞牛NAS的Docker管理器中,我们强烈建议采用 Docker Compose 方式部署。这比逐个容器点击创建要稳定得多,也方便后续升级。
首先,在飞牛NAS的“文件管理”中,创建一个用于存放Immich数据的目录。建议路径为:/vol1/1000/docker/immich。在这个目录下,我们还需要创建 library(存放原始照片)和 postgres(数据库)两个子文件夹。
编写 docker-compose.yml
打开飞牛NAS的“Docker”应用,进入“Compose”页面。点击“新建项目”,项目名称填写 immich。在代码编辑区,粘贴以下内容:
services:
immich-server:
image: ghcr.io/immich-app/immich-server:release
container_name: immich_server
restart: unless-stopped
ports:
- "2283:2283" # 映射端口,宿主机2283
volumes:
- /vol1/1000/docker/immich/library:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
environment:
- DB_HOSTNAME=immich_postgres
- DB_USERNAME=postgres
- DB_PASSWORD=postgres
- DB_DATABASE_NAME=immich
- REDIS_HOSTNAME=immich_redis
- TZ=Asia/Shanghai
depends_on:
- immich-redis
- immich-postgres
networks:
- immich_net
immich-machine-learning:
image: ghcr.io/immich-app/immich-machine-learning:release
container_name: immich_ml
restart: unless-stopped
volumes:
- /vol1/1000/docker/immich/model-cache:/cache
environment:
- TZ=Asia/Shanghai
networks:
- immich_net
immich-postgres:
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0
container_name: immich_postgres
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=postgres
- POSTGRES_USER=postgres
- POSTGRES_DB=immich
- TZ=Asia/Shanghai
volumes:
- /vol1/1000/docker/immich/postgres:/var/lib/postgresql/data
networks:
- immich_net
immich-redis:
image: docker.io/redis:6.2-alpine
container_name: immich_redis
restart: unless-stopped
networks:
- immich_net
networks:
immich_net:
driver: bridge
关键配置说明:
ports:这里将宿主机的2283端口映射到容器的2283。你可以在飞牛NAS的防火墙中放行该端口,以便外网访问。volumes:/vol1/1000/docker/immich/library是照片存储路径,请务必替换为你自己的实际路径。model-cache目录用于存放AI模型,第一次启动时会自动下载,需要耐心等待。environment:数据库密码建议修改为复杂密码,这里为了演示使用postgres,生产环境请务必修改。depends_on:确保数据库和缓存先于主服务启动。
粘贴完成后,点击“部署”。首次拉取镜像可能需要几分钟,请耐心等待。
初始化与基础设置
部署完成后,在浏览器中访问 http://你的NAS_IP:2283。第一次访问会进入管理员账号创建页面,设置邮箱和密码。创建完成后,系统会引导你进行“服务器设置”。
在“管理” -> “设置”中,建议开启“启用照片缩略图”,并设置“存储模板”为 {{y}}/{{m}}/{{d}},这样可以在NAS文件系统中按年月日自动整理文件夹,方便后续其他工具管理。
移动端备份与客户端使用
Immich 的精华在于移动端。在手机应用商店搜索“Immich”并安装,登录时填写你的服务器地址(例如 http://192.168.1.100:2283)和刚才创建的账号密码。在“备份”设置中,开启“自动备份”,选择需要备份的相册,即可实现后台静默上传。上传速度非常快,且不会压缩原图。
解决常见问题
1. 机器学习无法启动
如果发现人脸识别或智能搜索功能不可用,多半是 model-cache 目录权限不足。请确保该目录归属于 1000:1000(飞牛NAS的默认用户)。可以在SSH终端中执行:
sudo chown -R 1000:1000 /vol1/1000/docker/immich/model-cache
然后重启 immich-machine-learning 容器。
2. 数据库连接失败
如果容器反复重启且日志显示数据库连接错误,请检查 immich-postgres 容器是否健康运行。你可以通过飞牛NAS的“Docker” -> “容器”页面,查看 immich_postgres 的日志,确认是否有权限错误。如果之前部署过旧版,建议彻底删除 postgres 文件夹下的数据后重新创建。
3. 外网访问设置
如果你需要在外网访问,不建议直接映射端口。更安全的做法是使用飞牛NAS自带的“隧道”功能,或者通过反向代理(如Nginx Proxy Manager)配置HTTPS域名。
进阶玩法:挂载已有照片库
如果你已经有一堆照片在NAS的某个目录(比如 /vol1/1000/photo),不想重复上传,可以修改 immich-server 的卷挂载,增加一个只读卷:
volumes:
- /vol1/1000/docker/immich/library:/usr/src/app/upload
- /vol1/1000/photo:/mnt/media:ro # 新增外部照片挂载
然后在Immich的“管理” -> “外部库”中添加 /mnt/media 路径。注意,通过外部库添加的照片,Immich 无法对其进行删除或重命名操作,这正好保护了你的原始文件。
总结
Immich 是一个功能强大且不断迭代的项目,通过飞牛NAS的Docker Compose功能,你可以一次性部署完毕,并获得一个完全自主可控的智能相册。它解决了数据隐私的痛点,同时提供了不输于商业软件的AI体验。部署完成后,建议定期关注官方GitHub Release页面,及时更新容器镜像,以享受最新的功能修复和模型优化。现在,你可以放心地把手机里的几万张照片交给它了。
暂无评论,来说两句吧