树莓派5搭建AI私有照片服务器:Immich部署与性能优化实战 1. 为什么要在树莓派5上折腾私有照片服务器把照片存在别人家的服务器上这件事我干了快十年从最早的网盘到后来的各种云相册说实话便利是真便利但心里那根刺一直没拔掉。直到去年家里那台老NAS硬盘挂了丢了两千多张孩子的照片我才下定决心照片这东西必须攥在自己手里。树莓派5出来之后我第一时间入手了一台8GB版本折腾了大概三周终于把一套带AI能力的私有照片服务器跑通了。这套东西能干什么简单说它能把你的手机、相机、电脑里的照片自动汇总到一个地方用AI自动识别照片里的人和物支持按人脸、地点、场景搜索还能自动生成相册和回忆视频。最关键的是所有数据都在你自己的硬盘上断网也能用没有任何人能看到你的照片。这套方案适合谁如果你手里有几千到几万张照片对隐私比较在意又愿意花点时间折腾那这套方案非常适合你。如果你完全不想碰命令行那可能成品NAS更适合你。但如果你像我一样喜欢自己掌控一切而且想顺便学点AI部署的知识那树莓派5绝对是个绝佳的练手平台。它的性能比树莓派4强了不止一倍尤其是PCIe接口和更强的CPU让本地跑AI模型从“勉强能用”变成了“真的能用”。我先把整体架构说清楚免得你跟着做的时候一头雾水。整套系统分三层最底层是存储层用外接硬盘或者NVMe SSD存照片原图中间是服务层跑照片管理程序和数据库最上面是AI层负责人脸识别、物体识别和语义搜索。这三层都跑在树莓派5上通过Docker容器隔离互不干扰。你可能会问为什么不直接装一个现成的照片管理软件因为现成的软件要么不支持AI要么AI功能要联网要么就是收费贵得离谱。自己搭的好处是每个组件你都能换都能调而且完全免费。2. 硬件选型与系统准备别在第一步就踩坑2.1 树莓派5的版本选择和散热方案树莓派5目前有2GB、4GB、8GB和16GB四个版本。我强烈建议至少上8GB如果你照片多、想跑大一点的AI模型直接上16GB。为什么因为照片管理服务本身吃内存不多但AI推理的时候模型加载和图片预处理会吃掉大量内存。我实测下来8GB版本在同时处理人脸识别和物体识别时内存占用会到6GB左右留点余量比较稳妥。2GB和4GB版本不是不能跑但你得频繁交换内存体验会差很多。散热是树莓派5的一个大问题。它的CPU性能上来了发热也跟着上来了。我试过被动散热片夏天跑AI推理的时候温度直接飙到85度然后降频推理速度掉一半。后来换了主动散热风扇温度稳定在55度左右。如果你打算7x24小时跑服务一定要上主动散热最好是那种带温控的风扇噪音小。官方那个主动散热器就够用但如果你想把树莓派塞进小机箱那就得选个矮一点的散热方案。电源也不能马虎。树莓派5需要5V 5A的电源也就是25W。我用过普通的5V 3A电源结果外接硬盘一启动就掉电重启。后来换了官方27W电源问题解决。如果你还要接NVMe SSD那电源余量更要留足。我建议直接上官方电源别省这几十块钱稳定性比什么都重要。2.2 存储方案NVMe还是外接硬盘树莓派5最大的升级之一就是有了PCIe接口可以通过M.2 HAT接NVMe SSD。我强烈建议用NVMe SSD作为系统盘和照片存储盘。为什么因为照片管理服务需要频繁读写数据库和缩略图NVMe的随机读写速度比SD卡快几十倍。我实测过用SD卡跑照片索引一万张照片要跑将近两个小时换成NVMe之后只要二十分钟。这个差距在AI推理的时候更明显模型加载速度完全不是一个级别。如果你照片特别多比如超过两万张我建议系统盘用NVMe照片原图存外接硬盘。外接硬盘选USB 3.0的机械硬盘就行容量大、便宜。但要注意树莓派5的USB接口供电能力有限最好选带独立供电的硬盘盒或者用带电源的USB Hub。我试过直接接2.5寸移动硬盘偶尔会掉盘后来换成带供电的3.5寸硬盘盒再也没出过问题。文件系统方面我建议用ext4别用NTFS或者exFAT。为什么因为ext4对Linux权限支持更好Docker容器挂载的时候不会出现权限混乱的问题。如果你必须和Windows电脑交换数据可以单独分一个exFAT分区但照片库本身一定要放在ext4分区上。我踩过这个坑用NTFS的时候容器里的服务经常因为权限问题写不进文件排查了半天才发现是文件系统的问题。2.3 操作系统的选择和基础配置树莓派5官方支持64位系统一定要装64位的。为什么因为很多AI模型和Docker镜像只有64位版本32位系统根本跑不起来。我推荐用官方的Raspberry Pi OS Lite 64位版本不带桌面环境。为什么不用带桌面的版本因为桌面环境会占用大量内存和CPU而且你跑服务的时候根本用不到桌面。如果你需要图形界面管理可以通过Web界面或者SSH端口转发来解决。系统装好之后有几件事必须马上做。第一更新系统到最新版本命令是sudo apt update sudo apt full-upgrade -y。第二配置SSH和VNC方便远程管理。第三设置静态IP不然路由器重启之后IP变了你的服务就找不到了。第四把默认密码改掉虽然是在内网但安全习惯要养好。第五配置交换空间树莓派5默认的交换空间只有100MB跑AI的时候肯定不够我建议调到2GB到4GB。具体操作是编辑/etc/dphys-swapfile把CONF_SWAPSIZE改成2048或者4096然后重启服务。还有一点很重要把Docker和Docker Compose装好。我建议用官方脚本安装Docker别用apt里的版本apt里的版本太旧很多新特性不支持。安装命令是curl -fsSL https://get.docker.com | sh然后把自己加到docker组里这样不用sudo就能跑docker命令。Docker Compose现在集成在Docker里了用docker compose命令就行不用单独装。3. 核心服务选型为什么我选了这套组合3.1 照片管理服务的选择对比市面上能自建的照片管理服务不少我主要对比了三个PhotoPrism、Immich和LibrePhotos。PhotoPrism是老牌选手功能全AI能力强但界面有点老旧而且对硬件要求比较高。Immich是后起之秀界面漂亮手机App好用AI功能也在快速迭代。LibrePhotos比较轻量但功能相对少一些。我最后选了Immich原因有几个。第一它的手机App做得非常好自动备份体验跟大厂云相册几乎一样家里老人也能轻松上手。第二它的AI功能是内置的人脸识别、物体识别、语义搜索都有而且模型可以自己换。第三它的更新非常活跃社区响应快遇到问题容易找到解决方案。第四它支持多用户可以给家里人每人一个账号照片互相隔离。PhotoPrism我也试过AI能力确实强但手机App体验差一些而且索引速度慢。LibrePhotos功能太少不适合我这种照片多、需求杂的用户。Immich的架构是这样的它有一个主服务负责API和Web界面一个机器学习服务负责AI推理一个PostgreSQL数据库存元数据一个Redis做缓存还有一个向量数据库存人脸和语义特征。这些服务都跑在Docker容器里通过内部网络通信。你可能会问为什么这么复杂因为AI推理和主服务分开之后可以独立升级和扩展。比如你想换一个更强的人脸识别模型只需要重启机器学习服务不影响主服务运行。3.2 AI模型的选择和优化Immich默认用的是Buffalo_L模型这个人脸识别模型精度不错但在树莓派5上跑起来有点吃力。我实测下来一张照片的人脸检测要3到5秒如果照片多索引时间会很长。后来我换成了MobileFaceNet模型精度稍微降了一点但速度提升了三倍多一张照片只要1秒左右。对于家庭照片来说这个精度完全够用。如果你对精度要求特别高可以保留Buffalo_L但建议在晚上或者不用的时候跑批量索引。物体识别和语义搜索用的是CLIP模型。这个模型可以把图片和文字映射到同一个向量空间所以你搜“海滩上的狗”就能找到对应的照片。CLIP模型在树莓派5上跑起来比较慢一张照片要2到3秒。我的优化方法是把图片分辨率降下来CLIP默认处理224x224的图片但Immich会先缩放我把它改成160x160速度提升了一倍精度损失很小。另外可以开启批处理一次处理多张图片充分利用CPU。还有一个重要的优化点是模型量化。原始模型是FP32的占内存大、速度慢。我换成了INT8量化的版本内存占用减少了一半速度提升了40%左右。量化之后的精度损失在可接受范围内人脸识别准确率大概降了1%到2%但速度提升非常明显。具体怎么换模型后面实操部分会详细说。3.3 数据库和缓存的配置要点PostgreSQL是Immich的元数据库存照片的路径、时间、标签、人脸信息等。树莓派5跑PostgreSQL没问题但默认配置需要调优。我建议把shared_buffers调到512MBwork_mem调到32MBmaintenance_work_mem调到128MB。这些参数在postgresql.conf里改改完重启数据库。为什么要调因为默认配置是按小内存设备来的树莓派5有8GB内存可以给数据库多分一点这样查询速度会快很多。Redis是缓存服务存一些临时数据和任务队列。默认配置基本够用但建议把maxmemory设成256MBmaxmemory-policy设成allkeys-lru。这样Redis不会无限增长内存不够的时候会自动淘汰旧数据。向量数据库我用的是Qdrant它专门存人脸和语义向量支持快速相似度搜索。Qdrant在树莓派5上跑起来很轻量内存占用大概200MB左右不需要特别调优。还有一个细节数据库和缓存的存储目录一定要放在NVMe SSD上别放在SD卡上。因为数据库频繁读写SD卡很容易坏。我第一套系统就是数据库放在SD卡上跑了三个月SD卡就挂了所有元数据丢失照片虽然还在但索引全没了重新索引花了整整两天。这个坑大家一定要避开。4. 实操部署从零到跑通的完整流程4.1 系统初始化和Docker环境搭建假设你已经装好了Raspberry Pi OS Lite 64位并且通过SSH连上了树莓派。第一步更新系统并安装必要工具。命令是sudo apt update sudo apt full-upgrade -y然后装一些常用工具sudo apt install -y git curl wget htop nano。这些工具后面都会用到。第二步配置交换空间。编辑/etc/dphys-swapfile把CONF_SWAPSIZE改成4096然后执行sudo systemctl restart dphys-swapfile。你可以用free -h命令确认交换空间已经生效。第三步安装Docker。用官方脚本curl -fsSL https://get.docker.com | sh。装完之后把自己加到docker组sudo usermod -aG docker $USER然后退出SSH重新登录这样不用sudo就能跑docker命令。第四步确认Docker和Docker Compose版本。docker --version和docker compose version确保Docker版本在24以上Compose版本在2.20以上。如果版本太低有些新特性用不了。第五步创建项目目录。我习惯把服务放在/opt下面执行sudo mkdir -p /opt/immich然后sudo chown $USER:$USER /opt/immich。这个目录用来放docker-compose文件和配置文件。第六步创建照片存储目录。如果你用外接硬盘先挂载硬盘比如挂到/mnt/photos。然后创建子目录mkdir -p /mnt/photos/library /mnt/photos/thumbs /mnt/photos/encoded-video /mnt/photos/profile。这些目录分别存原图、缩略图、转码视频和用户配置。4.2 Immich的Docker Compose配置详解Immich官方提供了一个docker-compose.yml模板但默认配置需要改不少地方。我把我优化过的配置贴出来然后逐项解释。首先把immich-server的镜像版本固定别用latest因为自动更新有时候会出问题。我用的是ghcr.io/immich-app/immich-server:v1.119.0这个版本我实测稳定。然后把immich-machine-learning的镜像也固定用同一个版本。数据库配置部分DB_PASSWORD一定要改成一个强密码别用默认的。DB_STORAGE_LOCATION指向NVMe上的目录比如/mnt/nvme/postgres。DB_DATA_LOCATION也一样。Redis的配置比较简单把REDIS_HOSTNAME设成immich-redis就行。存储卷映射部分把/mnt/photos/library映射到容器的/usr/src/app/upload这样照片原图就存在外接硬盘上。机器学习服务的配置是关键。默认的MACHINE_LEARNING_MODEL_TTL是300秒意思是模型加载后5分钟不用就卸载。我建议改成0让模型常驻内存这样每次推理不用重新加载速度快很多。但代价是内存占用会一直保持在高位8GB版本大概会占2GB左右。如果你内存紧张可以保留默认值。MACHINE_LEARNING_WORKERS设成2树莓派5有4个核心留两个给主服务。MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT设成60避免频繁建立连接。还有一个重要的环境变量是IMMICH_MACHINE_LEARNING_URL指向机器学习服务的地址默认是http://immich-machine-learning:3003。如果你把机器学习服务部署在另一台机器上可以改这个地址。但树莓派5上跑所有服务保持默认就行。最后别忘了设置TZ时区改成你所在的时区不然照片时间会乱。4.3 启动服务和初始化设置配置文件写好之后执行docker compose up -d启动所有服务。第一次启动会拉取镜像大概需要十几分钟取决于你的网络速度。启动完成后用docker compose ps查看容器状态确保所有容器都是running。如果有容器不断重启用docker compose logs 容器名看日志排查。常见问题是数据库密码不对或者存储目录权限不对。服务起来之后打开浏览器访问http://树莓派IP:2283应该能看到Immich的登录界面。第一次访问会让你创建管理员账号填好邮箱和密码。然后进入设置页面配置外部库或者上传照片。我建议先上传一小批照片测试比如100张看看索引速度和AI识别效果。如果一切正常再批量导入所有照片。批量导入有两种方式。一种是通过Web界面上传适合照片不多的情况。另一种是直接把照片复制到/mnt/photos/library目录下然后在Immich设置里触发扫描。我推荐第二种速度快而且不受浏览器限制。复制的时候注意目录结构Immich会按年/月/日的格式组织照片你可以手动创建这些目录也可以让Immich自动整理。我建议让Immich自动整理省事。导入之后Immich会自动开始索引。索引分几个阶段先提取元数据然后生成缩略图然后跑人脸识别最后跑物体识别和语义向量。你可以在“任务”页面看到进度。一万张照片在树莓派5上大概需要4到6小时完成全部索引具体取决于照片大小和AI模型。建议晚上睡觉前开始第二天早上就好了。5. AI功能调优让人脸识别和语义搜索跑得更快5.1 人脸识别模型的替换和参数调整Immich默认的人脸识别模型是Buffalo_L精度高但速度慢。替换成MobileFaceNet的步骤如下。首先进入机器学习容器的模型目录一般在/cache下面。你可以用docker exec -it immich-machine-learning bash进入容器然后cd /cache。你会看到已经下载的模型文件。把MobileFaceNet的模型文件下载下来替换掉原来的。模型文件可以从Immich的模型仓库获取具体地址在官方文档里有。替换之后重启机器学习服务docker compose restart immich-machine-learning。然后进入Immich设置找到“机器学习”选项把人脸识别模型改成MobileFaceNet。注意替换模型之后之前已经识别的人脸需要重新跑一遍因为特征向量不兼容。你可以在“任务”页面找到“人脸识别”任务点击“全部重新运行”。参数调整方面MACHINE_LEARNING_FACIAL_RECOGNITION_MODEL设成mobilefacenet。还有一个重要参数是MACHINE_LEARNING_FACIAL_RECOGNITION_MIN_SCORE默认是0.7意思是置信度低于0.7的人脸不识别。我建议调到0.6这样能识别出更多侧脸和模糊人脸但误识别也会增加。你可以根据自己照片的情况调整。如果发现误识别太多就调回0.7或者更高。5.2 语义搜索的优化技巧语义搜索用的是CLIP模型它能把文字和图片映射到同一个向量空间。你搜“生日蛋糕”就能找到所有包含蛋糕的照片。这个功能非常强大但默认配置下速度比较慢。优化方法有几个。第一降低处理分辨率。在机器学习容器的环境变量里加一个MACHINE_LEARNING_CLIP_IMAGE_SIZE160默认是224。降到160之后速度提升大概40%精度损失很小。第二开启批处理。MACHINE_LEARNING_CLIP_BATCH_SIZE设成4意思是每次处理4张图片。树莓派5的CPU有4个核心批处理能充分利用多核性能。但批处理会增加内存占用8GB版本建议设成416GB版本可以设成8。第三把CLIP模型也换成量化版本。Immich支持ONNX格式的量化模型你可以从模型仓库下载INT8版本的CLIP模型替换掉默认的FP32模型。替换之后内存占用减少一半速度提升30%左右。还有一个技巧是限制语义搜索的范围。如果你照片特别多比如超过五万张全库搜索会很慢。Immich支持按时间范围、相册、人物筛选后再搜索。你可以先筛选出某个时间段或者某个人物的照片然后再搜关键词这样搜索范围小很多速度自然就快了。这个技巧在实际使用中非常实用尤其是你只想找某次旅行中的某张照片时。5.3 索引任务的调度和资源控制AI索引非常吃资源如果同时跑人脸识别和物体识别树莓派5的CPU会满载温度飙升其他服务也会变慢。我的做法是错峰调度。在Immich的“任务”页面可以设置每个任务的并发数。人脸识别设成1物体识别设成1缩略图生成设成2。这样同一时间只有一个AI任务在跑不会互相抢资源。另外可以设置任务的时间窗口。比如让AI索引只在凌晨1点到早上7点之间跑白天不跑这样不影响你白天使用。Immich本身不支持时间窗口但你可以用cron定时任务来控制。写一个脚本凌晨1点启动机器学习容器早上7点停止。这样白天机器学习服务不运行不占内存晚上自动跑索引。这个方案我用了几个月非常稳定。还有一个资源控制的技巧是限制容器的CPU和内存。在docker-compose.yml里给机器学习服务加上deploy.resources.limits比如cpus: 2.0和memory: 3G。这样即使AI任务跑满也不会把整个系统拖垮。主服务可以给cpus: 1.0和memory: 1G数据库给cpus: 1.0和memory: 1G。剩下的资源留给系统和缓存。这个配置在8GB版本上实测很稳。6. 常见问题排查与避坑经验实录6.1 服务启动失败和容器不断重启这是最常见的问题原因通常有三个。第一数据库密码不对。检查docker-compose.yml里的DB_PASSWORD和Immich服务里的DB_PASSWORD是否一致。如果不一致数据库连不上服务就会重启。第二存储目录权限不对。Docker容器里的服务通常以非root用户运行如果宿主机目录权限是root容器写不进去。解决办法是sudo chown -R 1000:1000 /mnt/photos把目录所有者改成UID 1000。第三端口冲突。Immich默认用2283端口如果这个端口被其他服务占了就起不来。用sudo netstat -tlnp | grep 2283检查如果被占了就改端口。还有一个隐蔽的问题是交换空间不够。树莓派5默认交换空间只有100MB跑AI的时候内存不够系统会杀进程导致容器不断重启。解决办法就是前面说的把交换空间调到4GB。我一开始没调机器学习服务跑几分钟就挂日志里全是Out of memory调了交换空间之后问题解决。6.2 AI识别速度慢或者不工作AI识别慢的原因通常是模型太大或者资源不够。先检查机器学习容器的日志docker compose logs immich-machine-learning。如果看到Model loading反复出现说明模型被频繁卸载和加载把MACHINE_LEARNING_MODEL_TTL设成0就能解决。如果看到Timeout说明推理超时了需要降低分辨率或者换更小的模型。如果AI完全不工作先确认机器学习服务是否正常运行docker compose ps看状态。然后确认Immich主服务能连上机器学习服务在Immich设置里点“测试连接”。如果连不上检查IMMICH_MACHINE_LEARNING_URL环境变量是否正确。还有一个可能是模型文件损坏删掉/cache目录下的模型文件重启容器会自动重新下载。6.3 照片导入后不显示或者缩略图缺失这个问题通常是文件权限或者路径映射的问题。先检查照片是否真的复制到了/mnt/photos/library目录下。然后检查Immich的存储卷映射是否正确。在docker-compose.yml里/mnt/photos/library应该映射到/usr/src/app/upload。如果映射错了Immich找不到照片。缩略图缺失通常是生成任务没跑完。去“任务”页面看“生成缩略图”任务的进度。如果任务卡住了可以手动触发点“全部重新运行”。如果还是不行检查NVMe SSD的剩余空间缩略图很占空间一万张照片大概需要10GB左右。空间不够的话缩略图生成会失败。还有一个坑是照片文件名包含特殊字符。Immich对中文文件名支持没问题但如果文件名里有emoji或者特殊符号可能会导入失败。解决办法是批量重命名把特殊字符去掉。我写了一个脚本用rename命令把所有文件名里的非ASCII字符替换成下划线导入就顺利了。6.4 系统运行一段时间后变慢或者卡死树莓派5跑久了变慢通常是内存泄漏或者温度过高。先看内存free -h如果可用内存很少交换空间用满那就是内存不够。解决办法是限制容器内存或者升级到16GB版本。再看温度vcgencmd measure_temp如果超过80度就是散热问题。检查风扇是否正常运转散热片是否松动。我遇到过风扇积灰导致散热效率下降清理之后温度降了10度。还有一个原因是数据库膨胀。PostgreSQL跑久了表会变大查询变慢。定期执行VACUUM FULL可以回收空间。我设置了一个cron任务每周日凌晨执行一次。命令是docker exec -it immich-postgres psql -U postgres -c VACUUM FULL;。执行的时候会锁表所以要在不用的时候跑。执行完之后数据库文件会小很多查询速度也会恢复。6.5 常见问题速查表问题现象可能原因排查方法解决方案容器不断重启数据库密码错误查看容器日志统一docker-compose中的密码容器不断重启存储目录权限不对ls -la查看目录所有者chown -R 1000:1000AI识别慢模型频繁加载卸载查看机器学习日志设MODEL_TTL0AI不工作服务连接失败测试连接检查MACHINE_LEARNING_URL缩略图缺失生成任务未完成查看任务进度手动触发重新运行系统变慢内存不足free -h限制容器内存或加交换空间系统变慢温度过高vcgencmd measure_temp清理风扇或换散热器数据库查询慢表膨胀查看数据库大小定期VACUUM FULL7. 数据备份与安全加固别等丢了才后悔7.1 照片和数据库的备份策略私有服务器的最大风险不是被攻击而是硬盘坏了。我吃过这个亏所以现在备份做得非常勤。我的策略是三层备份第一层照片原图实时同步到另一块外接硬盘用rsync每小时同步一次。第二层数据库每天凌晨导出一次存到NVMe和SD卡各一份。第三层每周把重要照片和数据库备份加密后传到另一台设备上。这样即使树莓派彻底挂了数据也能找回来。rsync的同步命令是rsync -av --delete /mnt/photos/library/ /mnt/backup/photos/。--delete的意思是删除目标目录里源目录没有的文件保持完全一致。数据库备份用pg_dumpdocker exec -it immich-postgres pg_dump -U postgres immich /mnt/backup/immich_$(date %Y%m%d).sql。这个命令导出整个数据库恢复的时候用psql导入就行。备份文件一定要加密尤其是传到外部设备的时候。用gpg加密gpg -c /mnt/backup/immich_20260101.sql会提示你输入密码。加密后的文件即使被别人拿到没有密码也打不开。密码一定要记住忘了就真的打不开了。我建议把密码写在纸上锁在抽屉里别只存在电脑里。7.2 网络安全和访问控制虽然是在内网但安全措施不能少。第一改掉默认端口。Immich默认用2283我改成了随机的高位端口比如34567。这样即使有人扫描你的内网也不容易发现服务。第二开启HTTPS。Immich支持HTTPS你可以用自签名证书也可以用Lets Encrypt。自签名证书配置简单但浏览器会报警告。Lets Encrypt需要域名如果你有域名建议用Lets Encrypt。第三配置防火墙。树莓派5上可以用ufw只开放必要的端口。比如只开放SSH端口和Immich端口其他全部关闭。命令是sudo ufw allow 22/tcp和sudo ufw allow 34567/tcp然后sudo ufw enable。第四禁用密码登录SSH改用密钥登录。生成密钥对ssh-keygen -t ed25519然后把公钥复制到树莓派的~/.ssh/authorized_keys文件里。编辑/etc/ssh/sshd_config把PasswordAuthentication改成no重启SSH服务。第五定期更新系统和容器。sudo apt update sudo apt full-upgrade -y每周跑一次。Docker镜像也要定期更新docker compose pull拉取最新镜像然后docker compose up -d重启服务。但注意更新之前一定要备份数据库因为新版本有时候会有数据库迁移迁移失败就麻烦了。7.3 用户管理和权限隔离如果你给家里人用一定要给每人创建独立账号。Immich支持多用户每个用户的照片互相隔离看不到别人的。创建用户的步骤用管理员账号登录进入“管理”页面点“创建用户”填邮箱和密码。然后告诉家里人用这个账号登录手机App他们的照片就会自动备份到自己的空间里。权限方面普通用户只能看自己的照片不能管理服务。管理员可以看所有用户的状态但不能看普通用户的照片内容。这个设计很合理既方便管理又保护隐私。如果你想让家里人共享某些照片可以创建共享相册把特定照片放进去然后邀请其他用户加入。共享相册里的照片所有成员都能看。还有一个细节是存储配额。Immich支持给每个用户设置存储上限防止某个用户把硬盘塞满。在“管理”页面编辑用户设置“存储配额”比如每人50GB。超过配额之后该用户不能再上传新照片但已有的照片不受影响。这个功能在多用户环境下非常实用。8. 性能实测与扩展玩法8.1 树莓派5跑AI照片服务器的真实性能数据我用一万张照片做了完整测试照片平均大小4MB格式是JPEG和HEIC混合。测试结果如下缩略图生成一万张照片耗时约45分钟平均每张0.27秒。人脸识别一万张照片耗时约2小时50分钟平均每张1.02秒。物体识别和语义向量一万张照片耗时约3小时20分钟平均每张1.2秒。全部索引完成总共约7小时跑了一个晚上。内存占用方面空闲时系统占用约1.2GB跑人脸识别时峰值到4.5GB跑物体识别时峰值到5.2GB。CPU占用空闲时5%左右跑AI时四个核心全部满载温度稳定在60度左右。功耗方面空闲时约5W满载时约12W一天耗电约0.15度一个月电费不到3块钱。这个功耗比成品NAS低多了。搜索响应速度按人脸搜索一万张照片里搜一个人结果返回时间约1.5秒。按语义搜索搜“海滩日落”返回时间约2秒。按时间浏览加载一个月的缩略图时间约0.8秒。整体体验非常流畅跟云相册差不多但数据完全在自己手里。8.2 后续可以扩展的玩法和功能这套系统跑通之后可以扩展很多玩法。第一接入监控摄像头。用ffmpeg把摄像头的RTSP流截帧存到Immich的监控相册里这样家门口的录像也能统一管理。第二接入无人机照片。大疆无人机拍的照片有GPS信息Immich能自动按地图归类你可以在地图上看到每张照片的拍摄位置。第三接入扫描仪。把老照片扫描成电子版导入Immich用AI自动修复和上色。第四搭建照片展示墙。用树莓派接一个旧显示器跑一个幻灯片程序自动轮播Immich里的照片。我家里就搞了一个放在客厅每天自动播放孩子的照片效果很好。第五接入智能音箱。用Home Assistant把Immich接入智能家居系统对着音箱说“播放去年的今天”电视上就会显示对应的照片。这个玩法需要一点智能家居的基础但实现起来不难。第六做照片自动整理。写一个Python脚本调用Immich的API定期把照片按人物、地点、事件自动分类到不同相册。比如把所有包含“孩子”的照片自动放到“成长记录”相册把所有在海边拍的照片放到“旅行”相册。这个脚本我还在写跑通之后会分享出来。8.3 我踩过的坑和最后的建议最后分享几个我踩过的坑。第一别用SD卡跑数据库我坏了三张SD卡才明白这个道理。第二别用便宜的电源电压不稳会导致硬盘掉盘数据损坏。第三别在白天跑AI索引CPU满载的时候其他服务会卡体验很差。第四别忘记备份我丢过一次数据重新索引花了两天那种感觉不想再体验第二次。如果你刚开始折腾我的建议是先跑通基本功能别一上来就追求完美。先把照片导进去能看能搜就行。然后慢慢调优AI模型换更快的模型调参数。最后再搞备份和安全加固。一步一步来遇到问题就查日志Immich的社区很活跃大部分问题都能找到答案。这套系统我跑了半年多稳定性很好除了偶尔更新容器需要重启平时基本不用管。家里人也都习惯了用自己的私有相册手机照片自动备份再也不用担心云盘限速或者收费。如果你也想把照片的控制权拿回来树莓派5加Immich这套方案值得一试。