one-click-apps/public/v4/apps/immich.yml

181 lines
8.2 KiB
YAML

captainVersion: 4
services:
$$cap_appname-server:
caproverExtra:
notExposeAsWebApp: 'true'
dockerfileLines:
- FROM ghcr.io/immich-app/immich-server:$$cap_version
- ENTRYPOINT ["/bin/sh", "./start-server.sh"]
environment:
NODE_ENV: production
DB_PASSWORD: $$cap_app_db_pass
DB_USERNAME: $$cap_app_db_user
DB_DATABASE_NAME: $$cap_app_db_name
DB_HOSTNAME: srv-captain--$$cap_appname-db
TYPESENSE_API_KEY: $$cap_typesense_api_key
TYPESENSE_HOST: srv-captain--$$cap_appname-typesense
REDIS_HOSTNAME: srv-captain--$$cap_appname-redis
UPLOAD_LOCATION: $$cap_app_upload_location
IMMICH_WEB_URL: http://srv-captain--$$cap_appname-web:3000
IMMICH_SERVER_URL: http://srv-captain--$$cap_appname-server:3001
IMMICH_MACHINE_LEARNING_URL: http://srv-captain--$$cap_appname-machine-learning:3003
volumes:
- $$cap_app_upload_location:/usr/src/app/upload
depends_on:
- $$cap_appname-redis
- $$cap_appname-db
- $$cap_appname-typesense
$$cap_appname-microservices:
caproverExtra:
notExposeAsWebApp: 'true'
dockerfileLines:
- FROM ghcr.io/immich-app/immich-server:$$cap_version
- ENTRYPOINT ["/bin/sh", "./start-microservices.sh"]
environment:
NODE_ENV: production
DB_PASSWORD: $$cap_app_db_pass
DB_USERNAME: $$cap_app_db_user
DB_DATABASE_NAME: $$cap_app_db_name
DB_HOSTNAME: srv-captain--$$cap_appname-db
TYPESENSE_API_KEY: $$cap_typesense_api_key
TYPESENSE_HOST: srv-captain--$$cap_appname-typesense
REDIS_HOSTNAME: srv-captain--$$cap_appname-redis
UPLOAD_LOCATION: $$cap_app_upload_location
IMMICH_WEB_URL: http://srv-captain--$$cap_appname-web:3000
IMMICH_SERVER_URL: http://srv-captain--$$cap_appname-server:3001
IMMICH_MACHINE_LEARNING_URL: http://srv-captain--$$cap_appname-machine-learning:3003
volumes:
- $$cap_app_upload_location:/usr/src/app/upload
depends_on:
- $$cap_appname-redis
- $$cap_appname-db
- $$cap_appname-typesense
$$cap_appname-machine-learning:
caproverExtra:
notExposeAsWebApp: 'true'
image: ghcr.io/immich-app/immich-machine-learning:$$cap_version
environment:
NODE_ENV: production
DB_PASSWORD: $$cap_app_db_pass
DB_USERNAME: $$cap_app_db_user
DB_DATABASE_NAME: $$cap_app_db_name
DB_HOSTNAME: srv-captain--$$cap_appname-db
TYPESENSE_API_KEY: $$cap_typesense_api_key
TYPESENSE_HOST: srv-captain--$$cap_appname-typesense
REDIS_HOSTNAME: srv-captain--$$cap_appname-redis
UPLOAD_LOCATION: $$cap_app_upload_location
IMMICH_WEB_URL: http://srv-captain--$$cap_appname-web:3000
IMMICH_SERVER_URL: http://srv-captain--$$cap_appname-server:3001
IMMICH_MACHINE_LEARNING_URL: http://srv-captain--$$cap_appname-machine-learning:3003
volumes:
- $$cap_app_upload_location:/usr/src/app/upload
- $$cap_appname-mlcache:/cache
$$cap_appname-web:
caproverExtra:
dockerfileLines:
- FROM ghcr.io/immich-app/immich-web:$$cap_version
- ENTRYPOINT ["/bin/sh", "./entrypoint.sh"]
notExposeAsWebApp: 'true'
environment:
NODE_ENV: production
DB_PASSWORD: $$cap_app_db_pass
DB_USERNAME: $$cap_app_db_user
DB_DATABASE_NAME: $$cap_app_db_name
DB_HOSTNAME: srv-captain--$$cap_appname-db
TYPESENSE_API_KEY: $$cap_typesense_api_key
TYPESENSE_HOST: srv-captain--$$cap_appname-typesense
REDIS_HOSTNAME: srv-captain--$$cap_appname-redis
UPLOAD_LOCATION: $$cap_app_upload_location
IMMICH_WEB_URL: http://srv-captain--$$cap_appname-web:3000
IMMICH_SERVER_URL: http://srv-captain--$$cap_appname-server:3001
IMMICH_MACHINE_LEARNING_URL: http://srv-captain--$$cap_appname-machine-learning:3003
$$cap_appname-typesense:
caproverExtra:
notExposeAsWebApp: 'true'
image: typesense/typesense:$$cap_typesense_ver
environment:
TYPESENSE_API_KEY: $$cap_typesense_api_key
TYPESENSE_DATA_DIR: '/data'
volumes:
- $$cap_appname-typesense-data:/data
$$cap_appname-redis:
caproverExtra:
notExposeAsWebApp: 'true'
image: redis:$$cap_redis_ver
$$cap_appname-db:
caproverExtra:
notExposeAsWebApp: 'true'
image: postgres:$$cap_app_db_ver
environment:
POSTGRES_PASSWORD: $$cap_app_db_pass
POSTGRES_USER: $$cap_app_db_user
POSTGRES_DB: $$cap_app_db_name
PG_DATA: /var/lib/postgresql/data
volumes:
- $$cap_appname-db-data:/var/lib/postgresql/data
$$cap_appname:
caproverExtra:
containerHttpPort: 8080
image: ghcr.io/immich-app/immich-proxy:v1.52.1
environment:
IMMICH_SERVER_URL: http://srv-captain--$$cap_appname-server:3001
IMMICH_WEB_URL: http://srv-captain--$$cap_appname-web:3000
depends_on:
- $$cap_appname-server
caproverOneClickApp:
displayName: Immich
description: Open source (MIT License) Google Photos alternative. Backup your phone's photos and videos to your private server.
isOfficial: false
documentation: https://immich.app
instructions:
start: |-
Leave every default value as is for a working and simple installation. You can specify the (full) path to the directory you want to save your media, in that case the directory must exist beforehand. Immich can be accessed via browser and with an app (Immich). If you have big media files (bigger than 500MB) in your phone, update your Nginx configuration to increase your `client_max_body_size`.
end: |-
On your first visit it will ask for email and password for the admin user. Remember to change the default Nginx configuration and increasing the 'client_max_body_size' value if you expect to upload files bigger than 500MB.
variables:
- label: Immich version
id: $$cap_version
description: Check out their valid tags at https://hub.docker.com/r/immich-app/immich/tags
defaultValue: v1.52.1
- label: Immich redis version
id: $$cap_redis_ver
defaultValue: 6.2
description: Check out their valid tags at https://hub.docker.com/_/redis/tags
- label: Typesense version
id: $$cap_typesense_ver
description: Check out their valid tags at https://hub.docker.com/r/typesense/typesense/tags
defaultValue: 0.24.0
- label: Typesense API key
id: $$cap_typesense_api_key
description: A big enough string to be used to authenticate against Typesense. A random one is generated for you.
defaultValue: $$cap_gen_random_hex(32)
- label: Database password
id: $$cap_app_db_pass
description: Password for accessing the database. A random one has been generated for you.
defaultValue: $$cap_gen_random_hex(32)
- label: Database username
id: $$cap_app_db_user
description: Username to access the database
defaultValue: 'immich'
- label: Database name
id: $$cap_app_db_name
description: A name for the database used by Immich
defaultValue: 'immich'
- label: PostgreSQL database version
id: $$cap_app_db_ver
description: Immich uses PostgreSQL as a database. Check out their valid tags at https://hub.docker.com/_/postgres/tags
defaultValue: 14
- label: Upload directory
id: $$cap_app_upload_location
description: Full path to the directory where you plan to store all your files. It should be created beforehand. If you want caprover to create it for you just leave the default 'immich-data'
defaultValue: immich-data