diff --git a/immich/domain-immich.json b/immich/domain-immich.json new file mode 100644 index 0000000..da54f04 --- /dev/null +++ b/immich/domain-immich.json @@ -0,0 +1,60 @@ +{ + "main": { + "SERVICE_NAME": "immich", + "DOMAIN": "#IMMICH_DOMAIN" + }, + "containers": [ + { + "IMAGE": "safebox/domain-check", + "UPDATE": "true", + "MEMORY": "64M", + "NAME": "domain_checker", + "ROLES": "domain_checker", + "NETWORK": "host", + "SELECTOR": "", + "SCALE": "0", + "EXTRA": "--rm --privileged", + "PRE_START": [], + "DEPEND": [], + "POST_START": [], + "CMD": "", + "ENVS": [ + { + "PROXY": "smarthostloadbalancer" + }, + { + "TARGET": "immich" + }, + { + "PORT": "2283" + }, + { + "DOMAIN": "#IMMICH_DOMAIN" + }, + { + "SMARTHOST_PROXY_PATH": "/smarthost-domains" + }, + { + "OPERATION": "CREATE" + } + ], + "VOLUMES": [ + { + "SOURCE": "/etc/user/config/smarthost-domains", + "DEST": "/smarthost-domains", + "TYPE": "rw" + }, + { + "SOURCE": "/etc/system/data/dns/hosts.local", + "DEST": "/etc/dns/hosts.local", + "TYPE": "ro" + }, + { + "SOURCE": "/var/run/docker.sock", + "DEST": "/var/run/docker.sock", + "TYPE": "rw" + } + ] + } + ] +} \ No newline at end of file diff --git a/immich/firewall-immich.json b/immich/firewall-immich.json new file mode 100644 index 0000000..88357f8 --- /dev/null +++ b/immich/firewall-immich.json @@ -0,0 +1,75 @@ +{ + "main": { + "SERVICE_NAME": "firewalls", + "DOMAIN": "null" + }, + "containers": [ + { + "IMAGE": "safebox/firewall", + "NAME": "firewall", + "MEMORY": "64M", + "NETWORK": "host", + "SCALE": "0", + "VOLUMES": [ + { + "SOURCE": "/run/", + "DEST": "/run/", + "TYPE": "rw" + }, + { + "SOURCE": "/etc/user/config/services", + "DEST": "/services", + "TYPE": "ro" + }, + { + "SOURCE": "/etc/system/data/dns/hosts.local", + "DEST": "/etc/dns/hosts.local", + "TYPE": "ro" + }, + { + "SOURCE": "/var/run/docker.sock", + "DEST": "/var/run/docker.sock", + "TYPE": "rw" + } + ], + "PORTS": [], + "READYNESS": [ + { + "tcp": "" + }, + { + "HTTP": "" + }, + { + "EXEC": "/ready.sh" + } + ], + "ENVS": [ + { + "CHAIN": "DOCKER-USER" + }, + { + "SOURCE": "smarthostbackend" + }, + { + "TARGET": "immich" + }, + { + "TYPE": "tcp" + }, + { + "TARGET_PORT": "2283" + }, + { + "COMMENT": "proxy for immich" + } + ], + "EXTRA": "--privileged --rm", + "DEPEND": "null", + "START_ON_BOOT": "false", + "CMD": "null", + "PRE_START": "null", + "POST_START": "null" + } + ] +} \ No newline at end of file diff --git a/immich/immich-secret.json b/immich/immich-secret.json new file mode 100644 index 0000000..1650d05 --- /dev/null +++ b/immich/immich-secret.json @@ -0,0 +1,12 @@ +{ + "immichpostgres": { + "POSTGRES_DB": "#POSTGRES_DATABASE_NAME", + "POSTGRES_USER": "#POSTGRES_USERNAME", + "POSTGRES_PASSWORD": "#POSTGRESDB_PASSWORD" + }, + "immichapp": { + "DB_DATABASE_NAME": "#POSTGRES_DATABASE_NAME", + "DB_USERNAME": "#POSTGRES_USERNAME", + "DB_PASSWORD": "#POSTGRESDB_PASSWORD" + } +} \ No newline at end of file diff --git a/immich/service-immich.json b/immich/service-immich.json new file mode 100644 index 0000000..753ff6d --- /dev/null +++ b/immich/service-immich.json @@ -0,0 +1,146 @@ +{ + "main": { + "SERVICE_NAME": "immich", + "DOMAIN": "#IMMICH_DOMAIN" + }, + "containers": [ + { + "IMAGE": "alpine:latest", + "UPDATE": "true", + "NAME": "immich-init", + "NETWORK": "host", + "MEMORY": "64M", + "VOLUMES": [ + { + "SOURCE": "USER_DATA", + "DEST": "/etc/user/data", + "TYPE": "rw" + } + ], + "EXTRA": "--rm", + "DEPEND": "null", + "START_ON_BOOT": "false", + "ENTRYPOINT": "sh -c", + "CMD": "mkdir -p /etc/user/data/immich/db && /etc/user/data/immich/upload", + "PRE_START": "null", + "POST_START": "null" + }, + { + "IMAGE": "tensorchord/pgvecto-rs:pg14-v0.2.0", + "UPDATE": "true", + "NAME": "immichpostgres-db", + "MEMORY": "256M", + "NETWORK": "immich-net", + "SELECTOR": "immichpostgres", + "VOLUMES": [ + { + "SOURCE": "/etc/user/data/immich/db", + "DEST": "/var/lib/postgres", + "TYPE": "rw" + } + ], + "PORTS": [ + { + "SOURCE": "null", + "DEST": "5432", + "TYPE": "tcp" + } + ], + "ENV_FILES": [ + "/etc/user/secret/immich/immich.json" + ], + "EXTRA": "--restart always", + "DEPEND": "null", + "START_ON_BOOT": "false", + "CMD": "null", + "PRE_START": "null", + "POST_START": "null" + }, + { + "IMAGE": "valkey/valkey:8-bookworm", + "UPDATE": "true", + "NAME": "immichredis-app", + "MEMORY": "256M", + "NETWORK": "immich-net", + "SELECTOR": "immichredis", + "PORTS": [ + { + "SOURCE": "null", + "DEST": "6379", + "TYPE": "tcp" + } + ], + "EXTRA": "--restart always", + "DEPEND": "null", + "START_ON_BOOT": "false", + "CMD": "null", + "PRE_START": "null", + "POST_START": "null" + }, + { + "IMAGE": "immich-app/immich-server:#IMMICH_VERSION", + "UPDATE": "true", + "NAME": "immichapp-app", + "MEMORY": "1024M", + "NETWORK": "immich-net", + "SELECTOR": "immichapp", + "PORTS": [ + { + "SOURCE": "null", + "DEST": "2283", + "TYPE": "tcp" + } + ], + "VOLUMES": [ + { + "SOURCE": "/etc/user/data/immich/upload", + "DEST": "/usr/src/app/upload", + "TYPE": "rw" + } + ], + "ENVS": [ + { + "DB_HOSTNAME": "immichpostgres-db" + }, + { + "REDIS_HOSTNAME": "immichredis-app" + }, + { + "UPLOAD_LOCATION": "/etc/user/data/immich/uploads" + }, + { + "IMMICH_MACHINE_LEARNING_URL": "immichmachine-learning" + }, + { + "TZ": "#IMMICH_TZ" + }, + { + "IMMICH_VERSION": "#IMMICH_VERSION" + } + ], + "EXTRA": "", + "DEPEND": "null", + "START_ON_BOOT": "true", + "CMD": "null", + "PRE_START": "null", + "POST_START": [ + "firewall-immich", + "domain-immich" + ] + }, + { + "IMAGE": "immich-app/immich-machine-learning:#IMMICH_VERSION", + "UPDATE": "true", + "NAME": "immichmachine-learning", + "ROLES": "backend-www", + "MEMORY": "1024M", + "NETWORK": "immich-net", + "SELECTOR": "immichmachine-learning", + "DEPEND": "null", + "START_ON_BOOT": "true", + "CMD": "null", + "PRE_START": "null", + "POST_START": [] + } + ] +} \ No newline at end of file diff --git a/immich/template.json b/immich/template.json new file mode 100644 index 0000000..86d0647 --- /dev/null +++ b/immich/template.json @@ -0,0 +1,65 @@ +{ + "name": "immich", + "fields": [ + { + "description": "Please add Immich domain:", + "key": "IMMICH_DOMAIN", + "value": "", + "required": "true" + }, + { + "description": "Please add Immich timezone:", + "key": "IMMICH_TZ", + "value": "Europe/Budapest", + "required": "true" + }, + { + "description": "Please add Immich version:", + "key": "IMMICH_VERSION", + "value": "version", + "required": "true" + }, + { + "description": "Please add Immich redis password:", + "key": "IMMICH_REDIS_PASSWORD", + "value": "", + "required": "true", + "generated": "" + }, + { + "description": "Please add Immich postgres password:", + "key": "IMMICH_POSTGRES_PASSWORD", + "value": "", + "required": "true", + "generated": "" + }, + { + "description": "POSTGRES database name", + "key": "POSTGRES_DATABASE_NAME", + "value": "", + "required": "true", + "generated": "random|md5|8" + }, + { + "description": "POSTGRES username", + "key": "POSTGRES_USERNAME", + "value": "", + "required": "true", + "generated": "random|md5|8" + }, + { + "description": "POSTGRES password for user", + "key": "POSTGRESDB_PASSWORD", + "value": "", + "required": "true", + "generated": "random|md5|12" + }, + { + "description": "POSTGRES root user password", + "key": "POSTGRESDB_PASSWORD", + "value": "", + "required": "true", + "generated": "random|sha256|20" + } + ] +} \ No newline at end of file