diff --git a/servapps/Immich/cosmos-compose.json b/servapps/Immich/cosmos-compose.json new file mode 100644 index 00000000..45c17eda --- /dev/null +++ b/servapps/Immich/cosmos-compose.json @@ -0,0 +1,261 @@ + { + "cosmos-installer": { + "form": [ + { + "name": "photoPath", + "label": "What is the path to your uploaded Photos?", + "initialValue": "{DefaultDataPath}/immich-photos", + "type": "text" + }, + { + "name": "installImmichBackup", + "label": "Do you want to add a backup agent for the database? (https://immich.app/docs/administration/backup-and-restore)", + "initialValue": false, + "type": "checkbox" + } + {if Context.installImmichBackup} + , { + "name": "ImmichBackupPath", + "label": "Where do you want to save that backup?", + "initialValue": "{DefaultDataPath}/immich-backup", + "type": "text" + } + {/if} + ] + }, + "minVersion": "0.12.0", + "services": { + "{ServiceName}": { + "container_name": "{ServiceName}", + "hostname": "{ServiceName}", + "image": "ghcr.io/immich-app/immich-server:release", + "command": "start.sh immich", + "networks": { + "{ServiceName}": {} + }, + "volumes": [ + { + "source": "{Context.photoPath}", + "target": "/usr/src/app/upload", + "type": "bind" + }, + { + "source": "/etc/localtime", + "target": "/etc/localtime", + "type": "bind" + } + ], + "labels": { + "cosmos-persistent-env": "UPLOAD_LOCATION, TYPESENSE_API_KEY, DB_PASSWORD, DB_DATABASE_NAME", + "cosmos-force-network-secured": "true", + "cosmos-auto-update": "false", + "cosmos-icon": "https://azukaar.github.io/cosmos-servapps-official/servapps/Immich/icon.png", + "cosmos-stack": "{ServiceName}", + "cosmos-stack-main": "{ServiceName}" + }, + "environment": [ + "UPLOAD_LOCATION=/usr/src/app/upload", + "TYPESENSE_API_KEY={Passwords.0}", + "DB_PASSWORD={Passwords.1}", + "DB_HOSTNAME={ServiceName}-database", + "DB_USERNAME=postgres", + "DB_DATABASE_NAME=immich", + "REDIS_HOSTNAME={ServiceName}-redis" + ], + "depends_on": [ + "{ServiceName}-redis", + "{ServiceName}-database" + ], + "routes": [ + { + "name": "{ServiceName}", + "description": "Expose {ServiceName} to the web", + "useHost": true, + "target": "http://{ServiceName}:3001", + "mode": "SERVAPP", + "Timeout": 14400000, + "ThrottlePerMinute": 12000, + "BlockCommonBots": true, + "SmartShield": { + "Enabled": true, + "PolicyStrictness": 3, + "PerUserRequestLimit": 12000, + "PerUserSimultaneous": 100, + "MaxGlobalSimultaneous": 1000 + } + } + ], + "restart": "always" + }, + "microservices": { + "container_name": "microservices", + "hostname": "microservices", + "image": "ghcr.io/immich-app/immich-server:release", + "command": "start.sh microservices", + "networks": { + "{ServiceName}": {} + }, + "volumes": [ + { + "source": "{Context.photoPath}", + "target": "/usr/src/app/upload", + "type": "bind" + }, + { + "source": "/etc/localtime", + "target": "/etc/localtime", + "type": "bind" + } + ], + "labels": { + "cosmos-persistent-env": "UPLOAD_LOCATION, TYPESENSE_API_KEY, DB_PASSWORD, DB_DATABASE_NAME", + "cosmos-force-network-secured": "true", + "cosmos-auto-update": "false", + "cosmos-icon": "https://azukaar.github.io/cosmos-servapps-official/servapps/Immich/icon.png", + "cosmos-stack": "{ServiceName}", + "cosmos-stack-main": "{ServiceName}" + }, + "environment": [ + "UPLOAD_LOCATION=/usr/src/app/upload", + "TYPESENSE_API_KEY={Passwords.0}", + "DB_PASSWORD={Passwords.1}", + "DB_HOSTNAME={ServiceName}-database", + "DB_USERNAME=postgres", + "DB_DATABASE_NAME=immich", + "REDIS_HOSTNAME={ServiceName}-redis" + ], + "depends_on": [ + "{ServiceName}-redis", + "{ServiceName}-database" + ], + "restart": "always" + }, + "immich-machine-learning": { + "container_name": "immich-machine-learning", + "hostname": "immich-machine-learning", + "image": "ghcr.io/immich-app/immich-machine-learning:release", + "networks": { + "{ServiceName}": {} + }, + "volumes": [ + { + "source": "{ServiceName}-model-cache", + "target": "/cache", + "type": "volume" + } + ], + "labels": { + "cosmos-persistent-env": "UPLOAD_LOCATION, TYPESENSE_API_KEY, DB_PASSWORD, DB_DATABASE_NAME", + "cosmos-force-network-secured": "true", + "cosmos-auto-update": "false", + "cosmos-icon": "https://azukaar.github.io/cosmos-servapps-official/servapps/Immich/icon.png", + "cosmos-stack": "{ServiceName}", + "cosmos-stack-main": "{ServiceName}" + }, + "environment": [ + "UPLOAD_LOCATION=/usr/src/app/upload", + "TYPESENSE_API_KEY={Passwords.0}", + "DB_PASSWORD={Passwords.1}", + "DB_HOSTNAME={ServiceName}-database", + "DB_USERNAME=postgres", + "DB_DATABASE_NAME=immich", + "REDIS_HOSTNAME={ServiceName}-redis" + ], + "restart": "always" + }, + "{ServiceName}-redis": { + "container_name": "{ServiceName}-redis", + "hostname": "{ServiceName}-redis", + "image": "redis:6.2-alpine@sha256:80cc8518800438c684a53ed829c621c94afd1087aaeb59b0d4343ed3e7bcf6c5", + "networks": { + "{ServiceName}": {} + }, + "labels": { + "cosmos-persistent-env": "POSTGRES_PASSWORD, POSTGRES_USER, POSTGRES_DB", + "cosmos-force-network-secured": "true", + "cosmos-auto-update": "false", + "cosmos-icon": "https://azukaar.github.io/cosmos-servapps-official/servapps/Immich/icon.png", + "cosmos-stack": "{ServiceName}", + "cosmos-stack-main": "{ServiceName}" + }, + "restart": "always" + }, + "{ServiceName}-database": { + "container_name": "{ServiceName}-database", + "hostname": "{ServiceName}-database", + "image": "tensorchord/pgvecto-rs:pg14-v0.1.11", + "user": "postgres", + "networks": { + "{ServiceName}": {} + }, + "labels": { + "cosmos-persistent-env": "POSTGRES_PASSWORD, POSTGRES_USER, POSTGRES_DB", + "cosmos-force-network-secured": "true", + "cosmos-auto-update": "false", + "cosmos-icon": "https://azukaar.github.io/cosmos-servapps-official/servapps/Immich/icon.png", + "cosmos-stack": "{ServiceName}", + "cosmos-stack-main": "{ServiceName}" + }, + "environment": [ + "POSTGRES_PASSWORD={Passwords.1}", + "POSTGRES_USER=postgres", + "POSTGRES_DB=immich" + ], + "volumes": [ + { + "source": "{ServiceName}-pgdata", + "target": "/var/lib/postgresql/data", + "type": "volume" + } + ], + "restart": "always" + } + {if Context.installImmichBackup} + , + "{ServiceName}-backup": { + "image": "prodrigestivill/postgres-backup-local", + "container_name": "{ServiceName}-backup", + "hostname": "{ServiceName}-backup", + "restart": "unless-stopped", + "labels": { + "cosmos-persistent-env": "POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD, DB_DATABASE_NAME", + "cosmos-force-network-secured": "true", + "cosmos-auto-update": "false", + "cosmos-icon": "https://azukaar.github.io/cosmos-servapps-official/servapps/Immich/icon.png", + "cosmos-stack": "{ServiceName}", + "cosmos-stack-main": "{ServiceName}" + }, + "networks": { + "{ServiceName}": {} + }, + "volumes": [ + { + "source": "{Context.ImmichBackupPath}", + "target": "/db_dumps", + "type": "bind" + } + ], + "environment": [ + "POSTGRES_HOST={ServiceName}-database", + "POSTGRES_DB=immich", + "POSTGRES_USER=postgres", + "POSTGRES_PASSWORD={Passwords.1}", + "SCHEDULE=@daily", + "BACKUP_KEEP_DAYS=7", + "BACKUP_KEEP_WEEKS=4", + "BACKUP_KEEP_MONTHS=6", + "BACKUP_DIR=/db_dumps", + "PUID=1000", + "PGID=1000" + ], + "depends_on": [ + "{ServiceName}-database" + ] + } + {/if} + }, + + "networks": { + "{ServiceName}": {} + } +} diff --git a/servapps/Immich/description.json b/servapps/Immich/description.json new file mode 100644 index 00000000..60011332 --- /dev/null +++ b/servapps/Immich/description.json @@ -0,0 +1,9 @@ +{ + "name": "Immich", + "longDescription": "
Immich is an open-source personal photo management tool that makes use of the latest technologies to provide an easy and intuitive way to keep your photos organized. It provides a web-based platform to browse, organize, and share your personal photo collection.
With features like smart search, automated tagging, and geolocation, Immich makes it easy to find and group your photos. It supports various image formats and RAW files from high-quality cameras. Immich can also automatically generate thumbnails and convert RAW images.
Available for Windows, Linux, MacOS, and other platforms, Immich offers a private, self-hosted solution for your photo management needs. Start using Immich today to take control of your photo collection!
", + "description": "Immich - High performance self-hosted photo and video backup solution", + "tags": ["photo management", "image organizer", "smart search", "automated tagging", "geolocation", "thumbnails", "RAW images", "self-hosted", "windows", "linux", "macos", "Immich"], + "repository": "https://github.com/immich-app/immich", + "image": "ghcr.io/immich-app/immich-server", + "supported_architectures": ["amd64", "arm64"] +} diff --git a/servapps/Immich/icon.png b/servapps/Immich/icon.png new file mode 100644 index 00000000..df147a1b Binary files /dev/null and b/servapps/Immich/icon.png differ diff --git a/servapps/Immich/screenshots/1.png b/servapps/Immich/screenshots/1.png new file mode 100644 index 00000000..7ad188e5 Binary files /dev/null and b/servapps/Immich/screenshots/1.png differ diff --git a/servapps/Immich/screenshots/2.webp b/servapps/Immich/screenshots/2.webp new file mode 100644 index 00000000..c409e76a Binary files /dev/null and b/servapps/Immich/screenshots/2.webp differ diff --git a/servapps/Immich/screenshots/3.jpg b/servapps/Immich/screenshots/3.jpg new file mode 100644 index 00000000..f9d16c17 Binary files /dev/null and b/servapps/Immich/screenshots/3.jpg differ