diff --git a/catalog.json b/catalog.json new file mode 100644 index 0000000..73cf5bc --- /dev/null +++ b/catalog.json @@ -0,0 +1,24 @@ +{ + "schemaVersion": 1, + "apps": [ + { + "id": "immich", + "name": "Immich", + "tagline": "Self-hosted photo and video management", + "description": "High-performance photo and video backup solution with mobile apps, machine-learning search, and multi-user libraries.", + "icon": "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/design/immich-logo.png", + "developer": "FUTO", + "website": "https://immich.app", + "sourceRepo": "https://github.com/immich-app/immich" + }, + { + "id": "fhs-enhance-media", + "name": "Enhance Media", + "tagline": "Add media streaming capability to your FUTO Home", + "description": "A streaming experience for your FUTO Home. Enhance Media allows you to stream your media files to any device on your network.", + "icon": "enhance-media/icon.png", + "developer": "FUTO", + "sourceRepo": "https://github.com//enhance-media" + } + ] +} diff --git a/immich/1.107.2/docker-compose.yml b/immich/1.107.2/docker-compose.yml new file mode 100644 index 0000000..7429256 --- /dev/null +++ b/immich/1.107.2/docker-compose.yml @@ -0,0 +1,93 @@ +# +# WARNING: Make sure to use the docker-compose.yml of the current release: +# +# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml +# +# The compose file on main may not be compatible with the latest release. +# + +name: immich + +x-environment: &env + DB_USERNAME: &db_username "postgres" + DB_PASSWORD: &db_password "postgres" + DB_DATABASE_NAME: &db_database_name "immich" + +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: + - ${UPLOAD_LOCATION}:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + environment: + <<: *env + ports: + - 2283:3001 + depends_on: + - redis + - database + restart: always + + 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 + environment: + <<: *env + restart: always + + redis: + container_name: immich_redis + image: docker.io/redis:6.2-alpine@sha256:328fe6a5822256d065debb36617a8169dbfbd77b797c525288e465f56c1d392b + environment: + <<: *env + 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: + <<: *env + POSTGRES_PASSWORD: *db_password + POSTGRES_USER: *db_username + POSTGRES_DB: *db_database_name + POSTGRES_INITDB_ARGS: "--data-checksums" + volumes: + - ${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: diff --git a/immich/data/library/.gitkeep b/immich/data/library/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/immich/data/postgres/.gitkeep b/immich/data/postgres/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/immich/docker-compose.yml b/immich/docker-compose.yml new file mode 100644 index 0000000..9bf2075 --- /dev/null +++ b/immich/docker-compose.yml @@ -0,0 +1,88 @@ +# +# WARNING: Make sure to use the docker-compose.yml of the current release: +# +# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml +# +# The compose file on main may not be compatible with the latest release. +# + +name: immich + +x-environment: &env + DB_USERNAME: &db_username "postgres" + DB_PASSWORD: &db_password ${APP_PASSWORD} + DB_DATABASE_NAME: &db_database_name "immich" + +services: + immich-server: + container_name: immich_server + image: ghcr.io/immich-app/immich-server:v1.107.2 + # extends: + # file: hwaccel.transcoding.yml + # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + volumes: + - ${APP_DATA_DIR}/library:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + environment: + <<: *env + ports: + - 2283:3001 + depends_on: + - redis + - database + restart: always + + immich-machine-learning: + container_name: immich_machine_learning + image: ghcr.io/immich-app/immich-machine-learning:v1.107.2 + volumes: + - model-cache:/cache + environment: + <<: *env + restart: always + + redis: + container_name: immich_redis + image: docker.io/redis:6.2-alpine@sha256:328fe6a5822256d065debb36617a8169dbfbd77b797c525288e465f56c1d392b + environment: + <<: *env + 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: + <<: *env + POSTGRES_PASSWORD: *db_password + POSTGRES_USER: *db_username + POSTGRES_DB: *db_database_name + POSTGRES_INITDB_ARGS: "--data-checksums" + volumes: + - ${APP_DATA_DIR}/postgres:/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: diff --git a/immich/manifest.json b/immich/manifest.json new file mode 100644 index 0000000..d1b0f67 --- /dev/null +++ b/immich/manifest.json @@ -0,0 +1,12 @@ +{ + "schemaVersion": 1, + "appId": "immich", + "releases": [ + { + "version": "1.107.2", + "requiredStop": true + } + ], + "healthCheckUrl": "/api/server/ping", + "appPort": 2283 +}