From a8517d5b922a885b8cbff74ced67fe1f550e3338 Mon Sep 17 00:00:00 2001 From: QYG2297248353 Date: Thu, 22 May 2025 05:47:52 +0000 Subject: [PATCH] Synced apps from source repository via GitHub Actions --- apps/bili-fetcher/README.md | 43 +++++ apps/bili-fetcher/data.yml | 14 ++ apps/bili-fetcher/latest/.env | 6 + apps/bili-fetcher/latest/data.yml | 17 ++ apps/bili-fetcher/latest/docker-compose.yml | 40 +++++ .../latest}/envs/default.env | 0 .../latest}/envs/global.env | 0 .../latest}/scripts/init.sh | 0 .../latest}/scripts/uninstall.sh | 0 .../latest}/scripts/upgrade.sh | 0 apps/bili-fetcher/logo.png | Bin 0 -> 79622 bytes apps/dpanel-lite/{1.6.4 => 1.7.0}/.env | 0 apps/dpanel-lite/{1.6.4 => 1.7.0}/data.yml | 0 .../{1.6.4 => 1.7.0}/docker-compose.yml | 2 +- .../1.7.0}/envs/default.env | 0 .../1.7.0}/envs/global.env | 0 .../1.7.0}/scripts/init.sh | 0 .../1.7.0}/scripts/uninstall.sh | 0 .../1.7.0}/scripts/upgrade.sh | 0 apps/dpanel/{1.6.4 => 1.7.0}/.env | 0 apps/dpanel/{1.6.4 => 1.7.0}/data.yml | 0 .../{1.6.4 => 1.7.0}/docker-compose.yml | 2 +- .../1.131.2 => dpanel/1.7.0}/envs/default.env | 0 .../1.131.2 => dpanel/1.7.0}/envs/global.env | 0 .../1.131.2 => dpanel/1.7.0}/scripts/init.sh | 0 .../1.7.0}/scripts/uninstall.sh | 0 .../1.7.0}/scripts/upgrade.sh | 0 .../{1.131.2 => 1.132.3}/.env | 0 .../{1.131.2 => 1.132.3}/data.yml | 0 .../{1.131.2 => 1.132.3}/docker-compose.yml | 2 +- .../1.132.3}/envs/default.env | 0 .../1.132.3}/envs/global.env | 0 .../1.132.3}/scripts/init.sh | 0 .../1.132.3}/scripts/uninstall.sh | 0 .../1.132.3}/scripts/upgrade.sh | 0 apps/immich-machine-learning/1.133.0/.env | 21 +++ apps/immich-machine-learning/1.133.0/data.yml | 61 +++++++ .../1.133.0/docker-compose.yml | 22 +++ .../1.133.0/envs/default.env | 2 + .../1.133.0/envs/global.env | 2 + .../1.133.0/scripts/init.sh | 17 ++ .../1.133.0/scripts/uninstall.sh | 10 ++ .../1.133.0/scripts/upgrade.sh | 17 ++ apps/immich-no-machine/1.133.0/.env | 42 +++++ apps/immich-no-machine/1.133.0/data.yml | 117 +++++++++++++ .../1.133.0/docker-compose.yml | 42 +++++ .../1.133.0/envs/default.env | 2 + .../immich-no-machine/1.133.0/envs/global.env | 2 + .../immich-no-machine/1.133.0/scripts/init.sh | 17 ++ .../1.133.0/scripts/uninstall.sh | 10 ++ .../1.133.0/scripts/upgrade.sh | 17 ++ apps/immich-server/1.133.0/.env | 48 ++++++ apps/immich-server/1.133.0/data.yml | 138 ++++++++++++++++ apps/immich-server/1.133.0/docker-compose.yml | 23 +++ apps/immich-server/1.133.0/envs/default.env | 2 + apps/immich-server/1.133.0/envs/global.env | 2 + apps/immich-server/1.133.0/scripts/init.sh | 17 ++ .../1.133.0/scripts/uninstall.sh | 10 ++ apps/immich-server/1.133.0/scripts/upgrade.sh | 17 ++ apps/immich/{1.131.2 => 1.132.3}/.env | 0 apps/immich/{1.131.2 => 1.132.3}/data.yml | 0 .../{1.131.2 => 1.132.3}/docker-compose.yml | 2 +- apps/immich/1.132.3/envs/default.env | 2 + apps/immich/1.132.3/envs/global.env | 2 + apps/immich/1.132.3/scripts/init.sh | 17 ++ apps/immich/1.132.3/scripts/uninstall.sh | 10 ++ apps/immich/1.132.3/scripts/upgrade.sh | 17 ++ apps/immich/1.133.0/.env | 54 ++++++ apps/immich/1.133.0/data.yml | 156 ++++++++++++++++++ apps/immich/1.133.0/docker-compose.yml | 58 +++++++ apps/immich/1.133.0/envs/default.env | 2 + apps/immich/1.133.0/envs/global.env | 2 + apps/immich/1.133.0/scripts/init.sh | 17 ++ apps/immich/1.133.0/scripts/uninstall.sh | 10 ++ apps/immich/1.133.0/scripts/upgrade.sh | 17 ++ 75 files changed, 1146 insertions(+), 4 deletions(-) create mode 100644 apps/bili-fetcher/README.md create mode 100644 apps/bili-fetcher/data.yml create mode 100644 apps/bili-fetcher/latest/.env create mode 100644 apps/bili-fetcher/latest/data.yml create mode 100644 apps/bili-fetcher/latest/docker-compose.yml rename apps/{dpanel-lite/1.6.4 => bili-fetcher/latest}/envs/default.env (100%) rename apps/{dpanel-lite/1.6.4 => bili-fetcher/latest}/envs/global.env (100%) rename apps/{dpanel-lite/1.6.4 => bili-fetcher/latest}/scripts/init.sh (100%) rename apps/{dpanel-lite/1.6.4 => bili-fetcher/latest}/scripts/uninstall.sh (100%) rename apps/{dpanel-lite/1.6.4 => bili-fetcher/latest}/scripts/upgrade.sh (100%) create mode 100644 apps/bili-fetcher/logo.png rename apps/dpanel-lite/{1.6.4 => 1.7.0}/.env (100%) rename apps/dpanel-lite/{1.6.4 => 1.7.0}/data.yml (100%) rename apps/dpanel-lite/{1.6.4 => 1.7.0}/docker-compose.yml (93%) rename apps/{dpanel/1.6.4 => dpanel-lite/1.7.0}/envs/default.env (100%) rename apps/{dpanel/1.6.4 => dpanel-lite/1.7.0}/envs/global.env (100%) rename apps/{dpanel/1.6.4 => dpanel-lite/1.7.0}/scripts/init.sh (100%) rename apps/{dpanel/1.6.4 => dpanel-lite/1.7.0}/scripts/uninstall.sh (100%) rename apps/{dpanel/1.6.4 => dpanel-lite/1.7.0}/scripts/upgrade.sh (100%) rename apps/dpanel/{1.6.4 => 1.7.0}/.env (100%) rename apps/dpanel/{1.6.4 => 1.7.0}/data.yml (100%) rename apps/dpanel/{1.6.4 => 1.7.0}/docker-compose.yml (94%) rename apps/{immich-machine-learning/1.131.2 => dpanel/1.7.0}/envs/default.env (100%) rename apps/{immich-machine-learning/1.131.2 => dpanel/1.7.0}/envs/global.env (100%) rename apps/{immich-machine-learning/1.131.2 => dpanel/1.7.0}/scripts/init.sh (100%) rename apps/{immich-machine-learning/1.131.2 => dpanel/1.7.0}/scripts/uninstall.sh (100%) rename apps/{immich-machine-learning/1.131.2 => dpanel/1.7.0}/scripts/upgrade.sh (100%) rename apps/immich-machine-learning/{1.131.2 => 1.132.3}/.env (100%) rename apps/immich-machine-learning/{1.131.2 => 1.132.3}/data.yml (100%) rename apps/immich-machine-learning/{1.131.2 => 1.132.3}/docker-compose.yml (87%) rename apps/{immich/1.131.2 => immich-machine-learning/1.132.3}/envs/default.env (100%) rename apps/{immich/1.131.2 => immich-machine-learning/1.132.3}/envs/global.env (100%) rename apps/{immich/1.131.2 => immich-machine-learning/1.132.3}/scripts/init.sh (100%) rename apps/{immich/1.131.2 => immich-machine-learning/1.132.3}/scripts/uninstall.sh (100%) rename apps/{immich/1.131.2 => immich-machine-learning/1.132.3}/scripts/upgrade.sh (100%) create mode 100644 apps/immich-machine-learning/1.133.0/.env create mode 100644 apps/immich-machine-learning/1.133.0/data.yml create mode 100644 apps/immich-machine-learning/1.133.0/docker-compose.yml create mode 100644 apps/immich-machine-learning/1.133.0/envs/default.env create mode 100644 apps/immich-machine-learning/1.133.0/envs/global.env create mode 100644 apps/immich-machine-learning/1.133.0/scripts/init.sh create mode 100644 apps/immich-machine-learning/1.133.0/scripts/uninstall.sh create mode 100644 apps/immich-machine-learning/1.133.0/scripts/upgrade.sh create mode 100644 apps/immich-no-machine/1.133.0/.env create mode 100644 apps/immich-no-machine/1.133.0/data.yml create mode 100644 apps/immich-no-machine/1.133.0/docker-compose.yml create mode 100644 apps/immich-no-machine/1.133.0/envs/default.env create mode 100644 apps/immich-no-machine/1.133.0/envs/global.env create mode 100644 apps/immich-no-machine/1.133.0/scripts/init.sh create mode 100644 apps/immich-no-machine/1.133.0/scripts/uninstall.sh create mode 100644 apps/immich-no-machine/1.133.0/scripts/upgrade.sh create mode 100644 apps/immich-server/1.133.0/.env create mode 100644 apps/immich-server/1.133.0/data.yml create mode 100644 apps/immich-server/1.133.0/docker-compose.yml create mode 100644 apps/immich-server/1.133.0/envs/default.env create mode 100644 apps/immich-server/1.133.0/envs/global.env create mode 100644 apps/immich-server/1.133.0/scripts/init.sh create mode 100644 apps/immich-server/1.133.0/scripts/uninstall.sh create mode 100644 apps/immich-server/1.133.0/scripts/upgrade.sh rename apps/immich/{1.131.2 => 1.132.3}/.env (100%) rename apps/immich/{1.131.2 => 1.132.3}/data.yml (100%) rename apps/immich/{1.131.2 => 1.132.3}/docker-compose.yml (97%) create mode 100644 apps/immich/1.132.3/envs/default.env create mode 100644 apps/immich/1.132.3/envs/global.env create mode 100644 apps/immich/1.132.3/scripts/init.sh create mode 100644 apps/immich/1.132.3/scripts/uninstall.sh create mode 100644 apps/immich/1.132.3/scripts/upgrade.sh create mode 100644 apps/immich/1.133.0/.env create mode 100644 apps/immich/1.133.0/data.yml create mode 100644 apps/immich/1.133.0/docker-compose.yml create mode 100644 apps/immich/1.133.0/envs/default.env create mode 100644 apps/immich/1.133.0/envs/global.env create mode 100644 apps/immich/1.133.0/scripts/init.sh create mode 100644 apps/immich/1.133.0/scripts/uninstall.sh create mode 100644 apps/immich/1.133.0/scripts/upgrade.sh diff --git a/apps/bili-fetcher/README.md b/apps/bili-fetcher/README.md new file mode 100644 index 0000000..5f10ca7 --- /dev/null +++ b/apps/bili-fetcher/README.md @@ -0,0 +1,43 @@ +# BiliFetcher + +B站历史记录 + +![BiliFetcher](https://file.lifebus.top/imgs/bili_fetcher_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) + +## 简介 + +获取B站历史记录 + +批量下载视频 + +一键下载用户投稿视频 + +收藏夹所有视频 + +生成详细的年度总结 + +自动化任务 + +## 特性 + +![BiliFetcher](https://file.lifebus.top/imgs/bili_fetcher_img1.png) + +![BiliFetcher](https://file.lifebus.top/imgs/bili_fetcher_img2.png) + +![BiliFetcher](https://file.lifebus.top/imgs/bili_fetcher_img3.png) + +![BiliFetcher](https://file.lifebus.top/imgs/bili_fetcher_img4.png) + +![BiliFetcher](https://file.lifebus.top/imgs/bili_fetcher_img5.png) + +![BiliFetcher](https://file.lifebus.top/imgs/bili_fetcher_img6.png) + +![BiliFetcher](https://file.lifebus.top/imgs/bili_fetcher_img7.png) + +![BiliFetcher](https://file.lifebus.top/imgs/bili_fetcher_img8.png) + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/bili-fetcher/data.yml b/apps/bili-fetcher/data.yml new file mode 100644 index 0000000..6750233 --- /dev/null +++ b/apps/bili-fetcher/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: bili-fetcher + name: BiliFetcher + tags: + - WebSite + - Local + shortDescZh: B站历史记录 + shortDescEn: Bilibili History Fetcher + type: website + crossVersionUpdate: true + limit: 0 + website: https://github.com/2977094657/BilibiliHistoryFetcher/ + github: https://github.com/2977094657/BilibiliHistoryFetcher/ + document: https://github.com/2977094657/BilibiliHistoryFetcher/ diff --git a/apps/bili-fetcher/latest/.env b/apps/bili-fetcher/latest/.env new file mode 100644 index 0000000..5343aca --- /dev/null +++ b/apps/bili-fetcher/latest/.env @@ -0,0 +1,6 @@ +# 数据持久化路径 [必填] +BILI_FETCHER_ROOT_PATH=/home/bili-fetcher + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=8080 + diff --git a/apps/bili-fetcher/latest/data.yml b/apps/bili-fetcher/latest/data.yml new file mode 100644 index 0000000..3233ebf --- /dev/null +++ b/apps/bili-fetcher/latest/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: "/home/bili-fetcher" + edit: true + envKey: BILI_FETCHER_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 8080 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number diff --git a/apps/bili-fetcher/latest/docker-compose.yml b/apps/bili-fetcher/latest/docker-compose.yml new file mode 100644 index 0000000..5054707 --- /dev/null +++ b/apps/bili-fetcher/latest/docker-compose.yml @@ -0,0 +1,40 @@ +networks: + 1panel-network: + external: true +services: + bili-fetcher-api: + build: + context: https://github.com/2977094657/BilibiliHistoryFetcher.git + dockerfile: docker/Dockerfile.cpu + container_name: api-bili-fetcher + env_file: + - ./envs/global.env + - .env + environment: + - TZ=Asia/Shanghai + - DOCKER_ENV=true + image: bilibili-api:latest + networks: + - 1panel-network + restart: always + volumes: + - ${BILI_FETCHER_ROOT_PATH}/config:/app/config + - ${BILI_FETCHER_ROOT_PATH}/output:/app/output + bili-fetcher-web: + build: + context: https://github.com/2977094657/BiliHistoryFrontend.git + dockerfile: Dockerfile + container_name: bili-fetcher + depends_on: + - bili-fetcher-api + environment: + - BACKEND_URL=http://bili-fetcher-api:8899 + - TZ=Asia/Shanghai + image: bilibili-frontend:latest + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:80 + restart: always diff --git a/apps/dpanel-lite/1.6.4/envs/default.env b/apps/bili-fetcher/latest/envs/default.env similarity index 100% rename from apps/dpanel-lite/1.6.4/envs/default.env rename to apps/bili-fetcher/latest/envs/default.env diff --git a/apps/dpanel-lite/1.6.4/envs/global.env b/apps/bili-fetcher/latest/envs/global.env similarity index 100% rename from apps/dpanel-lite/1.6.4/envs/global.env rename to apps/bili-fetcher/latest/envs/global.env diff --git a/apps/dpanel-lite/1.6.4/scripts/init.sh b/apps/bili-fetcher/latest/scripts/init.sh similarity index 100% rename from apps/dpanel-lite/1.6.4/scripts/init.sh rename to apps/bili-fetcher/latest/scripts/init.sh diff --git a/apps/dpanel-lite/1.6.4/scripts/uninstall.sh b/apps/bili-fetcher/latest/scripts/uninstall.sh similarity index 100% rename from apps/dpanel-lite/1.6.4/scripts/uninstall.sh rename to apps/bili-fetcher/latest/scripts/uninstall.sh diff --git a/apps/dpanel-lite/1.6.4/scripts/upgrade.sh b/apps/bili-fetcher/latest/scripts/upgrade.sh similarity index 100% rename from apps/dpanel-lite/1.6.4/scripts/upgrade.sh rename to apps/bili-fetcher/latest/scripts/upgrade.sh diff --git a/apps/bili-fetcher/logo.png b/apps/bili-fetcher/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..631dc978ab0a6d41c8fe88c17fe58c99dadc3683 GIT binary patch literal 79622 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

