Immich
高性能自托管照片和视频备份解决方案。
正在加载 ~4000 张图片/视频
屏幕截图
移动端
Web
笔记
!! 未准备好用于生产!请勿用于存储您的资产!!
该项目正在大力开发中,将不断进行功能、特性和 API 的更改。
功能
| 移动端 | Web | |
|---|---|---|
| 上传和查看视频和照片 | 是 | 是 |
| 打开应用时自动备份 | 是 | 不适用 |
| 选择性备份相册 | 是 | 不适用 |
| 将照片和视频下载到本地设备 | 是 | 是 |
| 多用户支持 | 是 | 是 |
| 相册 | 否 | 是 |
| 共享相册 | 是 | 是 |
| 通过可拖动滚动条快速导航 | 是 | 是 |
| 支持 RAW (HEIC, HEIF, DNG, Apple ProRaw) | 是 | 是 |
| 元数据视图 (EXIF, 地图) | 是 | 是 |
| 按元数据、对象和图像标签搜索 | 是 | 否 |
| 管理功能 (用户管理) | 不适用 | 是 |
系统要求
操作系统:首选类Unix操作系统(Ubuntu, Debian, MacOS…等)。
内存:至少2GB,首选4GB。
核心:至少2个核心,首选4个核心。
入门
您可以使用docker compose进行开发和测试应用程序,Immich由多个服务组成
- NestJs – 应用程序后端
- SvelteKit – 应用程序Web前端
- PostgreSQL – 应用程序主数据库
- Redis – 用于共享Docker实例之间的WebSocket实例和后台任务消息队列。
- Nginx – 负载均衡和优化文件上传。
- 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上获取该应用。
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链接进行一次性捐赠。
这也是给我继续开发该应用动力和鼓励的意义重大的方式。
干杯!?
已知问题
TensorFlow构建问题
这是Promox设置不正确的已知问题
TensorFlow无法在旧CPU架构上运行,它需要支持AVX和AVX2指令集的CPU。如果您在运行上述docker-compose命令时遇到illegal instruction core dump错误,请使用该命令检查您的CPU标志,并确保您看到了AVX和AVX2。
more /proc/cpuinfo | grep flags
如果您在Promox中运行虚拟化,VM没有启用该标志。
您需要在VM的硬件选项卡下将CPU类型从kvm64更改为host。
硬件 > 处理器 > 编辑 > 高级 > 类型(下拉菜单)> host

















