Merge remote-tracking branch 'origin/custom' into custom

This commit is contained in:
新疆萌森软件开发工作室 2024-12-06 11:27:52 +08:00
commit 8014ce984d
15 changed files with 532 additions and 0 deletions

View File

@ -0,0 +1,42 @@
# Redis 服务 (前置检查) [必填]
PANEL_REDIS_TYPE=redis
# 数据持久化路径 [必填]
IMMICH_ROOT_PATH=/home/immich-app
# WebUI 端口 [必填]
PANEL_APP_PORT_HTTP=2283
# 数据库连接密码 [必填]
DB_PASSWORD=
# 数据库 端口 [必填]
PANEL_APP_PORT_DB=5432
# 数据库 主机地址 [必填]
DB_HOSTNAME=immich-pg14-vectors
# 数据库 用户名 [必填]
DB_USERNAME=postgres
# 数据库 名称 [必填]
DB_DATABASE_NAME=immich
# Redis 主机 [必填]
REDIS_HOSTNAME=127.0.0.1
# Redis 端口 [必填]
REDIS_PORT=6379
# Redis 索引 [必填]
REDIS_DBINDEX=0
# Redis 用户名
REDIS_USERNAME=
# Redis 密码
REDIS_PASSWORD=
# 是否跳过目录检查
IMMICH_IGNORE_MOUNT_CHECK_ERRORS=false

View File

@ -0,0 +1,117 @@
additionalProperties:
formFields:
- child:
default: ""
envKey: PANEL_REDIS_SERVICE
required: true
type: service
default: redis
envKey: PANEL_REDIS_TYPE
labelZh: Redis 服务 (前置检查)
labelEn: Redis Service (Pre-check)
required: true
type: apps
values:
- label: Redis
value: redis
- default: "/home/immich-app"
edit: true
envKey: IMMICH_ROOT_PATH
labelZh: 数据持久化路径
labelEn: Data persistence path
required: true
type: text
- default: 2283
edit: true
envKey: PANEL_APP_PORT_HTTP
labelZh: WebUI 端口
labelEn: WebUI port
required: true
rule: paramPort
type: number
- default: ""
edit: true
envKey: DB_PASSWORD
labelEn: Database Password
labelZh: 数据库连接密码
random: true
required: true
rule: paramComplexity
type: password
- default: 5432
edit: true
envKey: PANEL_APP_PORT_DB
labelZh: 数据库 端口
labelEn: Database Port
required: true
rule: paramPort
type: number
- default: "immich-pg14-vectors"
disabled: true
envKey: DB_HOSTNAME
labelZh: 数据库 主机地址
labelEn: Database Host
required: true
type: text
- default: "postgres"
disabled: true
envKey: DB_USERNAME
labelZh: 数据库 用户名
labelEn: Database User
required: true
type: text
- default: "immich"
disabled: true
envKey: DB_DATABASE_NAME
labelZh: 数据库 名称
labelEn: Database Name
required: true
type: text
- default: "127.0.0.1"
edit: true
envKey: REDIS_HOSTNAME
labelZh: Redis 主机
labelEn: Redis Host
required: true
type: text
- default: 6379
edit: true
envKey: REDIS_PORT
labelZh: Redis 端口
labelEn: Redis Port
required: true
rule: paramPort
type: number
- default: 0
edit: true
envKey: REDIS_DBINDEX
labelZh: Redis 索引
labelEn: Redis Index
required: true
type: number
- default: ""
edit: true
envKey: REDIS_USERNAME
labelZh: Redis 用户名
labelEn: Redis Username
required: false
type: text
- default: ""
edit: true
envKey: REDIS_PASSWORD
labelZh: Redis 密码
labelEn: Redis Password
required: false
type: password
- default: "false"
edit: true
envKey: IMMICH_IGNORE_MOUNT_CHECK_ERRORS
labelZh: 是否跳过目录检查
labelEn: Skip Mount Check
required: false
type: select
values:
- label: 跳过检查
value: "true"
- label: 不跳过检查
value: "false"

