Docker部署immich照片管理系统

AI摘要:本文介绍了使用Docker部署immich照片管理系统的过程,包括配置PostgreSQL数据库、编辑docker-compose文件、部署immich服务、配置外部图库和机器学习模型,以及移动端配置。

Powered by AISummary.

前言

  immich官网给你的compose文件需要拉取以下4个镜像:

ghcr.io/immich-app/immich-server(immich服务端)

ghcr.io/immich-app/immich-machine-learning(机器学习用于人脸识别)

docker.io/valkey/valkey:8-bookworm(redis)

ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0(数据库)

  还要配置 .env 文件,但是玩nas这么长时间了,大部分人已经部署了redis和PostgreSQL数据库了,所以我这个教程是直接调用现有redis和PostgreSQL,不需要配置‘.env’文件,只用一个镜像(包括机器学习)来部署immich,全网仅此一家。

一、immich简介

  Immich 是一款基于 Web 的应用程序,通过云存储为用户提供安全的个人档案库。它允许用户创建时间轴,将照片、文字、音频和其他多媒体文件按日期和事件分类,形成一个完整的个人历史记录。此外,用户还可以设定访问权限,与家人或朋友共享特定的内容。

技术分析

  • 前端框架: Immich 使用现代前端框架 React 构建,提供高效且响应式的用户体验。
  • 后端服务: 基于 Node.js 和 Express 框架,提供了稳定可靠的服务器端处理能力。
  • 数据库: 利用 MongoDB 进行数据存储,支持非结构化数据和高扩展性。
  • 身份验证: 集成了 Auth0 提供的安全身份验证服务,确保用户数据安全。
  • API 设计: 使用 RESTful API 设计原则,易于与其他系统集成。
  • 云存储: 集成 Google Cloud Storage,为用户提供可靠的云存储解决方案。

功能用途

  • 个人记忆管理: 创建时间线,将照片、视频等媒体按照日期和事件归档。
  • 隐私保护: 可设置不同级别的访问权限,控制谁可以看到你的内容。
  • 家庭共享: 分享家庭活动,让亲人共同回顾美好的时光。
  • 教育工具: 老师可以使用 Immich 存储学生作品,方便教学回顾和评估。
  • 项目文档: 在团队项目中记录进度,保存成果,便于后期查阅。

特点

  • 开源免费: 开发者可以在 GitHub 上查看并参与到项目中,贡献自己的力量。
  • 跨平台: 作为Web应用,Immich可在任何设备和操作系统上运行。
  • 可自托管: 对于有需求的用户,可以选择自行部署,保证数据完全掌控。
  • 直观易用: 用户界面设计简洁,易于上手。

二、部署过程(linux系统通用)

本教程没有使用官方镜像,介意请绕道!!!

Immich 的硬件和软件要求:

  • 操作系统:推荐使用 Linux 或 *nix 操作系统(Ubuntu、Debian 等)。
  • 非 Linux 操作系统的 Docker 体验通常较差,因此强烈建议不要使用,请提前安装好docker和docker-compose。
  • Immich 在完整的虚拟机中运行良好,在虚拟化环境中运行良好。不建议在 LXC 容器中使用 Docker ,但高级用户或许可以。

    • RAM:最低 4GB,建议 6GB。
    • CPU:最低2核,建议4核。
    • 存储:推荐使用与 Unix 兼容的文件系统(EXT4、ZFS、APFS 等),支持用户/组所有权和权限。
    • 缩略图和转码视频的生成平均可以使照片库的大小增加 10-20%。

1.配置PostgreSQL数据库

  • 创建名为immich的数据库文件
    登录你的PostgreSQL数据库,输入如下命令:
CREATE DATABASE immich
  ENCODING = 'UTF8'
  LC_COLLATE = 'en_US.UTF-8'
  LC_CTYPE = 'en_US.UTF-8';
  • 配置immich数据库相关扩展

输入如下命令查看PostgreSQL是否安装了相关扩展

sudo -u root psql -c "SELECT * FROM pg_available_extensions WHERE name IN ('plpgsql', 'vector', 'postgis', 'uuid-ossp', 'unaccent', 'cube', 'earthdistance', 'pg_trgm');"

如果输出中 installed_version 为空,则需安装缺失的扩展:

# Ubuntu/Debian 示例
sudo apt-get update
sudo apt-get install postgresql-contrib postgis postgresql-vector #缺哪个就安哪个

为immich启用相关扩展,输入以下命令进入immich数据库

sudo psql -U <用户名> -d immich

在数据库会话中运行以下 SQL 命令:

