job "immich" { datacenters = ["homelab"] priority = 50 type = "service" meta { forcedeploy = "0" } constraint { attribute = "${attr.cpu.arch}" value = "amd64" } group "immich" { network { mode = "host" port "http" { to = 2283 } port "redis" { to = 6379 } port "machinelearning" { to = 3003 } } volume "immich-upload" { type = "csi" source = "immich-upload" access_mode = "multi-node-multi-writer" attachment_mode = "file-system" } volume "immich-cache" { type = "csi" source = "immich-cache" access_mode = "multi-node-multi-writer" attachment_mode = "file-system" } volume "photo" { type = "csi" source = "photo" access_mode = "multi-node-multi-writer" attachment_mode = "file-system" } vault { policies = ["immich"] } task "immich-server" { driver = "docker" service { name = "immich" port = "http" tags = [ "homer.enable=true", "homer.name=immich", "homer.service=Application", "homer.logo=https://immich.ducamps.eu/favicon-144.png", "homer.target=_blank", "homer.url=https://immich.ducamps.eu", "traefik.enable=true", "traefik.http.routers.${NOMAD_JOB_NAME}.rule=Host(`${NOMAD_JOB_NAME}.ducamps.eu`)", "traefik.http.routers.${NOMAD_JOB_NAME}.tls.domains[0].sans=${NOMAD_JOB_NAME}.ducamps.eu", "traefik.http.routers.${NOMAD_JOB_NAME}.tls.certresolver=myresolver", "traefik.http.routers.${NOMAD_JOB_NAME}.entrypoints=web,websecure", ] } volume_mount { volume = "immich-upload" destination = "/usr/src/app/upload" } volume_mount { volume = "photo" destination = "/photo" } config { image = "ghcr.service.consul:5000/immich-app/immich-server:release" ports = ["http"] volumes = [ "/etc/localtime:/etc/localtime" ] } template { data = <