Volume Binding Issue: Immich Using Container Space Instead of Host Directory. At my witts end...
I'm having an issue where my Immich container uses internal NVMe space instead of the specified ZFS-backed directory for volume binding.
Setup:
Host OS: Proxmox
Uploads: /mnt/matkopool/ImmichUploads (ZFS, sufficient space)
Docker Compose:
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
.env: UPLOAD_LOCATION=/mnt/matkopool/ImmichUploads
Issue:
Files created in the container (/usr/src/app/upload) don’t sync with the host directory or vice versa.
Tried:
Verified permissions, remounted, re-created the container, and checked AppArmor.
docker inspect confirms the binding looks correct.
Immich version: v1.124.2.
Question: Why is the volume binding not working as expected? Any help would be appreciated!
10 Replies
:wave: Hey @vorpalveil,
Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:.
References
- Container Logs:
docker compose logs
docs
- Container Status: docker ps -a
docs
- Reverse Proxy: https://immich.app/docs/administration/reverse-proxy
- Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJAChecklist
I have...
1. :ballot_box_with_check: verified I'm on the latest release(note that mobile app releases may take some time).
2. :ballot_box_with_check: read applicable release notes.
3. :ballot_box_with_check: reviewed the FAQs for known issues.
4. :ballot_box_with_check: reviewed Github for known issues.
5. :ballot_box_with_check: tried accessing Immich via local ip (without a custom reverse proxy).
6. :ballot_box_with_check: uploaded the relevant information (see below).
7. :blue_square: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable
(an item can be marked as "complete" by reacting with the appropriate number)
Information
In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider:
- Your docker-compose.yml and .env files.
- Logs from all the containers and their status (see above).
- All the troubleshooting steps you've tried so far.
- Any recent changes you've made to Immich or your system.
- Details about your system (both software/OS and hardware).
- Details about your storage (filesystems, type of disks, output of commands like
fdisk -l
and df -h
).
- The version of the Immich server, mobile app, and other relevant pieces.
- Any other information that you think might be relevant.
Please paste files and logs with proper code formatting, and especially avoid blurry screenshots.
Without the right information we can't work out what the problem is. Help us help you ;)
If this ticket can be closed you can use the /close
command, and re-open it later if needed.GitHub
immich-app immich · Discussions
Explore the GitHub Discussions forum for immich-app immich. Discuss code, ask questions & collaborate with the developer community.
FAQ | Immich
User
GitHub
Issues · immich-app/immich
High performance self-hosted photo and video management solution. - Issues · immich-app/immich
how are you running it in proxmox?
looks like LXC, which we don't recommend, one of the big reasons is issues like this. mounting in LXC and passing through to docker is not trivial, and is not an immich related issue unfortunately
we would recommend a full VM
Or, in other words, if you can make the following command succeed, we can easily help you with the immich portion:
docker run -v /mnt/matkopool/ImmichUploads:/test alpine touch /test/success
Just to add extra information:
docker ps -a
Output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09f69b239370 ghcr.io/immich-app/immich-server:release "tini -- /bin/bash s…" 5 days ago Up 43 hours (healthy) 0.0.0.0:2284->2283/tcp, [::]:2284->2283/tcp immich_server
1654907779b3 tensorchord/pgvecto-rs:pg14-v0.2.0 "docker-entrypoint.s…" 5 days ago Up 43 hours (healthy) 5432/tcp immich_postgres
b11f4f748d7f redis:6.2-alpine "docker-entrypoint.s…" 5 days ago Up 43 hours (healthy) 6379/tcp immich_redis
b0f16fd1d8d8 ghcr.io/immich-app/immich-machine-learning:release "tini -- ./start.sh" 5 days ago Up 43 hours (healthy) immich_machine_learning
aa85ba022ca1 hello-world "/hello" 9 days ago Exited (0) 9 days ago stoic_wiles
3015369bd5f7 hello-world "/hello" 9 days ago Exited (0) 9 days ago pensive_hopper
Docker inspect Immich Container elevant snippet:
System Details
Host OS: Proxmox VE 7.4
Hardware:
CPU: Intel Xeon
Storage: 3x 14.6TB HDDs in ZFS pool, 3.6TB NVMe
Filesystems:
ZFS for /mnt/matkopool
Ext4 for NVMe /mnt/immich-db
Output of df -h:
Filesystem Size Used Avail Use% Mounted on
udev 16G 0 16G 0% /dev
tmpfs 3.1G 2.1M 3.1G 1% /run
/dev/mapper/pve-root 94G 3.9G 86G 5% /
tmpfs 16G 46M 16G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
efivarfs 128K 35K 89K 29% /sys/firmware/efi/efivars
/dev/nvme0n1p2 1022M 12M 1011M 2% /boot/efi
/dev/mapper/pve-immich--db 147G 12K 140G 1% /mnt/immich-db
matkopool/Immich 29T 256K 29T 1% /mnt/matkopool/Immich
matkopool/ImmichUploads 29T 256K 29T 1% /mnt/matkopool/ImmichUploads
matkopool 29T 256K 29T 1% /matkopool
matkopool/Nextcloud 29T 1.1G 29T 1% /mnt/matkopool/Nextcloud
matkopool/media/Music 29T 128K 29T 1% /mnt/matkopool/media/Music
matkopool/Backups 29T 128K 29T 1% /matkopool/Backups
matkopool/VMs 29T 128K 29T 1% /matkopool/VMs
matkopool/media 29T 256K 29T 1% /matkopool/media
matkopool/Photos 29T 128K 29T 1% /matkopool/Photos
matkopool/Temp 29T 128K 29T 1% /matkopool/Temp
matkopool/media/TVShows 29T 128K 29T 1% /matkopool/media/TVShows
matkopool/media/movies 29T 128K 29T 1% /matkopool/media/movies
/dev/fuse 128M 20K 128M 1% /etc/pve
tmpfs 3.1G 0 3.1G 0% /run/user/0
Troubleshooting Steps
Verified permissions:
ls -ld /mnt/matkopool/ImmichUploads
drwxrwxr-x 2 root root 7 Jan 26 16:23 /mnt/matkopool/ImmichUploads
Tried creating test files on both the host and container:
On host: /mnt/matkopool/ImmichUploads
On container: /usr/src/app/upload
Files don’t sync between host and container.
Uninstalled AppArmor to rule out restrictions.
Re-created the container with fresh mounts and configurations.
Immich Version
Server: v1.124.2
Mobile App: Latest as of 2025-01-26
Thank you for your response, Zeus!
Yes, I am running it in an LXC. I had no idea that a VM would have been a better option. I’ve put quite a lot of energy into this setup, and while I don’t mind starting over to rebuild everything, it would be great if we could make it work within the current setup as well.
Good news: your command worked! (You can see it’s been a busy construction site with all the test files there. 😄)
You need to check for those files on the host
Not in the LXC
Either way, this is like exactly why we say not to use LXC
Proxmox also says not to mix LXC and docker
So it’s technically possible but you’re basically in your own
I couldnt run that command on the host, because I have installed docker on a privileged container. I see now, that that might have further complicated things for me. So I should just go with a VM, intsall docker there and proceed with the usual steps. Would that be your suggestion at this point?
And again, thank you.
You should run docker in the guest, then look for the file in the mount point on the proxmox host
Isnt that the issue? Its not showing up on the host?
Either way, yes -- install a VM, install docker in that
Yes, that's exactly the issue, and you’re right—I should have looked for the file on the host.
As expected, it’s not showing up. I’ll go ahead and try this with a VM instead. I’m very excited to have this working properly!
Cheers!
for a VM, you will have to pick a filesystem mount of some kind - most people use NFS
you should store the postgres database local in the VM
I will make sure to do so!