# 确保扩展开启(IF NOT EXISTS 避免重复创建)
CREATE EXTENSION IF NOT EXISTS plpgsql;       -- 通常默认已启用
CREATE EXTENSION IF NOT EXISTS vector;
CREATE EXTENSION IF NOT EXISTS postgis;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";   -- 注意双引号(含连字符)
CREATE EXTENSION IF NOT EXISTS unaccent;
CREATE EXTENSION IF NOT EXISTS cube;
CREATE EXTENSION IF NOT EXISTS earthdistance; -- 依赖 cube,但会自动处理
CREATE EXTENSION IF NOT EXISTS pg_trgm;

2.部署immich服务

准备目录

分别手动创建如下目录(可自行修改):

/home/docker/immich/config  #immich的配置文件目录,用于存放机器学习的模型文件
/home/docker/immich/photos  #准备映射给immich的照片目录
/home/照片                   #准备映射给immich的外部图库目录,也就是说这个目录存放的是你现有的照片

编辑compose文件

终端输入nano /home/docker/immich/docker-compose.yaml,将如下代码复制粘贴。

version: '3.8'  

services:
  immich:
    image: ghcr.io/imagegenius/immich:latest  #用这个镜像就不需要再单独设置机器学习服务了
    container_name: immich
   
    environment:
      - PUID=1000  # 替换为实际用户ID,可在终端输入`id`查询
      - PGID=1000  # 替换为实际用户ID,可在终端输入`id`查询
      - TZ=Asia/Shanghai
      
      # 数据库配置
      - DB_HOSTNAME=192.168.8.9 #修改为你的数据库地址
      - DB_USERNAME=root        #数据库用户名
      - DB_PASSWORD=12345678    #数据库密码
      - DB_DATABASE_NAME=immich #数据库名称
      - DB_PORT=5432            #数据库访问端口
      

      # redis配置
      - REDIS_HOSTNAME=192.168.8.8  #修改为你的redis地址
      - REDIS_PORT=6379             #redis访问端口
      - REDIS_PASSWORD=123456       #redis访问密码,如果没有密码请删除此行

      - DEBUG=*
      - NODE_ENV=development


      ## 机器学习部分
      - MACHINE_LEARNING_GPU_ACCELERATION= #默认
      - MACHINE_LEARNING_HOST=0.0.0.0 #默认
      - MACHINE_LEARNING_PORT=3003 #确保3003端口没有被占用
      - MACHINE_LEARNING_WORKERS=1 #默认
      - MACHINE_LEARNING_WORKER_TIMEOUT=120 #默认

      # 添加连接池配置
      - DB_POOL_MIN=1
      - DB_POOL_MAX=10
      - DB_POOL_CONNECTION_TIMEOUT=60000
      
    devices:
      - /dev/dri:/dev/dri #英特尔硬件加速,根据实际情况启用
      
    volumes:
      - ./config:/config
      - /home/docker/immich/photos:/photos
      - /home/照片:/extlib
    ports:
      - "8080:8080"  # 主机端口:容器内部端口,左边端口可根据实际情况修改
    
    restart: unless-stopped
    networks:
      - immich-net

# 创建专用网络
networks:
  immich-net:
    driver: bridge

终端输入cd /home/docker/immich docker compose up -d 到此项目部署完毕!

三、配置外部图库

此时访问设备8080端口即可登录immich,输入邮箱和密码创建一个账号并登录。

按如下步骤创建外部图库

四、 配置机器学习

安装lfs并创建目录

1.安装lfs

sudo apt install git-lfs

2.创建目录

终端进入/home/docker/immich/config/machine-learning/models目录,没有就自行创建,而后分别创建名字为clipfacial-recognition的目录,前者用户存放智能搜索模型,后者用于存放人脸识别模型。

cd /home/docker/immich/config/machine-learning/models
mkdir clip facial-recognition

拉取智能识别模型

进入clip目录

cd clip

执行如下命令:

git clone https://huggingface.co/immich-app/XLM-Roberta-Large-Vit-B-16Plus
cd XLM-Roberta-Large-Vit-B-16Plus
git lfs pull

模型比较大,耐性等待下载完成即可。

拉取人脸识别模型

进入facial-recognition目录

cd /home/docker/immich/config/machine-learning/models/facial-recognition

执行如下命令:

git clone https://huggingface.co/immich-app/buffalo_l
cd buffalo_l
git lfs pull

耐性等待下载完成即可。

配置模型

进入设置界面,把智能搜索和人脸识别模型的名字手动输入一下就可以了。

五、配置移动端

下载

Google Play 商店

苹果应用商店

F-Droid

GitHub 发布 (apk)

登录并使用

使用服务器端点 URL 登录移动应用程序http://:8080/api,如需公网使用 请自行配置域名解析和反向代理。

单击屏幕右上角的云图标导航到备份屏幕。

打赏
评论区
头像
文章目录

本站已运行: