From cc26c13cac833ecaf062b5accadfa9ebde4dc713 Mon Sep 17 00:00:00 2001 From: Yan Lin Date: Sat, 14 Feb 2026 07:31:29 +0100 Subject: [PATCH] move immich container to nfss --- config/immich.nix | 2 +- hosts/nixos/nfss/containers.nix | 78 ++++++++++++++++++++++++++++ hosts/nixos/nfss/system.nix | 9 ++++ hosts/nixos/thinkpad/containers.nix | 79 ----------------------------- hosts/nixos/vps/proxy.nix | 2 +- 5 files changed, 89 insertions(+), 81 deletions(-) diff --git a/config/immich.nix b/config/immich.nix index 445d2fe..5c16bbc 100644 --- a/config/immich.nix +++ b/config/immich.nix @@ -7,7 +7,7 @@ ffmpeg = { accel = "qsv"; - accelDecode = false; + accelDecode = true; acceptedAudioCodecs = [ "aac" "mp3" "libopus" "pcm_s16le" ]; acceptedContainers = [ "mov" "ogg" "webm" ]; diff --git a/hosts/nixos/nfss/containers.nix b/hosts/nixos/nfss/containers.nix index df850f1..27c8529 100644 --- a/hosts/nixos/nfss/containers.nix +++ b/hosts/nixos/nfss/containers.nix @@ -10,5 +10,83 @@ in # Container definitions for nfss host virtualisation.oci-containers.containers = { + # Immich photo and video backup system + immich = { + image = "ghcr.io/imagegenius/immich:latest"; + + volumes = [ + "/var/lib/immich/config:/config" + "/var/lib/immich/int-lib:/photos" + # "/mnt/essd/DCIM:/ext-lib:ro" + "${immichConfigFile}:/config/immich.json:ro" + ]; + + environment = { + PUID = commonUID; + PGID = commonGID; + TZ = systemTZ; + # Point to the mounted config file + IMMICH_CONFIG_FILE = "/config/immich.json"; + # Database connection (keep as env vars for security) + DB_HOSTNAME = "immich-db"; + DB_USERNAME = "postgres"; + DB_PASSWORD = "postgres"; + DB_DATABASE_NAME = "postgres"; + DB_PORT = "5432"; + # Redis connection + REDIS_HOSTNAME = "immich-redis"; + REDIS_PORT = "6379"; + # Machine Learning server (internal) + MACHINE_LEARNING_HOST = "0.0.0.0"; + MACHINE_LEARNING_PORT = "3003"; + MACHINE_LEARNING_WORKERS = "1"; + MACHINE_LEARNING_WORKER_TIMEOUT = "120"; + }; + + ports = [ + "8080:8080" + ]; + + extraOptions = [ + "--network=podman" + "--device=/dev/dri:/dev/dri" # Hardware acceleration + ]; + + dependsOn = [ "immich-db" "immich-redis" ]; + autoStart = true; + }; + + # PostgreSQL database for Immich with vector extension + immich-db = { + image = "docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0"; + + volumes = [ + "/var/lib/immich/db:/var/lib/postgresql/data" + ]; + + environment = { + POSTGRES_PASSWORD = "postgres"; + POSTGRES_USER = "postgres"; + POSTGRES_DB = "postgres"; + }; + + extraOptions = [ + "--network=podman" + ]; + + autoStart = true; + }; + + # Redis cache for Immich + immich-redis = { + image = "docker.io/redis:7.2-alpine"; + + extraOptions = [ + "--network=podman" + ]; + + autoStart = true; + }; + }; } diff --git a/hosts/nixos/nfss/system.nix b/hosts/nixos/nfss/system.nix index 8dcdb6c..bf3d4fe 100644 --- a/hosts/nixos/nfss/system.nix +++ b/hosts/nixos/nfss/system.nix @@ -41,6 +41,15 @@ "zfs.zfs_arc_min=2147483648" # 2GB min ARC size ]; + fileSystems."/mnt/essd" = { + device = "/dev/disk/by-uuid/20251dfb-f99a-4393-8c9e-0bb26d04b718"; + fsType = "ext4"; + }; + + systemd.tmpfiles.rules = [ + "d /mnt/essd 0755 yanlin users -" + ]; + # Network configuration networking = { hostName = "nfss"; diff --git a/hosts/nixos/thinkpad/containers.nix b/hosts/nixos/thinkpad/containers.nix index bc04604..08521cd 100644 --- a/hosts/nixos/thinkpad/containers.nix +++ b/hosts/nixos/thinkpad/containers.nix @@ -19,84 +19,5 @@ in # Container definitions for thinkpad host virtualisation.oci-containers.containers = { - # Immich photo and video backup system - immich = { - image = "ghcr.io/imagegenius/immich:latest"; - - volumes = [ - "/var/lib/immich/config:/config" - "/var/lib/immich/int-lib:/photos" - "/home/yanlin/DCIM:/ext-lib" - # Mount the declarative config file - "${immichConfigFile}:/config/immich.json:ro" - ]; - - environment = { - PUID = commonUID; - PGID = commonGID; - TZ = systemTZ; - # Point to the mounted config file - IMMICH_CONFIG_FILE = "/config/immich.json"; - # Database connection (keep as env vars for security) - DB_HOSTNAME = "immich-db"; - DB_USERNAME = "postgres"; - DB_PASSWORD = "postgres"; - DB_DATABASE_NAME = "postgres"; - DB_PORT = "5432"; - # Redis connection - REDIS_HOSTNAME = "immich-redis"; - REDIS_PORT = "6379"; - # Machine Learning server (internal) - MACHINE_LEARNING_HOST = "0.0.0.0"; - MACHINE_LEARNING_PORT = "3003"; - MACHINE_LEARNING_WORKERS = "1"; - MACHINE_LEARNING_WORKER_TIMEOUT = "120"; - }; - - ports = [ - "5000:8080" - ]; - - extraOptions = [ - "--network=podman" - "--device=/dev/dri:/dev/dri" # Hardware acceleration - ]; - - dependsOn = [ "immich-db" "immich-redis" ]; - autoStart = true; - }; - - # PostgreSQL database for Immich with vector extension - immich-db = { - image = "docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0"; - - volumes = [ - "/var/lib/immich/db:/var/lib/postgresql/data" - ]; - - environment = { - POSTGRES_PASSWORD = "postgres"; - POSTGRES_USER = "postgres"; - POSTGRES_DB = "postgres"; - }; - - extraOptions = [ - "--network=podman" - ]; - - autoStart = true; - }; - - # Redis cache for Immich - immich-redis = { - image = "docker.io/redis:7.2-alpine"; - - extraOptions = [ - "--network=podman" - ]; - - autoStart = true; - }; - }; } diff --git a/hosts/nixos/vps/proxy.nix b/hosts/nixos/vps/proxy.nix index a3af4c7..272dc73 100644 --- a/hosts/nixos/vps/proxy.nix +++ b/hosts/nixos/vps/proxy.nix @@ -34,7 +34,7 @@ photo = { loadBalancer = { servers = [{ - url = "http://thinkpad.yanlincs.com:5000"; + url = "http://nfss.yanlincs.com:8080"; }]; serversTransport = "longTimeout@file"; };