aQ=i3U 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 Z{{v2hAR}(=P!9kA002ovPDHLkV1hJ{VHf}a literal 0 KcmV+b0RR6000031 diff --git a/apps/dpanel-lite/1.6.4/.env b/apps/dpanel-lite/1.7.0/.env similarity index 100% rename from apps/dpanel-lite/1.6.4/.env rename to apps/dpanel-lite/1.7.0/.env diff --git a/apps/dpanel-lite/1.6.4/data.yml b/apps/dpanel-lite/1.7.0/data.yml similarity index 100% rename from apps/dpanel-lite/1.6.4/data.yml rename to apps/dpanel-lite/1.7.0/data.yml diff --git a/apps/dpanel-lite/1.6.4/docker-compose.yml b/apps/dpanel-lite/1.7.0/docker-compose.yml similarity index 93% rename from apps/dpanel-lite/1.6.4/docker-compose.yml rename to apps/dpanel-lite/1.7.0/docker-compose.yml index 203e95c..59260c1 100644 --- a/apps/dpanel-lite/1.6.4/docker-compose.yml +++ b/apps/dpanel-lite/1.7.0/docker-compose.yml @@ -10,7 +10,7 @@ services: environment: - APP_NAME=${CONTAINER_NAME} - HTTPS_PROXY=${HTTP_PROXY} - image: dpanel/dpanel:1.6.4-lite + image: dpanel/dpanel:1.7.0-lite labels: createdBy: Apps networks: diff --git a/apps/dpanel/1.6.4/envs/default.env b/apps/dpanel-lite/1.7.0/envs/default.env similarity index 100% rename from apps/dpanel/1.6.4/envs/default.env rename to apps/dpanel-lite/1.7.0/envs/default.env diff --git a/apps/dpanel/1.6.4/envs/global.env b/apps/dpanel-lite/1.7.0/envs/global.env similarity index 100% rename from apps/dpanel/1.6.4/envs/global.env rename to apps/dpanel-lite/1.7.0/envs/global.env diff --git a/apps/dpanel/1.6.4/scripts/init.sh b/apps/dpanel-lite/1.7.0/scripts/init.sh similarity index 100% rename from apps/dpanel/1.6.4/scripts/init.sh rename to apps/dpanel-lite/1.7.0/scripts/init.sh diff --git a/apps/dpanel/1.6.4/scripts/uninstall.sh b/apps/dpanel-lite/1.7.0/scripts/uninstall.sh similarity index 100% rename from apps/dpanel/1.6.4/scripts/uninstall.sh rename to apps/dpanel-lite/1.7.0/scripts/uninstall.sh diff --git a/apps/dpanel/1.6.4/scripts/upgrade.sh b/apps/dpanel-lite/1.7.0/scripts/upgrade.sh similarity index 100% rename from apps/dpanel/1.6.4/scripts/upgrade.sh rename to apps/dpanel-lite/1.7.0/scripts/upgrade.sh diff --git a/apps/dpanel/1.6.4/.env b/apps/dpanel/1.7.0/.env similarity index 100% rename from apps/dpanel/1.6.4/.env rename to apps/dpanel/1.7.0/.env diff --git a/apps/dpanel/1.6.4/data.yml b/apps/dpanel/1.7.0/data.yml similarity index 100% rename from apps/dpanel/1.6.4/data.yml rename to apps/dpanel/1.7.0/data.yml diff --git a/apps/dpanel/1.6.4/docker-compose.yml b/apps/dpanel/1.7.0/docker-compose.yml similarity index 94% rename from apps/dpanel/1.6.4/docker-compose.yml rename to apps/dpanel/1.7.0/docker-compose.yml index f73ab6d..5999807 100644 --- a/apps/dpanel/1.6.4/docker-compose.yml +++ b/apps/dpanel/1.7.0/docker-compose.yml @@ -10,7 +10,7 @@ services: environment: - APP_NAME=${CONTAINER_NAME} - HTTPS_PROXY=${HTTP_PROXY} - image: dpanel/dpanel:1.6.4 + image: dpanel/dpanel:1.7.0 labels: createdBy: Apps networks: diff --git a/apps/immich-machine-learning/1.131.2/envs/default.env b/apps/dpanel/1.7.0/envs/default.env similarity index 100% rename from apps/immich-machine-learning/1.131.2/envs/default.env rename to apps/dpanel/1.7.0/envs/default.env diff --git a/apps/immich-machine-learning/1.131.2/envs/global.env b/apps/dpanel/1.7.0/envs/global.env similarity index 100% rename from apps/immich-machine-learning/1.131.2/envs/global.env rename to apps/dpanel/1.7.0/envs/global.env diff --git a/apps/immich-machine-learning/1.131.2/scripts/init.sh b/apps/dpanel/1.7.0/scripts/init.sh similarity index 100% rename from apps/immich-machine-learning/1.131.2/scripts/init.sh rename to apps/dpanel/1.7.0/scripts/init.sh diff --git a/apps/immich-machine-learning/1.131.2/scripts/uninstall.sh b/apps/dpanel/1.7.0/scripts/uninstall.sh similarity index 100% rename from apps/immich-machine-learning/1.131.2/scripts/uninstall.sh rename to apps/dpanel/1.7.0/scripts/uninstall.sh diff --git a/apps/immich-machine-learning/1.131.2/scripts/upgrade.sh b/apps/dpanel/1.7.0/scripts/upgrade.sh similarity index 100% rename from apps/immich-machine-learning/1.131.2/scripts/upgrade.sh rename to apps/dpanel/1.7.0/scripts/upgrade.sh diff --git a/apps/immich-machine-learning/1.131.2/.env b/apps/immich-machine-learning/1.132.3/.env similarity index 100% rename from apps/immich-machine-learning/1.131.2/.env rename to apps/immich-machine-learning/1.132.3/.env diff --git a/apps/immich-machine-learning/1.131.2/data.yml b/apps/immich-machine-learning/1.132.3/data.yml similarity index 100% rename from apps/immich-machine-learning/1.131.2/data.yml rename to apps/immich-machine-learning/1.132.3/data.yml diff --git a/apps/immich-machine-learning/1.131.2/docker-compose.yml b/apps/immich-machine-learning/1.132.3/docker-compose.yml similarity index 87% rename from apps/immich-machine-learning/1.131.2/docker-compose.yml rename to apps/immich-machine-learning/1.132.3/docker-compose.yml index cbb6736..0c0530f 100644 --- a/apps/immich-machine-learning/1.131.2/docker-compose.yml +++ b/apps/immich-machine-learning/1.132.3/docker-compose.yml @@ -10,7 +10,7 @@ services: env_file: - ./envs/global.env - .env - image: ghcr.io/immich-app/immich-machine-learning:v1.131.2 + image: ghcr.io/immich-app/immich-machine-learning:v1.132.3 labels: createdBy: Apps networks: diff --git a/apps/immich/1.131.2/envs/default.env b/apps/immich-machine-learning/1.132.3/envs/default.env similarity index 100% rename from apps/immich/1.131.2/envs/default.env rename to apps/immich-machine-learning/1.132.3/envs/default.env diff --git a/apps/immich/1.131.2/envs/global.env b/apps/immich-machine-learning/1.132.3/envs/global.env similarity index 100% rename from apps/immich/1.131.2/envs/global.env rename to apps/immich-machine-learning/1.132.3/envs/global.env diff --git a/apps/immich/1.131.2/scripts/init.sh b/apps/immich-machine-learning/1.132.3/scripts/init.sh similarity index 100% rename from apps/immich/1.131.2/scripts/init.sh rename to apps/immich-machine-learning/1.132.3/scripts/init.sh diff --git a/apps/immich/1.131.2/scripts/uninstall.sh b/apps/immich-machine-learning/1.132.3/scripts/uninstall.sh similarity index 100% rename from apps/immich/1.131.2/scripts/uninstall.sh rename to apps/immich-machine-learning/1.132.3/scripts/uninstall.sh diff --git a/apps/immich/1.131.2/scripts/upgrade.sh b/apps/immich-machine-learning/1.132.3/scripts/upgrade.sh similarity index 100% rename from apps/immich/1.131.2/scripts/upgrade.sh rename to apps/immich-machine-learning/1.132.3/scripts/upgrade.sh diff --git a/apps/immich-machine-learning/1.133.0/.env b/apps/immich-machine-learning/1.133.0/.env new file mode 100644 index 0000000..91116ad --- /dev/null +++ b/apps/immich-machine-learning/1.133.0/.env @@ -0,0 +1,21 @@ +# 数据持久化路径 [必填] +IMMICH_ROOT_PATH=/home/immich-machine-learning + +# API 端口 [必填] +PANEL_APP_PORT_HTTP=2283 + +# 硬件驱动路径 [必填] +IMMICH_DRIVE_PATH=/dev/dri + +# 时区 [必填] +TZ=Asia/Shanghai + +# 机器学习 预加载模型 +MACHINE_LEARNING_PRELOAD__CLIP=XLM-Roberta-Large-Vit-B-16Plus + +# 人脸识别 预加载模型 +MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION=buffalo_l + +# Hugging Face 服务地址 +HF_ENDPOINT=https://hf-mirror.com + diff --git a/apps/immich-machine-learning/1.133.0/data.yml b/apps/immich-machine-learning/1.133.0/data.yml new file mode 100644 index 0000000..7321cde --- /dev/null +++ b/apps/immich-machine-learning/1.133.0/data.yml @@ -0,0 +1,61 @@ +additionalProperties: + formFields: + - default: "/home/immich-machine-learning" + 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: API 端口 + labelEn: API port + required: true + rule: paramPort + type: number + - default: "/dev/dri" + edit: true + envKey: IMMICH_DRIVE_PATH + labelZh: 硬件驱动路径 + labelEn: Drive path + required: true + type: text + - default: "Asia/Shanghai" + edit: true + envKey: TZ + labelZh: 时区 + labelEn: Timezone + required: true + type: text + - default: "XLM-Roberta-Large-Vit-B-16Plus" + edit: true + envKey: MACHINE_LEARNING_PRELOAD__CLIP + labelEn: Machine Learning Preload Model + labelZh: 机器学习 预加载模型 + required: false + type: text + - default: "buffalo_l" + edit: true + envKey: MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION + labelEn: Machine Learning Preload Model + labelZh: 人脸识别 预加载模型 + required: false + type: select + values: + - label: antelopev2 + value: "antelopev2" + - label: buffalo_l + value: "buffalo_l" + - label: buffalo_m + value: "buffalo_m" + - label: buffalo_s + value: "buffalo_s" + - default: "https://hf-mirror.com" + edit: true + envKey: HF_ENDPOINT + labelZh: Hugging Face 服务地址 + labelEn: Hugging Face Endpoint + required: false + type: text diff --git a/apps/immich-machine-learning/1.133.0/docker-compose.yml b/apps/immich-machine-learning/1.133.0/docker-compose.yml new file mode 100644 index 0000000..5563916 --- /dev/null +++ b/apps/immich-machine-learning/1.133.0/docker-compose.yml @@ -0,0 +1,22 @@ +name: immich-machine-learning +networks: + 1panel-network: + external: true +services: + immich-machine-learning: + container_name: immich-machine-learning-immich-machine-learning + devices: + - /dev/dri:/dev/dri + env_file: + - ./envs/global.env + - .env + image: ghcr.io/immich-app/immich-machine-learning:v1.133.0 + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3003 + restart: always + volumes: + - ${IMMICH_ROOT_PATH}/data/cache:/cache diff --git a/apps/immich-machine-learning/1.133.0/envs/default.env b/apps/immich-machine-learning/1.133.0/envs/default.env new file mode 100644 index 0000000..cd05f46 --- /dev/null +++ b/apps/immich-machine-learning/1.133.0/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/immich-machine-learning/1.133.0/envs/global.env b/apps/immich-machine-learning/1.133.0/envs/global.env new file mode 100644 index 0000000..e10989f --- /dev/null +++ b/apps/immich-machine-learning/1.133.0/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/immich-machine-learning/1.133.0/scripts/init.sh b/apps/immich-machine-learning/1.133.0/scripts/init.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/immich-machine-learning/1.133.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/apps/immich-machine-learning/1.133.0/scripts/uninstall.sh b/apps/immich-machine-learning/1.133.0/scripts/uninstall.sh new file mode 100644 index 0000000..c86c4fb --- /dev/null +++ b/apps/immich-machine-learning/1.133.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/apps/immich-machine-learning/1.133.0/scripts/upgrade.sh b/apps/immich-machine-learning/1.133.0/scripts/upgrade.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/immich-machine-learning/1.133.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/apps/immich-no-machine/1.133.0/.env b/apps/immich-no-machine/1.133.0/.env new file mode 100644 index 0000000..da1ba0f --- /dev/null +++ b/apps/immich-no-machine/1.133.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/apps/immich-no-machine/1.133.0/data.yml b/apps/immich-no-machine/1.133.0/data.yml new file mode 100644 index 0000000..093e32b --- /dev/null +++ b/apps/immich-no-machine/1.133.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/apps/immich-no-machine/1.133.0/docker-compose.yml b/apps/immich-no-machine/1.133.0/docker-compose.yml new file mode 100644 index 0000000..27a353e --- /dev/null +++ b/apps/immich-no-machine/1.133.0/docker-compose.yml @@ -0,0 +1,42 @@ +name: immich +networks: + 1panel-network: + external: true +services: + immich-pg14-vectors: + 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} + image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.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 + image: ghcr.io/immich-app/immich-server:v1.133.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/apps/immich-no-machine/1.133.0/envs/default.env b/apps/immich-no-machine/1.133.0/envs/default.env new file mode 100644 index 0000000..cd05f46 --- /dev/null +++ b/apps/immich-no-machine/1.133.0/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/immich-no-machine/1.133.0/envs/global.env b/apps/immich-no-machine/1.133.0/envs/global.env new file mode 100644 index 0000000..e10989f --- /dev/null +++ b/apps/immich-no-machine/1.133.0/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/immich-no-machine/1.133.0/scripts/init.sh b/apps/immich-no-machine/1.133.0/scripts/init.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/immich-no-machine/1.133.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/apps/immich-no-machine/1.133.0/scripts/uninstall.sh b/apps/immich-no-machine/1.133.0/scripts/uninstall.sh new file mode 100644 index 0000000..c86c4fb --- /dev/null +++ b/apps/immich-no-machine/1.133.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/apps/immich-no-machine/1.133.0/scripts/upgrade.sh b/apps/immich-no-machine/1.133.0/scripts/upgrade.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/immich-no-machine/1.133.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/apps/immich-server/1.133.0/.env b/apps/immich-server/1.133.0/.env new file mode 100644 index 0000000..27aea55 --- /dev/null +++ b/apps/immich-server/1.133.0/.env @@ -0,0 +1,48 @@ +# Redis 服务 (前置检查) [必填] +PANEL_REDIS_TYPE=redis + +# Postgres 服务 (前置检查) [必填] +PANEL_POSTGRES_TYPE=postgresql + +# 数据持久化路径 [必填] +IMMICH_ROOT_PATH=/home/immich-app + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=2283 + +# 时区 [必填] +TZ=Asia/Shanghai + +# 数据库 主机地址 [必填] +DB_HOSTNAME=127.0.0.1 + +# 数据库 端口 [必填] +DB_PORT=5432 + +# 数据库 用户名 [必填] +DB_USERNAME=postgres + +# 数据库 密码 [必填] +DB_PASSWORD= + +# 数据库 名称 [必填] +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/apps/immich-server/1.133.0/data.yml b/apps/immich-server/1.133.0/data.yml new file mode 100644 index 0000000..33b6235 --- /dev/null +++ b/apps/immich-server/1.133.0/data.yml @@ -0,0 +1,138 @@ +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 + - child: + default: "" + envKey: PANEL_POSTGRES_SERVICE + required: true + type: service + default: postgresql + envKey: PANEL_POSTGRES_TYPE + labelZh: Postgres 服务 (前置检查) + labelEn: Postgres Service (Pre-check) + required: true + type: apps + values: + - label: PostgreSQL + value: postgresql + - 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: "Asia/Shanghai" + edit: true + envKey: TZ + labelZh: 时区 + labelEn: Timezone + required: true + type: text + - default: "127.0.0.1" + edit: true + envKey: DB_HOSTNAME + labelZh: 数据库 主机地址 + labelEn: Database Host + required: true + type: text + - default: 5432 + edit: true + envKey: DB_PORT + labelZh: 数据库 端口 + labelEn: Database Port + required: true + rule: paramPort + type: number + - default: "postgres" + edit: true + envKey: DB_USERNAME + labelZh: 数据库 用户名 + labelEn: Database User + required: true + type: text + - default: "" + edit: true + envKey: DB_PASSWORD + labelZh: 数据库 密码 + labelEn: Database Password + random: true + required: true + rule: paramComplexity + type: password + - default: "immich" + edit: 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/apps/immich-server/1.133.0/docker-compose.yml b/apps/immich-server/1.133.0/docker-compose.yml new file mode 100644 index 0000000..39ac0b4 --- /dev/null +++ b/apps/immich-server/1.133.0/docker-compose.yml @@ -0,0 +1,23 @@ +name: immich-server +networks: + 1panel-network: + external: true +services: + immich-server: + container_name: immich-server-immich-server + devices: + - /dev/dri:/dev/dri + env_file: + - ./envs/global.env + - .env + image: ghcr.io/immich-app/immich-server:v1.133.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/apps/immich-server/1.133.0/envs/default.env b/apps/immich-server/1.133.0/envs/default.env new file mode 100644 index 0000000..cd05f46 --- /dev/null +++ b/apps/immich-server/1.133.0/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/immich-server/1.133.0/envs/global.env b/apps/immich-server/1.133.0/envs/global.env new file mode 100644 index 0000000..e10989f --- /dev/null +++ b/apps/immich-server/1.133.0/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/immich-server/1.133.0/scripts/init.sh b/apps/immich-server/1.133.0/scripts/init.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/immich-server/1.133.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/apps/immich-server/1.133.0/scripts/uninstall.sh b/apps/immich-server/1.133.0/scripts/uninstall.sh new file mode 100644 index 0000000..c86c4fb --- /dev/null +++ b/apps/immich-server/1.133.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/apps/immich-server/1.133.0/scripts/upgrade.sh b/apps/immich-server/1.133.0/scripts/upgrade.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/immich-server/1.133.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/apps/immich/1.131.2/.env b/apps/immich/1.132.3/.env similarity index 100% rename from apps/immich/1.131.2/.env rename to apps/immich/1.132.3/.env diff --git a/apps/immich/1.131.2/data.yml b/apps/immich/1.132.3/data.yml similarity index 100% rename from apps/immich/1.131.2/data.yml rename to apps/immich/1.132.3/data.yml diff --git a/apps/immich/1.131.2/docker-compose.yml b/apps/immich/1.132.3/docker-compose.yml similarity index 97% rename from apps/immich/1.131.2/docker-compose.yml rename to apps/immich/1.132.3/docker-compose.yml index f013bfa..44a2398 100644 --- a/apps/immich/1.131.2/docker-compose.yml +++ b/apps/immich/1.132.3/docker-compose.yml @@ -10,7 +10,7 @@ services: env_file: - ./envs/global.env - .env - image: ghcr.io/immich-app/immich-machine-learning:v1.131.2 + image: ghcr.io/immich-app/immich-machine-learning:v1.132.3 labels: createdBy: Apps networks: diff --git a/apps/immich/1.132.3/envs/default.env b/apps/immich/1.132.3/envs/default.env new file mode 100644 index 0000000..cd05f46 --- /dev/null +++ b/apps/immich/1.132.3/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/immich/1.132.3/envs/global.env b/apps/immich/1.132.3/envs/global.env new file mode 100644 index 0000000..e10989f --- /dev/null +++ b/apps/immich/1.132.3/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/immich/1.132.3/scripts/init.sh b/apps/immich/1.132.3/scripts/init.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/immich/1.132.3/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/apps/immich/1.132.3/scripts/uninstall.sh b/apps/immich/1.132.3/scripts/uninstall.sh new file mode 100644 index 0000000..c86c4fb --- /dev/null +++ b/apps/immich/1.132.3/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/apps/immich/1.132.3/scripts/upgrade.sh b/apps/immich/1.132.3/scripts/upgrade.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/immich/1.132.3/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/apps/immich/1.133.0/.env b/apps/immich/1.133.0/.env new file mode 100644 index 0000000..a4e4ae2 --- /dev/null +++ b/apps/immich/1.133.0/.env @@ -0,0 +1,54 @@ +# Redis 服务 (前置检查) [必填] +PANEL_REDIS_TYPE=redis + +# 数据持久化路径 [必填] +IMMICH_ROOT_PATH=/home/immich-app + +# WebUI 端口 [必填] +PANEL_APP_PORT_HTTP=2283 + +# 机器学习端口 [必填] +PANEL_APP_PORT_MACHINE_LEARNING=3003 + +# 数据库连接密码 [必填] +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= + +# 机器学习 预加载模型 +MACHINE_LEARNING_PRELOAD__CLIP=XLM-Roberta-Large-Vit-B-16Plus + +# 人脸识别 预加载模型 +MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION=buffalo_l + +# Hugging Face 服务地址 +HF_ENDPOINT=https://hf-mirror.com + +# 是否跳过目录检查 +IMMICH_IGNORE_MOUNT_CHECK_ERRORS=false + diff --git a/apps/immich/1.133.0/data.yml b/apps/immich/1.133.0/data.yml new file mode 100644 index 0000000..5dafe32 --- /dev/null +++ b/apps/immich/1.133.0/data.yml @@ -0,0 +1,156 @@ +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: 3003 + edit: true + envKey: PANEL_APP_PORT_MACHINE_LEARNING + labelZh: 机器学习端口 + labelEn: Machine Learning 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: "XLM-Roberta-Large-Vit-B-16Plus" + edit: true + envKey: MACHINE_LEARNING_PRELOAD__CLIP + labelEn: Machine Learning Preload Model + labelZh: 机器学习 预加载模型 + required: false + type: text + - default: "buffalo_l" + edit: true + envKey: MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION + labelEn: Machine Learning Preload Model + labelZh: 人脸识别 预加载模型 + required: false + type: select + values: + - label: antelopev2 + value: "antelopev2" + - label: buffalo_l + value: "buffalo_l" + - label: buffalo_m + value: "buffalo_m" + - label: buffalo_s + value: "buffalo_s" + - default: "https://hf-mirror.com" + edit: true + envKey: HF_ENDPOINT + labelZh: Hugging Face 服务地址 + labelEn: Hugging Face Endpoint + rule: paramExtUrl + required: false + type: text + - 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/apps/immich/1.133.0/docker-compose.yml b/apps/immich/1.133.0/docker-compose.yml new file mode 100644 index 0000000..d9313ba --- /dev/null +++ b/apps/immich/1.133.0/docker-compose.yml @@ -0,0 +1,58 @@ +name: immich +networks: + 1panel-network: + external: true +services: + immich-machine-learning: + container_name: immich-machine-learning-immich + devices: &id001 + - /dev/dri:/dev/dri + env_file: + - ./envs/global.env + - .env + image: ghcr.io/immich-app/immich-machine-learning:v1.133.0 + labels: + createdBy: Apps + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_MACHINE_LEARNING}:3003 + restart: always + volumes: + - ${IMMICH_ROOT_PATH}/data/cache:/cache + immich-pg14-vectors: + container_name: pg14-vectors-immich + environment: + POSTGRES_DB: ${DB_DATABASE_NAME:-immich} + POSTGRES_INITDB_ARGS: --data-checksums + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME:-postgres} + image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.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 + depends_on: + - immich-pg14-vectors + devices: *id001 + env_file: + - ./envs/global.env + - .env + image: ghcr.io/immich-app/immich-server:v1.133.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/apps/immich/1.133.0/envs/default.env b/apps/immich/1.133.0/envs/default.env new file mode 100644 index 0000000..cd05f46 --- /dev/null +++ b/apps/immich/1.133.0/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/immich/1.133.0/envs/global.env b/apps/immich/1.133.0/envs/global.env new file mode 100644 index 0000000..e10989f --- /dev/null +++ b/apps/immich/1.133.0/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/immich/1.133.0/scripts/init.sh b/apps/immich/1.133.0/scripts/init.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/immich/1.133.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/apps/immich/1.133.0/scripts/uninstall.sh b/apps/immich/1.133.0/scripts/uninstall.sh new file mode 100644 index 0000000..c86c4fb --- /dev/null +++ b/apps/immich/1.133.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/apps/immich/1.133.0/scripts/upgrade.sh b/apps/immich/1.133.0/scripts/upgrade.sh new file mode 100644 index 0000000..07fb8c3 --- /dev/null +++ b/apps/immich/1.133.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