diff --git a/stacks/immich/frame.tf b/stacks/immich/frame.tf index 1e0420ee..878a63bc 100644 --- a/stacks/immich/frame.tf +++ b/stacks/immich/frame.tf @@ -64,7 +64,7 @@ resource "kubernetes_deployment" "immich-frame" { } spec { container { - image = "ghcr.io/immichframe/immichframe:1.7.4" + image = "ghcr.io/immichframe/immichframe:v1.0.32.0" name = "immich-frame" resources { requests = { diff --git a/stacks/immich/main.tf b/stacks/immich/main.tf index 46f6008c..6865a1f6 100644 --- a/stacks/immich/main.tf +++ b/stacks/immich/main.tf @@ -284,10 +284,10 @@ resource "kubernetes_deployment" "immich_server" { resources { requests = { cpu = "100m" - memory = "1700Mi" + memory = "2000Mi" } limits = { - memory = "2500Mi" + memory = "3500Mi" } } } @@ -422,22 +422,56 @@ resource "kubernetes_deployment" "immich-postgres" { } env { name = "DB_STORAGE_TYPE" - value = "HDD" + value = "SSD" } volume_mount { name = "postgresql-persistent-storage" mount_path = "/var/lib/postgresql/data" } + lifecycle { + post_start { + exec { + command = ["/bin/sh", "-c", <<-EOT + # Wait for PG to accept connections, then prewarm vector search tables + for i in $(seq 1 60); do + if pg_isready -U postgres > /dev/null 2>&1; then + psql -U postgres -d immich -c "CREATE EXTENSION IF NOT EXISTS pg_prewarm; SELECT pg_prewarm('smart_search'); SELECT pg_prewarm('clip_index');" > /dev/null 2>&1 + break + fi + sleep 1 + done + EOT + ] + } + } + } resources { requests = { - cpu = "50m" - memory = "1Gi" + cpu = "100m" + memory = "2Gi" } limits = { - memory = "1Gi" + memory = "2Gi" } } } + init_container { + name = "write-pg-override-conf" + image = "busybox:1.36" + command = ["sh", "-c", <<-EOT + cat > /data/postgresql.override.conf <<'PGCONF' + # Immich vector search performance tuning + shared_buffers = 1024MB + effective_cache_size = 1536MB + work_mem = 64MB + PGCONF + EOT + ] + volume_mount { + name = "postgresql-persistent-storage" + mount_path = "/data" + } + } volume { name = "postgresql-persistent-storage" persistent_volume_claim { @@ -646,6 +680,7 @@ module "ingress-immich" { rybbit_site_id = "35eedb7a3d2b" skip_default_rate_limit = true extra_middlewares = ["traefik-immich-rate-limit@kubernetescrd"] + anti_ai_scraping = false extra_annotations = { "gethomepage.dev/enabled" = "true" "gethomepage.dev/description" = "Photos library" diff --git a/stacks/traefik/modules/traefik/middleware.tf b/stacks/traefik/modules/traefik/middleware.tf index 73755a21..553e10f2 100644 --- a/stacks/traefik/modules/traefik/middleware.tf +++ b/stacks/traefik/modules/traefik/middleware.tf @@ -244,8 +244,8 @@ resource "kubernetes_manifest" "middleware_immich_rate_limit" { } spec = { rateLimit = { - average = 100 - burst = 1000 + average = 200 + burst = 2000 } } }