View File

@ -0,0 +1,67 @@
name: immich
networks:
1panel-network:
external: true
services:
immich-pg14-vectors:
command:
- postgres
- -c
- shared_preload_libraries=vectors.so
- -c
- search_path="$$user", public, vectors
- -c
- logging_collector=on
- -c
- max_wal_size=2GB
- -c
- shared_buffers=512MB
- -c
- wal_compression=on
container_name: pg14-vectors-immich-no-machine
environment:
POSTGRES_DB: ${DB_DATABASE_NAME:-immich}
POSTGRES_INITDB_ARGS: --data-checksums
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME:-postgres}
healthcheck:
interval: 5m
start_interval: 30s
start_period: 5m
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}'
|| exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}'
--tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures),
0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [
"$$Chksum" = '0' ] || exit 1
image: tensorchord/pgvecto-rs:pg14-v0.2.0
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_DB:-5432}:5432
restart: always
volumes:
- ${IMMICH_ROOT_PATH}/pg14/data:/var/lib/postgresql/data
immich-server:
container_name: immich-server-immich-no-machine
depends_on:
- immich-pg14-vectors
devices:
- /dev/dri:/dev/dri
env_file:
- ./envs/global.env
- .env
healthcheck:
disable: false
image: ghcr.io/immich-app/immich-server:v1.122.0
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_HTTP}:2283
restart: always
volumes:
- ${IMMICH_ROOT_PATH}/data/library:/usr/src/app/upload
- /etc/localtime:/etc/localtime

View File

@ -0,0 +1,2 @@
# copyright© 2024 XinJiang Ms Studio
ENV_FILE=.env

View File

@ -0,0 +1,2 @@
# copyright© 2024 XinJiang Ms Studio
TZ=Asia/Shanghai

View File

@ -0,0 +1,17 @@
#!/bin/bash
if [ -f .env ]; then
source .env
# setup-1 add default values
CURRENT_DIR=$(pwd)
sed -i '/^ENV_FILE=/d' .env
sed -i '/^GLOBAL_ENV_FILE=/d' .env
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
echo "Check Finish."
else
echo "Error: .env file not found."
fi

View File

@ -0,0 +1,10 @@
#!/bin/bash
if [ -f .env ]; then
source .env
echo "Check Finish."
else
echo "Error: .env file not found."
fi

View File

@ -0,0 +1,17 @@
#!/bin/bash
if [ -f .env ]; then
source .env
# setup-1 add default values
CURRENT_DIR=$(pwd)
sed -i '/^ENV_FILE=/d' .env
sed -i '/^GLOBAL_ENV_FILE=/d' .env
echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
echo "Check Finish."
else
echo "Error: .env file not found."
fi

View File

