
自己搭私有云相册这事我前后折腾了快两个多月。最开始用的 Nextcloud后来又装了一套 Immich两个系统并行跑了将近一个月把 1.2 万张照片、几百个视频全部导进去反复测。今天就拿真实体验说话从部署、日常使用、性能消耗到坑点把这两个东西彻底对比一遍帮你决定自建私有云相册到底该选谁。先说结论如果你是纯粹为了相册备份和浏览Immich 的体验接近白月光如果你还想兼顾文件管理、日历、笔记、同步盘这些东西那 Nextcloud 才是正经的家庭私有云底座。但两者真正跑起来之后差异远不止“相册”两个字这么简单下面展开讲。1. 两个选手的血统差异为什么它们本来就不该直接比1.1 Immich 到底是什么Immich 是一个开源的自托管相册服务设计目标非常简单直接让自己搭一套类似 Google Photos 的东西。它原生支持手机自动备份、AI 人脸识别、按地点/时间线浏览、自动生成回忆、关键词搜索还有多用户支持。说得直白点它就是一门心思要做“私人 Google Photos”没有文件管理、笔记、日历这类五花八门的功能整个 UI 和交互都在围绕照片这件事打磨。技术栈上一眼就能看出来它很现代后端是 Node.js TypeScript有独立的机器学习服务做物体识别和人脸聚类数据库用 PostgreSQL缓存用 Redis存储底层直接落盘到文件系统。前端走的是响应式 Web 成熟移动端 App整体设计语言非常接近主流云相册。1.2 Nextcloud 到底是什么Nextcloud 则完全不同。它的定位是“自托管生产力平台”文件同步只是基本功在这个基础上还能装日历、联系人、笔记、在线 Office、聊天空、表单、甚至 RSS 阅读器。照片只是其中的一个模块官方默认带一个 Photos 应用能按时间线展示、能做人脸识别依赖机器学习组件但从交互精细度来看它显然不是核心主业。技术栈上 Nextcloud 是 PHP 的老江湖数据库可选 MySQL/MariaDB 或 PostgreSQL扩展靠海量应用市场存照片的方式就是普通文件目录。它更像一个什么都干的家庭私有云服务器而不是专业相册工具。这两款产品的血统差异决定了它们在照片管理上的表现天然不对等。拿 Immich 和 Nextcloud 的相册体验对比就像拿专业相机和全能手机比拍照效果——后者能干很多事但单论摄影这件事它确实有差距。如果 Nextcloud 在你的规划里只是用来管照片那它实际是在“大材小用加扬短避长”。2. 实测环境与部署细节回顾2.1 测试机配置与网络环境先交代一下我用什么机器来测避免大家看数据时没有参照物。测试机是一台旧办公电脑CPUIntel i5-6500四核四线程内存32GB DDR4对相册服务来说有点过剩但能同时跑两套服务对比存储512GB SSD 系统盘 4TB HDD 存照片系统Ubuntu Server 22.04 LTS网络家庭千兆内网 公网 frp 映射用于测试外网访问为什么用这台机器因为很多人在家里自建服务用的也就是淘汰下来的旧电脑或者小主机性能不会太夸张。这样的环境下测出来的感受对你日常使用更有参考价值。2.2 Immich 的 Docker Compose 部署Immich 官方推荐用 Docker Compose 部署安装过程非常简单。这里我补充说明一下Immich 的官方仓库提供了完整的 docker-compose.yml 和 .env 模板基本是“拉下来改下路径就能跑”的流程。我用的是当时的最新版本整体分了五个容器容器作用immich-server主服务处理 API、上传、缩略图生成等immich-machine-learning机器学习模块负责物体识别、人脸聚类、搜索向量immich-postgresPostgreSQL 数据库immich-redisRedis 缓存immich-web前端静态页面服务新版本已合入 server 镜像比较关键的几个环境变量是UPLOAD_LOCATION/mnt/data/immich DB_PASSWORDyourpassword DB_USERNAMEimmich DB_DATABASE_NAMEimmich MACHINE_LEARNING_ENABLEDtrue我修改了UPLOAD_LOCATION把它指到 4TB 的 HDD 上。在版本较新的版本中上传文件会按年/月自动归档目录这个后面再说。部署完之后浏览器打开http://服务器IP:2283就能进入管理界面创建管理员账号后直接开用。2.3 Nextcloud 的 Docker 部署Nextcloud 的部署方式有很多大多数人选的是直接拉官方镜像跑容器再用宿主机目录挂载数据。我的 Nextcloud 用的是 docker-compose包含了容器作用nextcloud主应用Apache PHPmariadb数据库redis缓存docker-compose.yml里把 Nextcloud 的数据目录挂到了 HDD 上数据库文件放在 SSD。官方推荐把数据库放到独立容器避免数据和应用耦合。启用 Redis 做缓存后页面响应速度会明显提升尤其是相册列表这种需要大量 IO 的场景。volumes: - /mnt/data/nextcloud/html:/var/www/html - /mnt/data/nextcloud/data:/var/www/html/data第一次打开网页会跳安装向导填好数据库账号密码、管理员账号就行。装完之后记得去应用商店装Photos、Memories这两个应用——Photos是官方默认相册Memories是社区里口碑最好的第三方相册应用后面详细说。2.4 两个系统部署难度实际对比单从安装角度看两个都有完善的 Docker 官方模板Immich 的 compose 文件更省心因为机器学习和 Redis 这些依赖它自己编排好了拉下来就能跑。Nextcloud 需要自己调整数据库、Redis 配置如果还要让 PHP 的 opcache、内存限制配合好手动调优的工序多一些。但 Nextcloud 的文档、社区帖子、教程数量远超 Immich随手一搜就是各种搭建教程包括 Ubuntu 下配置、WSL2 环境折腾、虚拟机里搭建等都有很详细的图文指南。Immich 起步晚一些官方文档质量很高但因为版本迭代快社区不少老教程会频繁失效尤其是配置项变动频繁。如果是第一次接触 Docker 的小白Nextcloud 的入门门槛反而更低一些。3. 日常使用体验对比核心功能逐个过招3.1 照片上传与自动备份自动备份是我自建相册第一优先级的功能。手机里拍了照片如果还要手动导到电脑上那私有云的优势就没了。Immich 的移动端做得非常完善。安装 App 后登录服务器地址开启“备份”开关它会自动把相机胶卷的新照片上传到服务器。可以设置备份目录、是否只连 Wi-Fi 时备份、是否包含视频等。实测在家庭千兆内网下上传速度能跑满带宽100 张 12MP 的照片大约 20 秒内完成。它还有一个很贴心的设计备份进度会以通知形式实时推送我随时能知道还有多少张没传完。Nextcloud 的自动备份其实也成熟官方 App 里也有“自动上传”功能可以新建一个“相机上传”规则指定目录、文件类型、上传触发条件。但它的上传更像“文件同步”而不是“相册备份”。文件传上去后在 Photos 应用里能看到但如果你用的是“外部存储”挂载的目录可能会遇到索引丢失或权限问题需要再去做扫描和重建索引。实测体验上的核心差别在于Immich 是把整件事当作“照片流”在做上传后在 App 里立刻看到时间线Nextcloud 更像“我把文件放到服务器了”需要等后台任务扫描、生成缩略图才能流畅看照片。首次上传大量照片时Nextcloud 的缩略图生成依赖 cron 定时任务有时要等好几分钟甚至更久用户体验会差一些。3.2 时间线浏览与回忆功能照片管理的日常操作就是“翻照片”。时间线是否顺滑、缩略图加载是否快直接决定日常使用频率。Immich 的时间线交互非常接近现代手机相册。它的缩略图是预生成的前端会懒加载滚动时很流畅。时间线支持按天、按月分组可以双指缩放日期条快速跳到某一天。还有一个惊喜点是“回忆”功能它会自动把你去年今天的照片推送到首页配合下面要讲的 AI 聚类它甚至能按“人物”“地点”生成智能相册。Nextcloud 的 Photos 应用也能按时间线排缩略图加载速度依赖内存和 PHP 性能。直接跑默认设置时大目录下滚动的卡顿感明显比 Immich 大。后来我装了社区应用 Memories体验提升非常大——它的缩略图预加载、时间线布局和整体手感非常接近 Immich。但 Memories 依赖后台预处理需要把preview的进程调度调对不然首次打开一个包含几千张照片的文件夹会等很久。坦率地讲如果让我只评价“翻相册”这个场景Immich 默认就赢了大半。Nextcloud 需要额外装对应用、调对参数才能接近它在时间线浏览方面的体验。3.3 AI 能力人脸识别、物体搜索与地点聚类这是我前后折腾时间最长、差距也最明显的一个部分。Immich 的机器学习服务是内置的一旦打开“智能搜索”开关后台会自动对已上传的照片做物体识别生成特征向量。人脸识别可以自动聚类人物你在设置里为每个人脸起名字后就能在首页看到“人物”相册。物体搜索也很有意思我在搜索框打“cat”包含猫的照片会全部出来准确率相当高。地点聚类则是基于照片的 GPS 信息自动生成“我去过的地方”时间线。这套 AI 链路如果用一句话评价就是“已经达到 Google Photos 的七八成功力”。人脸识别的准确率在同一个人的多角度照片上表现得不错只有在侧脸、戴口罩时会漏。处理 1.2 万张照片机器学习服务在 i5-6500 上跑了大约 5 个小时才完成任务期间 CPU 持续高负载。如果照片量更大建议在部署时给机器学习配置独立的 GPU 或者更强的 CPU。Nextcloud 的人脸识别不是默认功能需要额外安装Face Recognition应用然后命令行执行识别任务。这个应用的识别效果取决于训练集和模型实测比 Immich 弱一截。至于物体搜索、按地点聚类这些功能Nextcloud 生态里基本没有体验相近的应用只能用关键词搜索文件名没什么智能可言。如果你的相册管理需求里有“搜猫”“搜狗”“按人找人”这种智能化操作Immich 是唯一能在自托管环境里给你接近商业云相册体验的方案。Nextcloud 在这个环节基本被完爆。3.4 移动端与跨平台使用软件的最终交互阵地是手机 App。Immich 的 Android 和 iOS 客户端都做得很不错界面干净支持触控缩放、滑动浏览、多选、分享、下载体验很像 Google Photos。它甚至允许在 App 内直接把照片分享到其他应用不需要额外中转。Nextcloud 官方 App 是功能型选手它优先保证的是“文件操作”比如网盘同步、文件分享、查看 Office 文档相册浏览只是其中一个 Tab。打开照片后能看到缩略图大图但操作手感和流畅度比不上 Immich。好消息是第三方的PhotoSync或Les Pas等 App 可以作为曲线方案其中比较主流的是配合 Memories 应用来获得更好的相册体验但配置和授权比较折腾。这里有一个重要提醒如果你希望 50 多岁的爸妈也能在自己手机上直接看相册Immich 的 App 点击最少、上手最快。Nextcloud 的 App 对长辈来说操作路径长比较容易歇菜。3.5 多用户与分享机制家庭私有云往往得照顾多人使用。Immich 支持多用户可以给家人开账号每个账号有自己的独立时间线。共享方式是把照片或相册“共享给”指定用户或生成一个公开链接。不过要注意Immich 的多用户模型侧重于“各自备份各自的照片”如果你想让家人看到你备份的照片需要主动共享这个操作路径有点深。Nextcloud 的分享机制天生更完善毕竟文件系统出身。你可以把任意文件夹共享给用户/群组也可以生成带密码、带有效期的外部分享链接。它对“家庭成员间共享整个照片目录”这个场景非常友好。比如我按月建的旅行照片目录直接把整个目录共享给家人他们就能在网页上浏览下载权限控制也比 Immich 更细。所以这一轮Nextcloud 稳稳拿回一分。4. 系统资源、性能与运维对比4.1 内存与 CPU 占用实测很多家庭用户拿旧电脑或 NAS 跑服务资源占用是特别要关注的点。我分别测了两套系统在“空闲 每分钟几张照片增量备份”场景下的资源占用指标ImmichNextcloud含RedisDocker 容器数约 4-5 个约 3 个空闲内存占用约 2.5GB约 1.2GB空闲 CPU 占用0-2%后台任务触发时波动0-1%增量备份时 CPU短时上升缩略图生成后回落取决于 cron 任务可能持续波动首次机器学习扫描时 CPU满载数小时不支持同等能力从内存看Immich 明显更“重”。因为 Node.js、机器学习和 PostgreSQL 都是吃内存大户。如果只有 2GB 内存的小主机跑 Immich 会比较吃力建议至少 4GB 内存起步8GB 才舒服。Nextcloud 默认状态其实可以压在 1.5GB 以内但装了 Memories、Face Recognition 这类组件后也会往上走。4.2 存储结构与备份策略Immich 的存储很有意思新版本默认按“年/月/日”目录存储并且可选“按用户分目录”。这意味着底层文件是整齐的时间树但如果你自己手动往里塞文件它不会自动识别必须走它的入库链路。所以 Immich 的文件目录是“服务管理”不适合用人肉方式直接操作。Nextcloud 就是纯正的文件系统思维你的照片就是数据目录里的普通文件目录结构完全可以自定义。随便拖一个文件夹进去再把文件夹共享出去就能当网盘用。这种自由度在照片管理之外是非常大的优势备份也简单——直接 rsync 整个 data 目录即可。备份策略上我建议两个系统都做两层备份数据库 文件目录。Immich 的数据库迁移需要先备份 PostgreSQL 再恢复文件目录直接同步Nextcloud 因为文件不依赖数据库索引也能直接浏览紧急时把目录拷走就能抢救大部分数据。这一点 Nextcloud 的容灾能力更好也更适合手残党。4.3 升级迭代与长期维护成本Immich 最大的“隐性问题”是版本迭代极快并且 API、存储结构、数据库 schema 经常变。官方强烈建议“先看发布说明再升级”因为有些版本需要数据库迁移或重新生成缩略图。我中途升级过一次缩略图全部重新生成4TB 机械盘跑得吱吱响整整两三个小时才完成。如果你没有定期备份、不看 release notes 的习惯追新版本容易翻车。Nextcloud 更新则四平八稳大版本升级时有内置检查插件兼容性也做得比较保守整体更适合“不想咋折腾”的人。它的缺点反过来是“旧”有些新的 Web 特性和 AI 能力它吸收得很慢想体验新东西往往得靠第三方应用。5. 常见问题与避坑实录5.1 常见问题速查表下面这些问题是我在折腾过程中遇到并且反复查过资料的整理成表直接用。问题表现原因解决方法Immich 上传后缩略图一直没有时间线里有些图片是空白后台任务没跑或缩略图存储权限不对检查管理后台 Job 状态给UPLOAD_LOCATION目录加正确权限Immich 升级后照片“丢”了时间线变空但磁盘文件还在新版本数据库 schema 迁移未完成先看升级文档必要时手动执行迁移千万别删库Nextcloud 上传照片后相册不更新网页端看到照片Photos 里没有后台扫描任务没有配置 cron在 config 里设置backgroundjobs_mode为 cron并配置系统定时任务Nextcloud 预览图全黑白缩略图无法生成PHP 缺少 imagick 或 GD 支持容器内安装php-imagick模块并重启Memories 应用加载慢滚动相册明显卡顿没有启用 Redis 做大图缓存在 config.php 里配置 Redis并设置memories.video_cache相关参数Immich 外网访问上传很慢公网传输速率只有几百 KB/s未开启上传分片或服务器带宽受限检查反向代理是否支持大文件上传确认客户端开“分片上传”5.2 几条掏心窝的避坑建议第一不要把 Immich 装在有动态 IP 又没有反向代理的环境里就直接暴露到公网。Immich 目前没有非常细粒度的访问控制建议用 Nginx/Caddy 转发并在外层加一层认证或者至少用强密码 二次验证。另外它的机器学习服务需要暴露一个端口如果直接公网裸奔风险比较大。第二Nextcloud 装 Memories 后千万别忽略缩略图预生成。Memories 虽然体验好但它依赖系统在后台提前生成预览图。如果图片太多一次性导入后立即打开应用会卡到怀疑人生。正确姿势是导入一批就跑一次occ files:scan然后让 cron 慢慢生成预览图再让用户去看。第三数据库别放机械盘。不管是 Immich 的 PostgreSQL 还是 Nextcloud 的 MariaDB数据库文件请放到 SSD 上。机械盘读数据库会让相册加载明显变慢响应时间能差好几倍。如果只有机械盘建议至少做一层内存缓存Redis / 系统 page cache能把体验救回来一部分。第四如果你用 VMware 虚拟机跑 Nextcloud默认配置下来虚拟磁盘扩容操作非常不直观容易在扩容时出幺蛾子。建议从一开始就把数据目录挂载为独立虚拟磁盘后续备份和迁移会省事很多。同样的WSL2 环境下如果走 Docker需要注意 WSL2 的磁盘性能默认打折扣用映射目录时大文件写入会明显慢必要时把数据放在 WSL2 自己的虚拟磁盘里。5.3 我对两套系统长期稳定性的感受连续跑了一个多月两个服务每天定时备份手机照片。Immich 整体很稳但升级过程让人揪心有一次小版本升级后机器学习模型需要重下外网下载模型文件时断时续最终手动放进去才恢复。Nextcloud 则是在“能干很多事”的前提下表现出了极强的可靠性重装过几次新实例旧数据目录直接挂进去也能恢复这点让我很放心。6. 最终选择需求决定一切别被参数带偏做了这么多对比最后还是要回归到你的实际需求上。我建议按下面的思路做选择如果满足以下任一条件优先选 Immich你只想要一个“能用的、体验像 Google Photos 的自托管相册”你有足够的机器内存8GB 以上你不介意经常看 release notes、搞定期备份你希望手机端体验足够好甚至打算给不太会用电子设备的家人用你比较依赖 AI 搜索、人脸聚类这类智能能力如果你符合以下几个特点优先选 Nextcloud你想要的是一台“家庭私有云服务器”文件同步、日历、笔记都要用你的 NAS/小主机的内存有限你更重视数据可控性和迁移容灾能力你不追求 AI 花活只要稳定地存取照片就行你已经在用 Nextcloud只是纠结要不要再装一套 Immich我自己的最终方案是“两者共存”Nextcloud 承担文件备份和家庭共享主力Immich 充当专业的手机照片入口两个服务的照片目录最终通过定时任务同步。因为 Immich 的目录是按年月组织的而 Nextcloud 那边是自由的文件夹结构我做了一层单向同步把 Immich 上传的照片定期拷到 Nextcloud 的一个固定目录里。这样既能享受 Immich 的智能体验又能保住 Nextcloud 的文件管理灵活性算是一个比较贪心的平衡方案。最后再分享一个小技巧不论你最终选了哪套照片管理这件事的命根子永远是“备份”。哪怕你用的是再专业的相册服务硬盘挂了就一切归零。我现在的做法是每晚将 Immich 和 Nextcloud 两个数据目录增量同步到一台离线备份机器上每个月再做一次冷备份。自建私有云不是把数据搬到家里就万事大吉真正可靠的自托管是能让你随时“从废墟里把照片捞回来”的那种部署。