summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-01 09:27:42 +0300
committerPaul Buetow <paul@buetow.org>2026-04-01 09:27:42 +0300
commitec78722499cf3c7d6efeb30c11e7c85dc6ce45a1 (patch)
treeb59c40b979a6385723a8b4109531f90793b6fd5f
parent7085794ccd0425950ab8f118319c7c80e524f41b (diff)
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 <amp@ampcode.com>
-rw-r--r--f3s/argocd-apps/services/immich.yaml24
-rw-r--r--f3s/immich/helm-chart/templates/persistent-volume.yaml70
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