From 8166163b00265d9014be80404bf8a8ce0666e6e5 Mon Sep 17 00:00:00 2001 From: OG-Jons Date: Sun, 15 Sep 2024 21:58:13 +0200 Subject: [PATCH 1/3] feat: add immich service --- public/svgs/immich.svg | 66 +++++++++++++++++++++++++ templates/compose/immich.yaml | 91 +++++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) create mode 100644 public/svgs/immich.svg create mode 100644 templates/compose/immich.yaml diff --git a/public/svgs/immich.svg b/public/svgs/immich.svg new file mode 100644 index 000000000..9d844a772 --- /dev/null +++ b/public/svgs/immich.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/templates/compose/immich.yaml b/templates/compose/immich.yaml new file mode 100644 index 000000000..de6e5fddf --- /dev/null +++ b/templates/compose/immich.yaml @@ -0,0 +1,91 @@ +# documentation: https://immich.app/docs/overview/introduction +# slogan: Self-hosted photo and video management solution. +# tags: photo,video,management,server,cloud,storage,sharing,metadata,face,recognition +# logo: svgs/immich.svg +# port: 2283 + +name: immich + +x-shared-env: &shared-env + environment: + # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables + + # Hardcoded values, not editable in Coolify UI + - UPLOAD_LOCATION=./library # The location where your uploaded files are stored + - DB_DATA_LOCATION=./postgres # The location where your database files are stored + + # Uninitialized variables, editable in Coolify UI + - IMMICH_VERSION=${IMMICH_VERSION:-release} # The Immich version to use, editable in Coolify + + # Default values, editable in Coolify UI + - DB_PASSWORD=${DB_PASSWORD:-postgres} # Default: "postgres", can be overridden + - DB_USERNAME=${DB_USERNAME:-postgres} # Default: "postgres", can be overridden + - DB_DATABASE_NAME=${DB_DATABASE_NAME:-immich} # Default: "immich", can be overridden + + # Optional timezone variable, uninitialized, editable in Coolify UI\ + - TZ=${TZ:-Etc/UTC} + +services: + immich-server: + container_name: immich_server + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # extends: + # file: hwaccel.transcoding.yml + # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + volumes: + # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file + - ${UPLOAD_LOCATION}:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + <<: *shared-env + ports: + - 2283:3001 + depends_on: + - redis + - database + restart: always + healthcheck: + disable: false + + immich-machine-learning: + container_name: immich_machine_learning + # For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag. + # Example tag: ${IMMICH_VERSION:-release}-cuda + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration + # file: hwaccel.ml.yml + # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable + volumes: + - model-cache:/cache + <<: *shared-env + restart: always + healthcheck: + disable: false + + redis: + container_name: immich_redis + image: docker.io/redis:6.2-alpine@sha256:2d1463258f2764328496376f5d965f20c6a67f66ea2b06dc42af351f75248792 + healthcheck: + test: redis-cli ping || exit 1 + restart: always + + database: + container_name: immich_postgres + image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + volumes: + # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + healthcheck: + 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 + interval: 5m + start_interval: 30s + start_period: 5m + 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"] + restart: always + +volumes: + model-cache: From c5fd7ba48ab8572b90ee46b065b8afd13c889471 Mon Sep 17 00:00:00 2001 From: OG-Jons Date: Sun, 15 Sep 2024 22:20:48 +0200 Subject: [PATCH 2/3] feat: auto generate url --- templates/compose/immich.yaml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/templates/compose/immich.yaml b/templates/compose/immich.yaml index de6e5fddf..047e8817b 100644 --- a/templates/compose/immich.yaml +++ b/templates/compose/immich.yaml @@ -18,15 +18,15 @@ x-shared-env: &shared-env - IMMICH_VERSION=${IMMICH_VERSION:-release} # The Immich version to use, editable in Coolify # Default values, editable in Coolify UI - - DB_PASSWORD=${DB_PASSWORD:-postgres} # Default: "postgres", can be overridden - - DB_USERNAME=${DB_USERNAME:-postgres} # Default: "postgres", can be overridden + - DB_PASSWORD=${SERVICE_PASSWORD_IMMICH} # Default: "postgres", can be overridden + - DB_USERNAME=${SERVICE_USER_IMMICH} # Default: "postgres", can be overridden - DB_DATABASE_NAME=${DB_DATABASE_NAME:-immich} # Default: "immich", can be overridden # Optional timezone variable, uninitialized, editable in Coolify UI\ - TZ=${TZ:-Etc/UTC} services: - immich-server: + immich: container_name: immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} # extends: @@ -37,8 +37,10 @@ services: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro <<: *shared-env - ports: - - 2283:3001 + environment: + - SERVICE_FQDN_IMMICH=/ + - _APP_URL=$SERVICE_FQDN_IMMICH + - SERVICE_FQDN_IMMICH_3001 depends_on: - redis - database From dd8d0a62d84cef95ca690680da8bfce4016d6b7d Mon Sep 17 00:00:00 2001 From: OG-Jons Date: Sun, 15 Sep 2024 22:44:21 +0200 Subject: [PATCH 3/3] feat: refactored to work with coolify auto env vars --- templates/compose/immich.yaml | 51 +++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/templates/compose/immich.yaml b/templates/compose/immich.yaml index 047e8817b..2feed55ad 100644 --- a/templates/compose/immich.yaml +++ b/templates/compose/immich.yaml @@ -6,25 +6,6 @@ name: immich -x-shared-env: &shared-env - environment: - # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables - - # Hardcoded values, not editable in Coolify UI - - UPLOAD_LOCATION=./library # The location where your uploaded files are stored - - DB_DATA_LOCATION=./postgres # The location where your database files are stored - - # Uninitialized variables, editable in Coolify UI - - IMMICH_VERSION=${IMMICH_VERSION:-release} # The Immich version to use, editable in Coolify - - # Default values, editable in Coolify UI - - DB_PASSWORD=${SERVICE_PASSWORD_IMMICH} # Default: "postgres", can be overridden - - DB_USERNAME=${SERVICE_USER_IMMICH} # Default: "postgres", can be overridden - - DB_DATABASE_NAME=${DB_DATABASE_NAME:-immich} # Default: "immich", can be overridden - - # Optional timezone variable, uninitialized, editable in Coolify UI\ - - TZ=${TZ:-Etc/UTC} - services: immich: container_name: immich_server @@ -36,11 +17,21 @@ services: # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro - <<: *shared-env environment: - - SERVICE_FQDN_IMMICH=/ - - _APP_URL=$SERVICE_FQDN_IMMICH - SERVICE_FQDN_IMMICH_3001 + # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables + # Hardcoded values, not editable in Coolify UI + - UPLOAD_LOCATION=./library # The location where your uploaded files are stored + - DB_DATA_LOCATION=./postgres # The location where your database files are stored + + - IMMICH_VERSION=${IMMICH_VERSION:-release} # The Immich version to use, editable in Coolify + + # Default values, editable in Coolify UI + - DB_PASSWORD=$SERVICE_PASSWORD_DATABASE # Default: "postgres", can be overridden + - DB_USERNAME=$SERVICE_USER_DATABASE # Default: "postgres", can be overridden + - DB_DATABASE_NAME=${DB_DATABASE_NAME:-immich} # Default: "immich", can be overridden + + - TZ=${TZ:-Etc/UTC} depends_on: - redis - database @@ -58,7 +49,21 @@ services: # service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable volumes: - model-cache:/cache - <<: *shared-env + environment: + # You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables + + # Hardcoded values, not editable in Coolify UI + - UPLOAD_LOCATION=./library # The location where your uploaded files are stored + - DB_DATA_LOCATION=./postgres # The location where your database files are stored + + - IMMICH_VERSION=${IMMICH_VERSION:-release} # The Immich version to use, editable in Coolify + + # Default values, editable in Coolify UI + - DB_PASSWORD=$SERVICE_PASSWORD_DATABASE # Default: "postgres", can be overridden + - DB_USERNAME=$SERVICE_USER_DATABASE # Default: "postgres", can be overridden + - DB_DATABASE_NAME=${DB_DATABASE_NAME:-immich} # Default: "immich", can be overridden + + - TZ=${TZ:-Etc/UTC} restart: always healthcheck: disable: false