From d5d3e3e3ea49609f7b36a541508ffa68bebe61e0 Mon Sep 17 00:00:00 2001 From: QYG2297248353 Date: Fri, 6 Dec 2024 02:55:35 +0000 Subject: [PATCH] Processed apps directory via GitHub Actions --- appstore/immich-no-machine/1.122.0/.env | 42 ++++++ appstore/immich-no-machine/1.122.0/data.yml | 117 ++++++++++++++++ .../1.122.0/docker-compose.yml | 67 +++++++++ .../1.122.0/envs/default.env | 2 + .../immich-no-machine/1.122.0/envs/global.env | 2 + .../immich-no-machine/1.122.0/scripts/init.sh | 17 +++ .../1.122.0/scripts/uninstall.sh | 10 ++ .../1.122.0/scripts/upgrade.sh | 17 +++ appstore/immich-no-machine/README.md | 129 ++++++++++++++++++ appstore/immich-no-machine/data.yml | 16 +++ appstore/immich-no-machine/logo.png | Bin 0 -> 14868 bytes dockge/immich-no-machine/.env | 42 ++++++ dockge/immich-no-machine/docker-compose.yml | 67 +++++++++ dockge/immich-no-machine/envs/default.env | 2 + dockge/immich-no-machine/envs/global.env | 2 + 15 files changed, 532 insertions(+) create mode 100644 appstore/immich-no-machine/1.122.0/.env create mode 100644 appstore/immich-no-machine/1.122.0/data.yml create mode 100644 appstore/immich-no-machine/1.122.0/docker-compose.yml create mode 100644 appstore/immich-no-machine/1.122.0/envs/default.env create mode 100644 appstore/immich-no-machine/1.122.0/envs/global.env create mode 100644 appstore/immich-no-machine/1.122.0/scripts/init.sh create mode 100644 appstore/immich-no-machine/1.122.0/scripts/uninstall.sh create mode 100644 appstore/immich-no-machine/1.122.0/scripts/upgrade.sh create mode 100644 appstore/immich-no-machine/README.md create mode 100644 appstore/immich-no-machine/data.yml create mode 100644 appstore/immich-no-machine/logo.png create mode 100644 dockge/immich-no-machine/.env create mode 100644 dockge/immich-no-machine/docker-compose.yml create mode 100644 dockge/immich-no-machine/envs/default.env create mode 100644 dockge/immich-no-machine/envs/global.env 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 000000000..da1ba0f59 --- /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 000000000..093e32b15 --- /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 000000000..cf81d6522 --- /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 000000000..cd05f46e6 --- /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 000000000..e10989fe4 --- /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 000000000..07fb8c3fe --- /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 000000000..c86c4fbca --- /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 000000000..07fb8c3fe --- /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 000000000..6c48c680a --- /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 000000000..65d883be7 --- /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 0000000000000000000000000000000000000000..081f92e449f3b4543123718778c1c69d42391d33 GIT binary patch literal 14868 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

T3J|2{ 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 literal 0 HcmV?d00001 diff --git a/dockge/immich-no-machine/.env b/dockge/immich-no-machine/.env new file mode 100644 index 000000000..da1ba0f59 --- /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 000000000..cf81d6522 --- /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 000000000..cd05f46e6 --- /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 000000000..e10989fe4 --- /dev/null +++ b/dockge/immich-no-machine/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai