From 2995516cd816da665d97c1948149eab02feb7646 Mon Sep 17 00:00:00 2001 From: okxlin Date: Thu, 11 Jan 2024 12:12:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0immich=E5=88=B0=E5=88=97?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/immich/1.92.1/.env.sample | 9 ++ apps/immich/1.92.1/config.env | 18 ++++ apps/immich/1.92.1/data.yml | 56 ++++++++++++ apps/immich/1.92.1/docker-compose.yml | 85 ++++++++++++++++++ apps/immich/README.md | 115 +++++++++++++++++++++++++ apps/immich/data.yml | 20 +++++ apps/immich/logo.png | Bin 0 -> 6961 bytes apps/immich/release/.env.sample | 9 ++ apps/immich/release/config.env | 18 ++++ apps/immich/release/data.yml | 56 ++++++++++++ apps/immich/release/docker-compose.yml | 85 ++++++++++++++++++ 11 files changed, 471 insertions(+) create mode 100644 apps/immich/1.92.1/.env.sample create mode 100644 apps/immich/1.92.1/config.env create mode 100644 apps/immich/1.92.1/data.yml create mode 100644 apps/immich/1.92.1/docker-compose.yml create mode 100644 apps/immich/README.md create mode 100644 apps/immich/data.yml create mode 100644 apps/immich/logo.png create mode 100644 apps/immich/release/.env.sample create mode 100644 apps/immich/release/config.env create mode 100644 apps/immich/release/data.yml create mode 100644 apps/immich/release/docker-compose.yml diff --git a/apps/immich/1.92.1/.env.sample b/apps/immich/1.92.1/.env.sample new file mode 100644 index 00000000..c66d440c --- /dev/null +++ b/apps/immich/1.92.1/.env.sample @@ -0,0 +1,9 @@ + +CONTAINER_NAME="immich" +PANEL_APP_PORT_HTTP="40194" +PANEL_DB_NAME="immich" +PANEL_DB_USER="postgres" +PANEL_DB_USER_PASSWORD="immich_BfcHCZ" +UPLOAD_LOCATION="./data/upload" +CACHE_PATH="./data/cache" +DB_PATH="./data/data" \ No newline at end of file diff --git a/apps/immich/1.92.1/config.env b/apps/immich/1.92.1/config.env new file mode 100644 index 00000000..041d94a0 --- /dev/null +++ b/apps/immich/1.92.1/config.env @@ -0,0 +1,18 @@ +# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables + +# The location where your uploaded files are stored +UPLOAD_LOCATION=${UPLOAD_LOCATION} + +# The Immich version to use. You can pin this to a specific version like "v1.71.0" +#IMMICH_VERSION=release + +# Connection secret for postgres. You should change it to a random password +DB_PASSWORD=${PANEL_DB_USER_PASSWORD} + +# The values below this line do not need to be changed +################################################################################### +DB_HOSTNAME=${CONTAINER_NAME}-postgres +DB_USERNAME=${PANEL_DB_USER} +DB_DATABASE_NAME=${PANEL_DB_NAME} + +REDIS_HOSTNAME=${CONTAINER_NAME}-redis diff --git a/apps/immich/1.92.1/data.yml b/apps/immich/1.92.1/data.yml new file mode 100644 index 00000000..6e874e62 --- /dev/null +++ b/apps/immich/1.92.1/data.yml @@ -0,0 +1,56 @@ +additionalProperties: + formFields: + - default: 40194 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: ./data/upload + edit: true + envKey: UPLOAD_LOCATION + labelEn: Path to folder for uploading + labelZh: 上传用文件夹路径 + required: true + type: text + - default: ./data/cache + edit: true + envKey: CACHE_PATH + labelEn: Cache folder path + labelZh: 缓存文件夹路径 + required: true + type: text + - default: ./data/data + edit: true + envKey: DB_PATH + labelEn: Database folder path + labelZh: 数据库文件夹路径 + required: true + type: text + - default: immich + edit: true + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + required: true + rule: paramCommon + type: text + - default: postgres + edit: true + envKey: PANEL_DB_USER + labelEn: Postgres User + labelZh: Postgres 数据库用户 + required: true + rule: paramCommon + type: text + - default: immich + edit: true + envKey: PANEL_DB_USER_PASSWORD + labelEn: Postgres Password + labelZh: Postgres 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password \ No newline at end of file diff --git a/apps/immich/1.92.1/docker-compose.yml b/apps/immich/1.92.1/docker-compose.yml new file mode 100644 index 00000000..c46d6c2b --- /dev/null +++ b/apps/immich/1.92.1/docker-compose.yml @@ -0,0 +1,85 @@ +version: '3' +services: + immich-server: + container_name: ${CONTAINER_NAME}-server + restart: always + networks: + - 1panel-network + image: altran1502/immich-server:v1.92.1 + command: [ "start.sh", "immich" ] + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + env_file: + - config.env + ports: + - ${PANEL_APP_PORT_HTTP}:3001 + depends_on: + - immich-redis + - immich-database + labels: + createdBy: "Apps" + + immich-microservices: + container_name: ${CONTAINER_NAME}-microservices + restart: always + networks: + - 1panel-network + image: altran1502/immich-server:v1.92.1 + # extends: + # file: hwaccel.yml + # service: hwaccel + command: [ "start.sh", "microservices" ] + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + env_file: + - config.env + depends_on: + - immich-redis + - immich-database + labels: + createdBy: "Apps" + + immich-machine-learning: + container_name: ${CONTAINER_NAME}-machine_learning + restart: always + networks: + - 1panel-network + image: altran1502/immich-machine-learning:v1.92.1 + volumes: + - ${CACHE_PATH}:/cache + env_file: + - config.env + labels: + createdBy: "Apps" + + immich-redis: + container_name: ${CONTAINER_NAME}-redis + restart: always + networks: + - 1panel-network + image: "redis:6.2-alpine@sha256:c5a607fb6e1bb15d32bbcf14db22787d19e428d59e31a5da67511b49bb0f1ccc" + labels: + createdBy: "Apps" + + immich-database: + container_name: ${CONTAINER_NAME}-postgres + restart: always + networks: + - 1panel-network + image: "tensorchord/pgvecto-rs:pg14-v0.1.11@sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee" + env_file: + - config.env + environment: + - POSTGRES_PASSWORD=${PANEL_DB_USER_PASSWORD} + - POSTGRES_USER=${PANEL_DB_USER} + - POSTGRES_DB=${PANEL_DB_NAME} + volumes: + - ${DB_PATH}:/var/lib/postgresql/data + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/immich/README.md b/apps/immich/README.md new file mode 100644 index 00000000..b55b7e76 --- /dev/null +++ b/apps/immich/README.md @@ -0,0 +1,115 @@ +

