diff --git a/appstore/immich-no-machine/1.122.0/.env b/appstore/immich-no-machine/1.122.0/.env new file mode 100644 index 00000000..da1ba0f5 --- /dev/null +++ b/appstore/immich-no-machine/1.122.0/.env @@ -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 + diff --git a/appstore/immich-no-machine/1.122.0/data.yml b/appstore/immich-no-machine/1.122.0/data.yml new file mode 100644 index 00000000..093e32b1 --- /dev/null +++ b/appstore/immich-no-machine/1.122.0/data.yml @@ -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" diff --git a/appstore/immich-no-machine/1.122.0/docker-compose.yml b/appstore/immich-no-machine/1.122.0/docker-compose.yml new file mode 100644 index 00000000..cf81d652 --- /dev/null +++ b/appstore/immich-no-machine/1.122.0/docker-compose.yml @@ -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 diff --git a/appstore/immich-no-machine/1.122.0/envs/default.env b/appstore/immich-no-machine/1.122.0/envs/default.env new file mode 100644 index 00000000..cd05f46e --- /dev/null +++ b/appstore/immich-no-machine/1.122.0/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/appstore/immich-no-machine/1.122.0/envs/global.env b/appstore/immich-no-machine/1.122.0/envs/global.env new file mode 100644 index 00000000..e10989fe --- /dev/null +++ b/appstore/immich-no-machine/1.122.0/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/appstore/immich-no-machine/1.122.0/scripts/init.sh b/appstore/immich-no-machine/1.122.0/scripts/init.sh new file mode 100644 index 00000000..07fb8c3f --- /dev/null +++ b/appstore/immich-no-machine/1.122.0/scripts/init.sh @@ -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 diff --git a/appstore/immich-no-machine/1.122.0/scripts/uninstall.sh b/appstore/immich-no-machine/1.122.0/scripts/uninstall.sh new file mode 100644 index 00000000..c86c4fbc --- /dev/null +++ b/appstore/immich-no-machine/1.122.0/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/appstore/immich-no-machine/1.122.0/scripts/upgrade.sh b/appstore/immich-no-machine/1.122.0/scripts/upgrade.sh new file mode 100644 index 00000000..07fb8c3f --- /dev/null +++ b/appstore/immich-no-machine/1.122.0/scripts/upgrade.sh @@ -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 diff --git a/appstore/immich-no-machine/README.md b/appstore/immich-no-machine/README.md new file mode 100644 index 00000000..6c48c680 --- /dev/null +++ b/appstore/immich-no-machine/README.md @@ -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` 服务 + +## 移动端应用 + +
+
+ App Store + App Store +
+
+ Google Play + Google Play +
+
+ +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/appstore/immich-no-machine/data.yml b/appstore/immich-no-machine/data.yml new file mode 100644 index 00000000..65d883be --- /dev/null +++ b/appstore/immich-no-machine/data.yml @@ -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/ diff --git a/appstore/immich-no-machine/logo.png b/appstore/immich-no-machine/logo.png new file mode 100644 index 00000000..081f92e4 Binary files /dev/null and b/appstore/immich-no-machine/logo.png differ diff --git a/dockge/immich-no-machine/.env b/dockge/immich-no-machine/.env new file mode 100644 index 00000000..da1ba0f5 --- /dev/null +++ b/dockge/immich-no-machine/.env @@ -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 + diff --git a/dockge/immich-no-machine/docker-compose.yml b/dockge/immich-no-machine/docker-compose.yml new file mode 100644 index 00000000..cf81d652 --- /dev/null +++ b/dockge/immich-no-machine/docker-compose.yml @@ -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 diff --git a/dockge/immich-no-machine/envs/default.env b/dockge/immich-no-machine/envs/default.env new file mode 100644 index 00000000..cd05f46e --- /dev/null +++ b/dockge/immich-no-machine/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/dockge/immich-no-machine/envs/global.env b/dockge/immich-no-machine/envs/global.env new file mode 100644 index 00000000..e10989fe --- /dev/null +++ b/dockge/immich-no-machine/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai