Skip to main content

Immich LXC Setup with External Storage and Backup Strategy

OverviewÜberblick

Immich waswurde installedmithilfe usingder the Proxmox Community Scripts, which resulted in a fully functional LXC container without issues.
After the initial setup, the container configurationinstalliert, was adjustedzu toeinem providevoll sufficientfunktionsfähigen storageLXC-Container capacityohne forProbleme photos and videos, as the default container disk size is not suitable for long-term media storage.führte.

TheNach solutionder isinitialen basedEinrichtung onwurde mappingdie Immich’sContainer-Konfiguration uploadangepasst, directoryum toausreichend aSpeicherkapazität für Fotos und Videos bereitzustellen, da die Standard-Container-Disk-Größe für langfristige Medienspeicherung nicht geeignet ist.

Die Lösung basiert darauf, das Immich-Upload-Verzeichnis auf ein dedicatedseparates largegroßes storageSpeichervolume volumezu mappen und Backups außerhalb der standardmäßigen Proxmox-Container-Backups andzu handling backups outside of Proxmox’s standard container backups.handhaben.


StorageSpeicherlayout Layoutund and Mount Mount-Point

Immich Upload DirectoryUpload-Verzeichnis

Immich storesspeichert allalle uploadedhochgeladenen mediaMedien inim thefolgenden followingVerzeichnis directoryinnerhalb insidedes the container:Containers:

/opt/immich/upload/

ToUm avoidzu fillingverhindern, updass thedas container’sRoot-Dateisystem rootdes filesystem,Containers thisvoll directoryläuft, iswird mappeddieses toVerzeichnis aauf einen separateseparaten mountMount-Point pointgemappt, backedder byvon aeinem largergrößeren diskDatenträger (e.g.z. ZFSB. storageZFS-Speicher onauf thedem ProxmoxProxmox-Host) host).unterstützt wird.


Mount Point Migration ProcedureMount-Point-Migrationsprozedur

1. BackupBestehendes ExistingUpload-Verzeichnis Upload Directorysichern

BeforeBevor changingetwas anything,geändert logwird, intoin theden Immich Immich-LXC andeinloggen createund aein backupBackup ofdes thebestehenden existingUpload-Verzeichnisses upload directory:erstellen:

cp -a /opt/immich/upload /opt/immich/upload.backup

ThisDadurch ensuresbleiben thedie originalursprüngliche folderOrdnerstruktur structureund andalle anyvorhandenen existingDateien files are preserved.erhalten.


2. CreateMount-Point anderstellen Mapund the Mount Pointmappen

OnAuf thedem Proxmox host:Proxmox-Host:

    CreateEin aneues newSpeichervolume storage volumeerstellen (e.g.z. ZFSB. datasetZFS-Dataset oroder subvolume)Subvolume) withmit sufficientausreichend capacity.Kapazität. MapDieses thisVolume volumein into theden LXC at:mappen unter:
    /opt/immich/upload/
    

    ThisDadurch replaceswird thedas originalursprüngliche directoryVerzeichnis withdurch theden externalexternen storage.Speicher ersetzt.


    3. RestoreInhalte Directorydes ContentsVerzeichnisses wiederherstellen

    AfterNachdem theder mountMount-Point pointim isContainer activeaktiv inside the container:ist:

    cp -a /opt/immich/upload.backup/* /opt/immich/upload/
    

    ThisDas guaranteesstellt thatsicher, dass Immich findsdie theerwartete directoryVerzeichnisstruktur structure it expects.vorfindet.


    4. FixEigentümer Ownershipund andBerechtigungen Permissionskorrigieren

    Immich requiresbenötigt, thedass uploaddas directoryUpload-Verzeichnis todem beBenutzer ownedimmich by the immich user:gehört:

    chown -R immich:immich /opt/immich/upload
    

    FailingWird todas donicht thisgemacht, maykönnen leadUpload-Fehler tooder uploadfehlende errors or missing mediaMedien in theder UI.Oberfläche auftreten.


    Backup ConsiderationsBackup-Überlegungen (Important)wichtig)

    ⚠ Proxmox Datacenter Backups

    TheDer mappedgemappte mountMount-Point pointwird is not includednicht in regularden Proxmoxregulären containerProxmox-Container-Backups backups.berücksichtigt.

    ThisDas isist expectednormales behaviorVerhalten andund mustmuss beexplizit handledgehandhabt explicitly.werden.


    Backup StrategyBackup-Strategie

    Restic + rclone (WebDAV)

    Die Backups arewerden handledunabhängig independently ofvon Proxmox usingmit thefolgendem followingStack stack:umgesetzt:

      restic forfür versioned,versionierte, encryptedverschlüsselte backupsBackups rclone asals theTransport-Layer transport layerWebDAV asals the remote storage backend as it is the easiest to be used inside LXCsRemote-Speicher-Backend (Iam think)einfachsten nutzbar innerhalb von LXCs)

      ThisDieser approachAnsatz provides:bietet:

        Encrypted,Verschlüsselte, deduplicateddeduplizierte backupsBackups IndependenceUnabhängigkeit fromvon containerContainer-Snapshots snapshotsFeingranulare Kontrolle über Retention und Zeitplanung Fine-grainedEinfache controlWiederherstellungen overohne retentionProxmox-Beteiligung and schedulingEasy restores without Proxmox involvement

        OnlyNur theder externalexterne uploadUpload-Speicher storagemuss needsgesichert towerden; beder backedContainer up;selbst thekann containerjederzeit itselfneu canaufgebaut be rebuilt at any time.werden.


        Design RationaleDesign-Begründung

          LargeGroße mediaMediendaten datasind isvom decoupledContainer from the containerentkoppelt ContainerContainer-Neuinstallationen rebuilds aresind trivial Backups aresind reliable,zuverlässig, explicit,explizit andund auditablenachvollziehbar StorageSpeicherwachstum growtherfordert doeskein notResizing requiredes LXC resizing

          ThisDieses setupSetup alignspasst wellsehr withgut long-termzur photolangfristigen libraryVerwaltung managementeiner andFotobibliothek avoidsund commonvermeidet pitfallsgängige withFallstricke container-basedbei mediacontainerbasierten applications.Medienanwendungen.