From ec78722499cf3c7d6efeb30c11e7c85dc6ce45a1 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 1 Apr 2026 09:27:42 +0300 Subject: immich: per-user external library mounts with RO/RW separation Amp-Thread-ID: https://ampcode.com/threads/T-019d47a3-2deb-75c3-8a75-b0f39006a35d Co-authored-by: Amp --- f3s/argocd-apps/services/immich.yaml | 24 +++++++- .../helm-chart/templates/persistent-volume.yaml | 70 ++++++++++++++++++++-- 2 files changed, 85 insertions(+), 9 deletions(-) diff --git a/f3s/argocd-apps/services/immich.yaml b/f3s/argocd-apps/services/immich.yaml index 3b279a9..98a69e4 100644 --- a/f3s/argocd-apps/services/immich.yaml +++ b/f3s/argocd-apps/services/immich.yaml @@ -41,12 +41,30 @@ spec: image: tag: v2.5.5 persistence: - external: + ext-albena-rw: enabled: true type: persistentVolumeClaim - existingClaim: immich-external-library-pvc + existingClaim: immich-ext-albena-pvc globalMounts: - - path: /external + - path: /external-albena-rw + ext-paul-rw: + enabled: true + type: persistentVolumeClaim + existingClaim: immich-ext-paul-pvc + globalMounts: + - path: /external-paul-rw + ext-videos-rw: + enabled: true + type: persistentVolumeClaim + existingClaim: immich-ext-videos-pvc + globalMounts: + - path: /external-videos-rw + ext-videos-ro: + enabled: true + type: persistentVolumeClaim + existingClaim: immich-ext-videos-pvc + globalMounts: + - path: /external-videos-ro readOnly: true ingress: main: diff --git a/f3s/immich/helm-chart/templates/persistent-volume.yaml b/f3s/immich/helm-chart/templates/persistent-volume.yaml index 542bf5c..9a406a0 100644 --- a/f3s/immich/helm-chart/templates/persistent-volume.yaml +++ b/f3s/immich/helm-chart/templates/persistent-volume.yaml @@ -114,31 +114,89 @@ spec: requests: storage: 20Gi --- -# Immich External Library +# Immich External Library - Albena (RW) apiVersion: v1 kind: PersistentVolume metadata: - name: immich-external-library-pv + name: immich-ext-albena-pv +spec: + capacity: + storage: 200Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + hostPath: + path: /data/nfs/k3svolumes/immich/external-library/albena + type: Directory +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: immich-ext-albena-pvc + namespace: services +spec: + storageClassName: "" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 200Gi +--- +# Immich External Library - Paul (RW) +apiVersion: v1 +kind: PersistentVolume +metadata: + name: immich-ext-paul-pv +spec: + capacity: + storage: 200Gi + volumeMode: Filesystem + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + hostPath: + path: /data/nfs/k3svolumes/immich/external-library/paul + type: Directory +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: immich-ext-paul-pvc + namespace: services +spec: + storageClassName: "" + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 200Gi +--- +# Immich External Library - Videos (RW for paul, mounted RO for albena) +apiVersion: v1 +kind: PersistentVolume +metadata: + name: immich-ext-videos-pv spec: capacity: storage: 500Gi volumeMode: Filesystem accessModes: - - ReadOnlyMany + - ReadWriteOnce persistentVolumeReclaimPolicy: Retain hostPath: - path: /data/nfs/k3svolumes/immich/external-library + path: /data/nfs/k3svolumes/immich/external-library/videos type: Directory --- apiVersion: v1 kind: PersistentVolumeClaim metadata: - name: immich-external-library-pvc + name: immich-ext-videos-pvc namespace: services spec: storageClassName: "" accessModes: - - ReadOnlyMany + - ReadWriteOnce resources: requests: storage: 500Gi -- cgit v1.2.3