文章定位
一、immich介
1.1 immich简介
直接从您的手机自托管照片和视频备份解决方案。
1.2 immich注意事项
该项目正在非常积极的开发中。
⚠️预计会出现错误和重大更改。
⚠️ 请勿将该应用程序用作存储照片和视频的唯一方式。
⚠️始终遵循 3-2-1 备份计划,为您珍贵的照片和视频!
1.3 immich使用场景
- 个人照片管理:immich提供了一个简单而直观的界面,让个人用户能够方便地管理自己的照片集合。用户可以通过标签、日期和描述等元数据对照片进行分类和搜索,同时可以进行批量处理和编辑操作。
- 团队协作:immich支持多用户使用,可以作为团队内部的照片管理工具。团队成员可以共享照片集合,并进行评论和讨论。通过权限管理,可以精确控制不同用户对照片的访问和编辑权限。
- 专业摄影师:对于摄影师来说,照片管理是不可或缺的一环。immich提供了针对摄影师的一些特殊功能,如支持原始RAW文件的管理和预览、批量导出和水印处理等。摄影师可以方便地对照片进行整理、筛选和处理,从而节省时间和提高工作效率。
- 图片库管理:immich的强大搜索和分类功能使其成为一个理想的图片库管理工具。无论是个人图片库、企业图片库还是公共图片库,都可以通过immich来进行统一管理和检索。用户可以根据需要自定义标签和分类方式,从而更方便地找到所需的图片。
二、本地环境介绍
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为centos7.6。
hostname |
IP地址 |
操作系统版本 |
Docker版本 |
---|---|---|---|
jeven |
192.168.3.166 |
centos 7.6 |
20.10.17 |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.该项目提示更新频繁,请谨慎部署生产环境;
3.在Docker环境下部署immich照片管理系统。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
1 2 3 4 5 6 7 8 9 |
<span class="token punctuation">[</span>root@jeven ~<span class="token punctuation">]</span><span class="token comment"># systemctl status docker</span> ● docker.service - Docker Application Container Engine Loaded: loaded <span class="token punctuation">(</span>/usr/lib/systemd/system/docker.service<span class="token punctuation">;</span> enabled<span class="token punctuation">;</span> vendor preset: disabled<span class="token punctuation">)</span> Active: active <span class="token punctuation">(</span>running<span class="token punctuation">)</span> since Mon <span class="token number">2023</span>-12-11 <span class="token number">16</span>:37:11 CST<span class="token punctuation">;</span> 5h 58min ago Docs: https://docs.docker.com Main PID: <span class="token number">11899</span> <span class="token punctuation">(</span>dockerd<span class="token punctuation">)</span> Tasks: <span class="token number">53</span> Memory: <span class="token number">187</span>.3M CGroup: /system.slice/docker.service |
3.2 检查Docker版本
检查Docker版本,当前版本为20.10.17。
1 2 |
<span class="token punctuation">[</span>root@jeven ~<span class="token punctuation">]</span><span class="token comment"># docker -v</span> Docker version <span class="token number">20.10</span>.17, build 100c701 |
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
1 2 |
<span class="token punctuation">[</span>root@jeven ~<span class="token punctuation">]</span><span class="token comment"># docker compose version</span> Docker Compose version v2.6.0 |
四、下载immich镜像
从谷歌仓库和docker hub仓库拉取immich相关镜像,版本为最新的latest版本。
1 2 3 |
<span class="token function">docker</span> pull ghcr.io/imagegenius/immich:latest <span class="token function">docker</span> pull redis <span class="token function">docker</span> pull postgres:14 |
五、部署immich照片管理系统
5.1 创建目录
创建主机挂载目录
1 |
<span class="token function">mkdir</span> <span class="token parameter variable">-p</span> /data/immich <span class="token operator">&&</span> <span class="token builtin class-name">cd</span> /data/immich |
5.2 编辑docker-compose.yaml文件
编辑docker-compose.yaml文件,内容如下。同时,也可以自定义修改文件中的映射端口等环境变量。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<span class="token punctuation">---</span> <span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token string">"2.1"</span> <span class="token key atrule">services</span><span class="token punctuation">:</span> <span class="token key atrule">immich</span><span class="token punctuation">:</span> <span class="token key atrule">image</span><span class="token punctuation">:</span> ghcr.io/imagegenius/immich<span class="token punctuation">:</span>latest <span class="token key atrule">container_name</span><span class="token punctuation">:</span> immich <span class="token key atrule">environment</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> PUID=0 <span class="token punctuation">-</span> PGID=0 <span class="token punctuation">-</span> TZ=Asia/Shanghai <span class="token punctuation">-</span> DB_HOSTNAME=postgres14 <span class="token punctuation">-</span> DB_USERNAME=postgres <span class="token punctuation">-</span> DB_PASSWORD=postgres <span class="token punctuation">-</span> DB_DATABASE_NAME=immich <span class="token punctuation">-</span> REDIS_HOSTNAME=redis <span class="token punctuation">-</span> DISABLE_MACHINE_LEANRNING=false <span class="token punctuation">-</span> DISABLE_TYPESENSE=false <span class="token punctuation">-</span> DB_PORT=5432 <span class="token punctuation">-</span> REDIS_PORT=6379 <span class="token punctuation">-</span> REDIS_PASSWORD= <span class="token punctuation">-</span> CUDA_ACCELERATION=false <span class="token key atrule">volumes</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> /data/immich/config<span class="token punctuation">:</span>/config <span class="token punctuation">-</span> /data/immich/photos<span class="token punctuation">:</span>/photos <span class="token punctuation">-</span> /data/immich/machine<span class="token punctuation">:</span>/config/machine<span class="token punctuation">-</span>learning <span class="token key atrule">ports</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> 8080<span class="token punctuation">:</span><span class="token number">8080</span> <span class="token key atrule">restart</span><span class="token punctuation">:</span> unless<span class="token punctuation">-</span>stopped <span class="token key atrule">redis</span><span class="token punctuation">:</span> <span class="token key atrule">image</span><span class="token punctuation">:</span> redis <span class="token key atrule">ports</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> 6379<span class="token punctuation">:</span><span class="token number">6379</span> <span class="token key atrule">container_name</span><span class="token punctuation">:</span> redis <span class="token key atrule">postgres14</span><span class="token punctuation">:</span> <span class="token key atrule">image</span><span class="token punctuation">:</span> postgres<span class="token punctuation">:</span><span class="token number">14</span> <span class="token key atrule">ports</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> 8432<span class="token punctuation">:</span><span class="token number">5432</span> <span class="token key atrule">container_name</span><span class="token punctuation">:</span> postgres14 <span class="token key atrule">environment</span><span class="token punctuation">:</span> <span class="token key atrule">POSTGRES_USER</span><span class="token punctuation">:</span> postgres <span class="token key atrule">POSTGRES_PASSWORD</span><span class="token punctuation">:</span> postgres <span class="token key atrule">POSTGRES_DB</span><span class="token punctuation">:</span> immich <span class="token key atrule">volumes</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> /data/immich/db<span class="token punctuation">:</span>/var/lib/postgresql/data |
5.3 创建immich相关容器
- 使用docker-compose.yaml文件创建immich相关容器
1 2 3 4 5 6 |
<span class="token punctuation">[</span>root@jeven immich<span class="token punctuation">]</span><span class="token comment"># docker compose up -d</span> <span class="token punctuation">[</span>+<span class="token punctuation">]</span> Running <span class="token number">4</span>/4 ⠿ Network immich_default Created <span class="token number">0</span>.0s ⠿ Container immich Started <span class="token number">0</span>.7s ⠿ Container redis Started <span class="token number">0</span>.7s ⠿ Container postgres14 Started <span class="token number">0</span>.7s |
5.4 检查immich容器状态
检查immich容器状态,确保容器正常启动。
1 2 3 4 5 |
<span class="token punctuation">[</span>root@jeven immich<span class="token punctuation">]</span><span class="token comment"># docker compose ps</span> NAME COMMAND SERVICE STATUS PORTS immich <span class="token string">"/init"</span> immich running <span class="token number">0.0</span>.0.0:8080-<span class="token operator">></span><span class="token number">8080</span>/tcp, :::8080-<span class="token operator">></span><span class="token number">8080</span>/tcp postgres14 <span class="token string">"docker-entrypoint.s…"</span> postgres14 running <span class="token number">0.0</span>.0.0:8432-<span class="token operator">></span><span class="token number">5432</span>/tcp, :::8432-<span class="token operator">></span><span class="token number">5432</span>/tcp redis <span class="token string">"docker-entrypoint.s…"</span> redis running <span class="token number">0.0</span>.0.0:6379-<span class="token operator">></span><span class="token number">6379</span>/tcp, :::6379-<span class="token operator">></span><span class="token number">6379</span>/tcp |
5.5 检查immich容器日志
检查immich容器运行日志,确保immich服务正常运行。
1 |
<span class="token function">docker</span> compose logs |

六、访问immich服务
6.1 注册账号
访问地址:http://192.168.3.166:8080/,将IP更换为自己服务器的IP地址。如果无法访问,注意防火墙和安全组设置问题。

点击“Getting Started”,进入账号注册页面,自定义填写即可。

6.2 访问immich首页
填写设置的登录账号和密码,访问immich首页。


七、immich的基本使用
7.1 上传图片
点击上传选项,上传本地图片。

7.2 浏览图片
点击图片管理,可以看到刚上传的图片。

7.3 创建相册
在相册管理页面,点击创建相册。

输入相册名称,选择相册内的相片。

7.4 查看相册
在相册管理页面,可以看到相册列表。

7.5 查看统计数据
点击administrator,进入系统设置页面,选择“Server status”,可以看到相关统计信息。

八、总结
作为一款开源的照片管理系统,immich提供了简单的部署和漂亮的界面,以及快速的图片加载速度。它还拥有许多强大的功能,值得逐一去体验。如果你需要一个照片管理系统,不妨尝试一下immich。