120 lines
3.3 KiB
HCL
120 lines
3.3 KiB
HCL
module "photoprism" {
|
|
source = "./service"
|
|
|
|
name = "photoprism"
|
|
image = "photoprism/photoprism:240711"
|
|
image_pull_timeout = "10m"
|
|
# constraints = [{
|
|
# attribute = "$${meta.hw_transcode.type}"
|
|
# # operator = "is_set"
|
|
# value = "raspberry"
|
|
# }]
|
|
priority = 60
|
|
|
|
# docker_devices = [{
|
|
# host_path = "$${meta.hw_transcode.device}"
|
|
# container_path = "$${meta.hw_transcode.device}"
|
|
# }]
|
|
resources = {
|
|
cpu = 1500
|
|
memory = 2200
|
|
memory_max = 4000
|
|
}
|
|
sticky_disk = true
|
|
host_volumes = [
|
|
{
|
|
name = "photoprism-storage"
|
|
dest = "/photoprism-storage"
|
|
read_only = false
|
|
},
|
|
{
|
|
name = "photoprism-media"
|
|
dest = "/photoprism-media"
|
|
read_only = false
|
|
},
|
|
]
|
|
|
|
ingress = true
|
|
service_port = 2342
|
|
use_wesher = var.use_wesher
|
|
|
|
mysql_bootstrap = {
|
|
enabled = true
|
|
}
|
|
|
|
oidc_client_config = {
|
|
description = "Photoprism"
|
|
redirect_uris = [
|
|
"https://photoprism.thefij.rocks/api/v1/oidc/redirect",
|
|
]
|
|
scopes = ["openid", "email", "profile"]
|
|
}
|
|
|
|
env = {
|
|
PHOTOPRISM_DEBUG = true
|
|
# UI
|
|
PHOTOPRISM_SITE_CAPTION = "AI-Powered Photos App"
|
|
PHOTOPRISM_SITE_DESCRIPTION = "Fijolek home photos"
|
|
PHOTOPRISM_SITE_TITLE = "PhotoPrism"
|
|
PHOTOPRISM_SITE_URL = "https://photoprism.${var.base_hostname}/"
|
|
PHOTOPRISM_SPONSOR = "true"
|
|
# Worker config
|
|
PHOTOPRISM_WORKERS = 2
|
|
PHOTOPRISM_BACKUP_DATABASE = false
|
|
# Paths
|
|
PHOTOPRISM_ORIGINALS_PATH = "/photoprism-media/Library"
|
|
PHOTOPRISM_IMPORT_PATH = "/photoprism-media/Import"
|
|
PHOTOPRISM_STORAGE_PATH = "/photoprism-storage" # Storage PATH for generated files like cache and thumbnails
|
|
# Unix permissions
|
|
PHOTOPRISM_UID = 500
|
|
PHOTOPRISM_GID = 100
|
|
PHOTOPRISM_UMASK = 0000
|
|
# OIDC
|
|
PHOTOPRISM_OIDC_URI = "https://authelia.thefij.rocks"
|
|
PHOTOPRISM_OIDC_PROVIDER = "Authelia"
|
|
PHOTOPRISM_OIDC_REGISTER = true
|
|
PHOTOPRISM_OIDC_REDIRECT = true
|
|
PHOTOPRISM_OIDC_SCOPES = "openid email profile"
|
|
}
|
|
|
|
templates = [
|
|
{
|
|
data = <<EOF
|
|
{{ with nomadVar "nomad/jobs/photoprism" -}}
|
|
PHOTOPRISM_ADMIN_USER={{ .admin_user }}
|
|
PHOTOPRISM_ADMIN_PASSWORD={{ .admin_password }}
|
|
PHOTOPRISM_DATABASE_DRIVER=mysql
|
|
PHOTOPRISM_DATABASE_NAME={{ .db_name }}
|
|
PHOTOPRISM_DATABASE_USER={{ .db_user }}
|
|
PHOTOPRISM_DATABASE_PASSWORD={{ .db_pass }}
|
|
PHOTOPRISM_DATABASE_SERVER=127.0.0.1:3306
|
|
{{- end }}
|
|
{{ if eq (env "meta.hw_transcode.type") "raspberry" -}}
|
|
PHOTOPRISM_FFMPEG_ENCODER=raspberry
|
|
PHOTOPRISM_FFMPEG_BUFFERS=64
|
|
{{ else if eq (env "meta.hw_transcode.type") "intel" -}}
|
|
PHOTOPRISM_FFMPEG_ENCODER=intel
|
|
PHOTOPRISM_INIT="intel tensorflow"
|
|
{{- end }}
|
|
{{ with nomadVar "secrets/authelia/photoprism" -}}
|
|
PHOTOPRISM_OIDC_CLIENT={{ .client_id }}
|
|
PHOTOPRISM_OIDC_SECRET={{ .secret }}
|
|
{{- end }}
|
|
EOF
|
|
dest_prefix = "$${NOMAD_SECRETS_DIR}/"
|
|
dest = "env"
|
|
env = true
|
|
mount = false
|
|
},
|
|
]
|
|
|
|
actions = [
|
|
{
|
|
name = "import"
|
|
command = "photoprism"
|
|
args = ["import", "/photoprism-media/Import"]
|
|
cron = "0 0 3 * * * *"
|
|
},
|
|
]
|
|
}
|