+
+ License: MIT + + Discord + +
+
+

+ +

+ +

+

Immich - High performance self-hosted photo and video backup solution

+
+
+

+ Català + Español + Français + Italiano + 日本語 + 한국어 + Deutsch + Nederlands + Türkçe + 中文 + Русский +

+ +## Disclaimer + +- ⚠️ The project is under **very active** development. +- ⚠️ Expect bugs and breaking changes. +- ⚠️ **Do not use the app as the only way to store your photos and videos.** +- ⚠️ Always follow [3-2-1](https://www.backblaze.com/blog/the-3-2-1-backup-strategy/) backup plan for your precious photos and videos! + +## Content + +- [Official Documentation](https://immich.app/docs) +- [Roadmap](https://github.com/orgs/immich-app/projects/1) +- [Demo](#demo) +- [Features](#features) +- [Introduction](https://immich.app/docs/overview/introduction) +- [Installation](https://immich.app/docs/install/requirements) +- [Contribution Guidelines](https://immich.app/docs/overview/support-the-project) +- [Support The Project](#support-the-project) + +## Documentation + +You can find the main documentation, including installation guides, at https://immich.app/. + +## Demo + +You can access the web demo at https://demo.immich.app + +For the mobile app, you can use `https://demo.immich.app/api` for the `Server Endpoint URL` + +```bash title="Demo Credential" +The credential +email: demo@immich.app +password: demo +``` + +``` +Spec: Free-tier Oracle VM - Amsterdam - 2.4Ghz quad-core ARM64 CPU, 24GB RAM +``` + +## Features + +| Features | Mobile | Web | +| -------------------------------------------- | ------ | --- | +| Upload and view videos and photos | Yes | Yes | +| Auto backup when the app is opened | Yes | N/A | +| Selective album(s) for backup | Yes | N/A | +| Download photos and videos to local device | Yes | Yes | +| Multi-user support | Yes | Yes | +| Album and Shared albums | Yes | Yes | +| Scrubbable/draggable scrollbar | Yes | Yes | +| Support raw formats | Yes | Yes | +| Metadata view (EXIF, map) | Yes | Yes | +| Search by metadata, objects, faces, and CLIP | Yes | Yes | +| Administrative functions (user management) | No | Yes | +| Background backup | Yes | N/A | +| Virtual scroll | Yes | Yes | +| OAuth support | Yes | Yes | +| API Keys | N/A | Yes | +| LivePhoto/MotionPhoto backup and playback | Yes | Yes | +| User-defined storage structure | Yes | Yes | +| Public Sharing | No | Yes | +| Archive and Favorites | Yes | Yes | +| Global Map | Yes | Yes | +| Partner Sharing | Yes | Yes | +| Facial recognition and clustering | Yes | Yes | +| Memories (x years ago) | Yes | Yes | +| Offline support | Yes | No | +| Read-only gallery | Yes | Yes | +| Stacked Photos | Yes | Yes | + +## Support the project + +I've committed to this project, and I will not stop. I will keep updating the docs, adding new features, and fixing bugs. But I can't do it alone. So I need your help to give me additional motivation to keep going. + +As our hosts in the [selfhosted.show - In the episode 'The-organization-must-not-be-name is a Hostile Actor'](https://selfhosted.show/79?t=1418) said, this is a massive undertaking of what the team and I are doing. And I would love to someday be able to do this full-time, and I am asking for your help to make that happen. + +If you feel like this is the right cause and the app is something you are seeing yourself using for a long time, please consider supporting the project with the option below. + +### Donation + +- [Monthly donation](https://github.com/sponsors/alextran1502) via GitHub Sponsors +- [One-time donation](https://github.com/sponsors/alextran1502?frequency=one-time&sponsor=alextran1502) via GitHub Sponsors +- [Liberapay](https://liberapay.com/alex.tran1502/) +- [buymeacoffee](https://www.buymeacoffee.com/altran1502) +- Bitcoin: 1FvEp6P6NM8EZEkpGUFAN2LqJ1gxusNxZX +- ZCash: u1smm4wvqegcp46zss2jf5xptchgeczp4rx7a0wu3mermf2wxahm26yyz5w9mw3f2p4emwlljxjumg774kgs8rntt9yags0whnzane4n67z4c7gppq4yyvcj404ne3r769prwzd9j8ntvqp44fa6d67sf7rmcfjmds3gmeceff4u8e92rh38nd30cr96xw6vfhk6scu4ws90ldzupr3sz diff --git a/apps/immich/data.yml b/apps/immich/data.yml new file mode 100644 index 00000000..4ba8d7b8 --- /dev/null +++ b/apps/immich/data.yml @@ -0,0 +1,20 @@ +name: Immich +tags: + - 工具 +title: 高性能的自托管照片和视频备份方案 +type: 工具 +description: 高性能的自托管照片和视频备份方案 +additionalProperties: + key: immich + name: Immich + tags: + - Tool + shortDescZh: 高性能的自托管照片和视频备份方案 + shortDescEn: High performance self-hosted photo and video backup solution + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://immich.app + github: https://github.com/immich-app/immich + document: https://immich.app/docs diff --git a/apps/immich/logo.png b/apps/immich/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4fa7d860aa9e2689aad33b011315fa3d655962ca GIT binary patch literal 6961 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 literal 0 HcmV?d00001 diff --git a/apps/immich/release/.env.sample b/apps/immich/release/.env.sample new file mode 100644 index 00000000..c66d440c --- /dev/null +++ b/apps/immich/release/.env.sample @@ -0,0 +1,9 @@ + +CONTAINER_NAME="immich" +PANEL_APP_PORT_HTTP="40194" +PANEL_DB_NAME="immich" +PANEL_DB_USER="postgres" +PANEL_DB_USER_PASSWORD="immich_BfcHCZ" +UPLOAD_LOCATION="./data/upload" +CACHE_PATH="./data/cache" +DB_PATH="./data/data" \ No newline at end of file diff --git a/apps/immich/release/config.env b/apps/immich/release/config.env new file mode 100644 index 00000000..041d94a0 --- /dev/null +++ b/apps/immich/release/config.env @@ -0,0 +1,18 @@ +# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables + +# The location where your uploaded files are stored +UPLOAD_LOCATION=${UPLOAD_LOCATION} + +# The Immich version to use. You can pin this to a specific version like "v1.71.0" +#IMMICH_VERSION=release + +# Connection secret for postgres. You should change it to a random password +DB_PASSWORD=${PANEL_DB_USER_PASSWORD} + +# The values below this line do not need to be changed +################################################################################### +DB_HOSTNAME=${CONTAINER_NAME}-postgres +DB_USERNAME=${PANEL_DB_USER} +DB_DATABASE_NAME=${PANEL_DB_NAME} + +REDIS_HOSTNAME=${CONTAINER_NAME}-redis diff --git a/apps/immich/release/data.yml b/apps/immich/release/data.yml new file mode 100644 index 00000000..6e874e62 --- /dev/null +++ b/apps/immich/release/data.yml @@ -0,0 +1,56 @@ +additionalProperties: + formFields: + - default: 40194 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: ./data/upload + edit: true + envKey: UPLOAD_LOCATION + labelEn: Path to folder for uploading + labelZh: 上传用文件夹路径 + required: true + type: text + - default: ./data/cache + edit: true + envKey: CACHE_PATH + labelEn: Cache folder path + labelZh: 缓存文件夹路径 + required: true + type: text + - default: ./data/data + edit: true + envKey: DB_PATH + labelEn: Database folder path + labelZh: 数据库文件夹路径 + required: true + type: text + - default: immich + edit: true + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + required: true + rule: paramCommon + type: text + - default: postgres + edit: true + envKey: PANEL_DB_USER + labelEn: Postgres User + labelZh: Postgres 数据库用户 + required: true + rule: paramCommon + type: text + - default: immich + edit: true + envKey: PANEL_DB_USER_PASSWORD + labelEn: Postgres Password + labelZh: Postgres 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password \ No newline at end of file diff --git a/apps/immich/release/docker-compose.yml b/apps/immich/release/docker-compose.yml new file mode 100644 index 00000000..534100de --- /dev/null +++ b/apps/immich/release/docker-compose.yml @@ -0,0 +1,85 @@ +version: '3' +services: + immich-server: + container_name: ${CONTAINER_NAME}-server + restart: always + networks: + - 1panel-network + image: altran1502/immich-server:release + command: [ "start.sh", "immich" ] + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + env_file: + - config.env + ports: + - ${PANEL_APP_PORT_HTTP}:3001 + depends_on: + - immich-redis + - immich-database + labels: + createdBy: "Apps" + + immich-microservices: + container_name: ${CONTAINER_NAME}-microservices + restart: always + networks: + - 1panel-network + image: altran1502/immich-server:release + # extends: + # file: hwaccel.yml + # service: hwaccel + command: [ "start.sh", "microservices" ] + volumes: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + env_file: + - config.env + depends_on: + - immich-redis + - immich-database + labels: + createdBy: "Apps" + + immich-machine-learning: + container_name: ${CONTAINER_NAME}-machine_learning + restart: always + networks: + - 1panel-network + image: altran1502/immich-machine-learning:release + volumes: + - ${CACHE_PATH}:/cache + env_file: + - config.env + labels: + createdBy: "Apps" + + immich-redis: + container_name: ${CONTAINER_NAME}-redis + restart: always + networks: + - 1panel-network + image: "redis:6.2-alpine@sha256:c5a607fb6e1bb15d32bbcf14db22787d19e428d59e31a5da67511b49bb0f1ccc" + labels: + createdBy: "Apps" + + immich-database: + container_name: ${CONTAINER_NAME}-postgres + restart: always + networks: + - 1panel-network + image: "tensorchord/pgvecto-rs:pg14-v0.1.11@sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee" + env_file: + - config.env + environment: + - POSTGRES_PASSWORD=${PANEL_DB_USER_PASSWORD} + - POSTGRES_USER=${PANEL_DB_USER} + - POSTGRES_DB=${PANEL_DB_NAME} + volumes: + - ${DB_PATH}:/var/lib/postgresql/data + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file