License: MIT Star on Github Android Build iOS Build Build Status

Immich

高性能自托管照片和视频备份解决方案。

正在加载 ~4000 张图片/视频

屏幕截图

移动端

Web

笔记

!! 未准备好用于生产!请勿用于存储您的资产!!

该项目正在大力开发中,将不断进行功能、特性和 API 的更改。

功能

移动端 Web
上传和查看视频和照片
打开应用时自动备份 不适用
选择性备份相册 不适用
将照片和视频下载到本地设备
多用户支持
相册
共享相册
通过可拖动滚动条快速导航
支持 RAW (HEIC, HEIF, DNG, Apple ProRaw)
元数据视图 (EXIF, 地图)
按元数据、对象和图像标签搜索
管理功能 (用户管理) 不适用

系统要求

操作系统:首选类Unix操作系统(Ubuntu, Debian, MacOS…等)。

内存:至少2GB,首选4GB。

核心:至少2个核心,首选4个核心。

入门

您可以使用docker compose进行开发和测试应用程序,Immich由多个服务组成

  1. NestJs – 应用程序后端
  2. SvelteKit – 应用程序Web前端
  3. PostgreSQL – 应用程序主数据库
  4. Redis – 用于共享Docker实例之间的WebSocket实例和后台任务消息队列。
  5. Nginx – 负载均衡和优化文件上传。
  6. TensorFlow – 对象检测 (COCO SSD) 和图像分类 (ImageNet)。

步骤1:填充 .env 文件

导航到docker目录并运行

cp .env.example .env

然后在此处填充值。

请注意,如果将ENABLE_MAPBOX设置为true,您将需要提供MAPBOX_KEY才能运行服务器。

请注意UPLOAD_LOCATION键,此目录必须存在,并且由运行以下docker-compose命令的用户拥有。

示例

###################################################################################
# Database
###################################################################################
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immich

###################################################################################
# Upload File Config
###################################################################################
UPLOAD_LOCATION=<put-the-path-of-the-upload-folder-here>

###################################################################################
# JWT SECRET
###################################################################################
JWT_SECRET=randomstringthatissolongandpowerfulthatnoonecanguess

###################################################################################
# MAPBOX
####################################################################################
# ENABLE_MAPBOX is either true of false -> if true, you have to provide MAPBOX_KEY
ENABLE_MAPBOX=false
MAPBOX_KEY=

###################################################################################
# WEB
###################################################################################
# This is the URL of your vm/server where you host Immich, so that the web frontend
# know where can it make the request to.
# For example: If your server IP address is 10.1.11.50, the environment variable will
# be VITE_SERVER_ENDPOINT=http://10.1.11.50:2283/api
VITE_SERVER_ENDPOINT=http://192.168.1.216:2283/api

步骤2:启动服务器

启动,请运行

docker-compose -f ./docker/docker-compose.yml up 

要使用最新镜像更新docker-compose(如果您之前已启动docker-compose)

docker-compose -f ./docker/docker-compose.yml pull && docker-compose -f ./docker/docker-compose.yml up

服务器将在http://your-ip:2283/api上运行

步骤3:注册用户

http://your-ip:2283访问Web界面以注册管理员帐户。

服务器上的其他帐户可以由管理员帐户创建。

步骤4:运行移动应用

使用您的服务器地址登录移动应用

F-Droid

您可以通过点击下方图片在F-droid上获取该应用。

Get it on F-Droid

Android

在此处 获取Google Play商店的应用

由于审核流程,应用版本可能滞后于最新发布。

iOS

在此处 获取Apple AppStore的应用

由于审核流程,应用版本可能滞后于最新发布。

开发

可以通过在项目根目录下运行以下命令来启动开发环境,前提是已填充.env文件:

make dev # required Makefile installed on the system.

所有服务器和Web容器都支持热重载,以实现快速反馈循环。

开发人员须知

1 – OpenAPI

OpenAPI用于生成客户端(Typescript, Dart)SDK。openapi-generator-cli可以在这里安装。当您添加新端点或修改现有端点时,必须运行以下生成命令来更新客户端SDK。

npm run api:generate # Run from server directory

您可以在web/src/api中找到生成的客户端SDK(用于Typescript SDK),在mobile/openapi中找到(用于Dart SDK)。

支持

如果您喜欢该应用,觉得它很有用,并想支持我以抵消发布到AppStores的成本,您可以通过Github赞助来赞助该项目,或者通过下面的Buy Me a coffee链接进行一次性捐赠。

"Buy Me A Coffee"

这也是给我继续开发该应用动力和鼓励的意义重大的方式。

干杯!?

已知问题

TensorFlow构建问题

这是Promox设置不正确的已知问题

TensorFlow无法在旧CPU架构上运行,它需要支持AVX和AVX2指令集的CPU。如果您在运行上述docker-compose命令时遇到illegal instruction core dump错误,请使用该命令检查您的CPU标志,并确保您看到了AVXAVX2

more /proc/cpuinfo | grep flags

如果您在Promox中运行虚拟化,VM没有启用该标志。

您需要在VM的硬件选项卡下将CPU类型从kvm64更改为host

硬件 > 处理器 > 编辑 > 高级 > 类型(下拉菜单)> host

GitHub

查看 Github