@ -0,0 +1,129 @@
# Immich
Immich - 高性能自托管照片和视频备份解决方案
![Immich](https://file.lifebus.top/imgs/immich_cover.png)
![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue)
## 简介
> 该版本无 `机器学习` 模块,适用于不具备硬件条件的用户。
>
> 您将无法使用 `机器学习` 功能,如 `CLIP``人脸识别` 等功能。
>
> 如果您需要 `机器学习` 模块,可通过配置远端 `机器学习` 服务来使用。
欢迎您
您好,很高兴您能来到这里。
我叫亚历克斯。我在学校时是一名电气工程师,后来因为工作和对解决问题的纯粹热爱而成为了一名软件工程师。
我们和新生儿躺在床上,我妻子说:"我们开始积累大量宝宝的照片和视频,我不想再为 App-Which-Must-Not-Be-Name
付费了。你总是想为我建一些东西,为什么不为我建一个能做到这一点的应用程序呢?
就这样,这个想法开始在我脑海中萌生。之后,我开始在自助托管领域寻找具有类似备份功能和 "非命名应用程序 "
性能水平的现有解决方案。我发现目前的解决方案主要集中在画廊类型的应用程序上。然而,我想要的是一个简单易用的备份工具,并带有一个能高效查看照片和视频的本地移动应用程序。于是,我作为一名如饥似渴的工程师踏上了寻找之旅。
另一个促使我执行 "不可名状的应用程序 "替代方案的动机是,我希望能为开源社区做出贡献,多年来我从这个社区中受益匪浅。
我很荣幸能与大家分享这一作品,它重视隐私、回忆,以及在易用、友好的界面中回顾这些时刻的喜悦。
如果您喜欢这款应用程序,或者它在某些方面对您有帮助,请考虑支持这个项目。这将有助于我继续开发和维护应用程序。
## 环境准备
+ `Redis` 服务
Immich 使用 Redis 作为缓存服务,所以需要安装 Redis 服务。
### 硬件驱动挂载
默认仅挂载: `/dev/dri`,如果您的设备不存在硬件驱动,请使用删除完整 `devices` 配置。
可以通过 `ls /dev/` 查看存在的设备驱动。
```yml
devices:
- /dev/dri:/dev/dri
# - /dev/nvidia0:/dev/nvidia0
# - /dev/nvidiactl:/dev/nvidiactl
# - /dev/nvidia-modeset:/dev/nvidia-modeset
# - /dev/nvidia-nvswitchctl:/dev/nvidia-nvswitchctl
# - /dev/nvidia-uvm:/dev/nvidia-uvm
# - /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools
# - /dev/video11:/dev/video11
```
如果您的设备存在其他硬件驱动,可以选择挂载。删除 `# ` 号即可。格式为:`宿主机路径:容器路径`
格式请与 `- /dev/dri:/dev/dri` 保持一致。
## 升级说明
+ **大版本** `v1.106.2`
`2024/06/12` 上线,升级需要注意:
1. 移除 `immich-microservices` 服务
2. 环境变量发生了合并
3. 底层API发生了变化
4. 移动端需要同步更新
## 安装说明
### 机器学习 预加载模型(CLIP)
可选模型列表,粘贴时输入 `immich-app/` 之后的内容即可。
[immich-app's Collections - CLIP](https://huggingface.co/collections/immich-app/clip-654eaefb077425890874cd07)
[immich-app's Collections - Multilingual CLIP](https://huggingface.co/collections/immich-app/multilingual-clip-654eb08c2382f591eeb8c2a7)
默认模型
中文支持较好的模型 `XLM-Roberta-Large-Vit-B-16Plus`
### 人脸识别 预加载模型
`buffalo_l`, `buffalo_m`, `buffalo_s`, `antelopev2`
## 常见问题
+ 安装失败
+ 网络问题,可以尝试使用代理
+ 升级失败
+ 请查看升级说明
+ 请查看日志,查看具体错误信息
+ 记录安装参数,进行卸载重装
+ 升级1Panel后,提示容器找不到
+ 请删除容器,重新安装
+ 提示文件或目录不存在
+ 可手动创建不存在的文件和目录,然后重试
+ 创建的文件可为空文件
+ 每次都升级失败
+ 很抱歉,官方应用不支持编排式应用(一个应用包含多个容器)的安装与升级,您可以尝试手动卸载安装最新版
+ 无法访问
+ 请检查是否安装了 `Redis` 服务
+ 请检查是否正确配置了 `Redis` 服务
+ 请检查是否正确配置了 `域名``SSL`
+ 请检查是否正确配置了 `端口`
+ 请检查是否正确配置了 `防火墙` 并开放了 `端口`
+ 请检查是否正确配置了 `Nginx` 服务
## 移动端应用
<div style="text-align: center; display: flex; justify-content: center; gap: 20px;">
<div style="display: flex; flex-direction: column; align-items: center;">
<img src="https://file.lifebus.top/imgs/immich_app_store_qr.png" alt="App Store" style="width: 256px;">
<a href="https://apps.apple.com/sg/app/immich/id1613945652" style="text-align: center;">App Store</a>
</div>
<div style="display: flex; flex-direction: column; align-items: center;">
<img src="https://file.lifebus.top/imgs/immich_google_play_qr.png" alt="Google Play" style="width: 256px;">
<a href="https://play.google.com/store/apps/details?id=app.alextran.immich" style="text-align: center;">Google Play</a>
</div>
</div>
---
![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png)

View File

@ -0,0 +1,16 @@
additionalProperties:
key: immich-no-machine
name: Immich (无机器学习)
tags:
- WebSite
- Media
- Storage
- Local
shortDescZh: 高性能自托管照片和视频备份解决方案
shortDescEn: High performance self-hosted photo and video backup solution
type: website
crossVersionUpdate: true
limit: 0
website: https://immich.app/
github: https://github.com/immich-app/immich/
document: https://immich.app/docs/overview/introduction/

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -0,0 +1,42 @@
# Redis 服务 (前置检查) [必填]
PANEL_REDIS_TYPE=redis
# 数据持久化路径 [必填]
IMMICH_ROOT_PATH=/home/immich-app
# WebUI 端口 [必填]
PANEL_APP_PORT_HTTP=2283
# 数据库连接密码 [必填]
DB_PASSWORD=
# 数据库 端口 [必填]
PANEL_APP_PORT_DB=5432
# 数据库 主机地址 [必填]
DB_HOSTNAME=immich-pg14-vectors
# 数据库 用户名 [必填]
DB_USERNAME=postgres
# 数据库 名称 [必填]
DB_DATABASE_NAME=immich
# Redis 主机 [必填]
REDIS_HOSTNAME=127.0.0.1
# Redis 端口 [必填]
REDIS_PORT=6379
# Redis 索引 [必填]
REDIS_DBINDEX=0
# Redis 用户名
REDIS_USERNAME=
# Redis 密码
REDIS_PASSWORD=
# 是否跳过目录检查
IMMICH_IGNORE_MOUNT_CHECK_ERRORS=false

View File

@ -0,0 +1,67 @@
name: immich
networks:
1panel-network:
external: true
services:
immich-pg14-vectors:
command:
- postgres
- -c
- shared_preload_libraries=vectors.so
- -c
- search_path="$$user", public, vectors
- -c
- logging_collector=on
- -c
- max_wal_size=2GB
- -c
- shared_buffers=512MB
- -c
- wal_compression=on
container_name: pg14-vectors-immich-no-machine
environment:
POSTGRES_DB: ${DB_DATABASE_NAME:-immich}
POSTGRES_INITDB_ARGS: --data-checksums
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME:-postgres}
healthcheck:
interval: 5m
start_interval: 30s
start_period: 5m
test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}'
|| exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}'
--tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures),
0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [
"$$Chksum" = '0' ] || exit 1
image: tensorchord/pgvecto-rs:pg14-v0.2.0
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_DB:-5432}:5432
restart: always
volumes:
- ${IMMICH_ROOT_PATH}/pg14/data:/var/lib/postgresql/data
immich-server:
container_name: immich-server-immich-no-machine
depends_on:
- immich-pg14-vectors
devices:
- /dev/dri:/dev/dri
env_file:
- ./envs/global.env
- .env
healthcheck:
disable: false
image: ghcr.io/immich-app/immich-server:v1.122.0
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${PANEL_APP_PORT_HTTP}:2283
restart: always
volumes:
- ${IMMICH_ROOT_PATH}/data/library:/usr/src/app/upload
- /etc/localtime:/etc/localtime

View File

@ -0,0 +1,2 @@
# copyright© 2024 XinJiang Ms Studio
ENV_FILE=.env

View File

@ -0,0 +1,2 @@
# copyright© 2024 XinJiang Ms Studio
TZ=Asia/Shanghai