Custom locations not respected

I'm trying to separate where immich uploads photos from the rest of the data needed to run the application, thus I've followed the instructions https://immich.app/docs/guides/custom-locations/. The problem is when I start my docker container it seems to ignore the custom locations, recreates all the subdirectories where UPLOAD_LOCATION is specified, then errors because it can't find one of the .immich files:
immich_server | [Nest] 7 - 03/05/2025, 1:14:26 AM ERROR [Microservices:StorageService] Failed to read upload/library/.immich: Error: ENOENT: no such file or directory, open 'upload/library/.immich'
immich_server | [Nest] 7 - 03/05/2025, 1:14:26 AM ERROR [Microservices:StorageService] Failed to read upload/library/.immich: Error: ENOENT: no such file or directory, open 'upload/library/.immich'
12 Replies
Immich
Immich2mo ago
:wave: Hey @PickleRick, 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_01GY0DAKGXDEHE263BCAYEGFJA Checklist 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. :ballot_box_with_check: 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.
PickleRick
PickleRickOP2mo ago
env file:
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=/pool1/photos/immich
THUMB_LOCATION=/pool1/immich/thumbs
ENCODED_VIDEO_LOCATION=/pool1/immich/encoded-video
PROFILE_LOCATION=/pool1/immich/profile
BACKUP_LOCATION=/pool1/immich/backups
# The location where your database files are stored
DB_DATA_LOCATION=/pool1/docker/config/immich

# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
TZ=redacted

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release

# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=redacted

# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables

# The location where your uploaded files are stored
UPLOAD_LOCATION=/pool1/photos/immich
THUMB_LOCATION=/pool1/immich/thumbs
ENCODED_VIDEO_LOCATION=/pool1/immich/encoded-video
PROFILE_LOCATION=/pool1/immich/profile
BACKUP_LOCATION=/pool1/immich/backups
# The location where your database files are stored
DB_DATA_LOCATION=/pool1/docker/config/immich

# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
TZ=redacted

# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release

# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=redacted

# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
docker-compose
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
user: "981:978"
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- ${THUMB_LOCATION}:/usr/src/app/upload/thumbs
- ${ENCODED_VIDEO_LOCATION}:/usr/src/app/upload/encoded-video
- ${PROFILE_LOCATION}:/usr/src/app/upload/profile
- ${BACKUP_LOCATION}:/usr/src/app/upload/backups
- /etc/localtime:/etc/localtime:ro
- /pool1/photos:/mnt/media/photos:ro
- /pool1/sftp:/mnt/media/photos2:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
user: "981:978"
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- ${THUMB_LOCATION}:/usr/src/app/upload/thumbs
- ${ENCODED_VIDEO_LOCATION}:/usr/src/app/upload/encoded-video
- ${PROFILE_LOCATION}:/usr/src/app/upload/profile
- ${BACKUP_LOCATION}:/usr/src/app/upload/backups
- /etc/localtime:/etc/localtime:ro
- /pool1/photos:/mnt/media/photos:ro
- /pool1/sftp:/mnt/media/photos2:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
sudo tree -apu /pool1/immich
[drwxr-xr-x immich ] /pool1/immich
├── [drwxrwxr-x immich ] backups
│   └── [-rwxrwxr-x immich ] .immich
├── [drwxrwxr-x immich ] encoded-video
│   └── [-rwxrwxr-x immich ] .immich
├── [-rw-r--r-- immich ] .immich
├── [drwxrwxr-x immich ] library
│   └── [-rw-r--r-- immich ] .immich
├── [drwxrwxr-x immich ] profile
│   └── [-rwxrwxr-x immich ] .immich
├── [drwx------ immich ] thumbs
└── [drwxrwxr-x immich ] upload
├── [-rwxrwxr-x immich ] .immich
└── [drwxr-xr-x immich ] library
└── [-rw-r--r-- immich ] .immich
sudo tree -apu /pool1/immich
[drwxr-xr-x immich ] /pool1/immich
├── [drwxrwxr-x immich ] backups
│   └── [-rwxrwxr-x immich ] .immich
├── [drwxrwxr-x immich ] encoded-video
│   └── [-rwxrwxr-x immich ] .immich
├── [-rw-r--r-- immich ] .immich
├── [drwxrwxr-x immich ] library
│   └── [-rw-r--r-- immich ] .immich
├── [drwxrwxr-x immich ] profile
│   └── [-rwxrwxr-x immich ] .immich
├── [drwx------ immich ] thumbs
└── [drwxrwxr-x immich ] upload
├── [-rwxrwxr-x immich ] .immich
└── [drwxr-xr-x immich ] library
└── [-rw-r--r-- immich ] .immich
"immich" is the name of the user the containers are executing under if we go look at the "upload" location, you can see folders and .immich files missing, which would generate the error. But it shouldn't matter if it's actually following the configuration
sudo tree -apu /pool1/photos/immich
[drwxrwxr-x immich ] /pool1/photos/immich
├── [drwxr-xr-x root ] backups
├── [drwxr-xr-x root ] encoded-video
├── [-rw-rw-r-- immich ] .immich
├── [drwxr-xr-x root ] profile
└── [drwxr-xr-x root ] thumbs
sudo tree -apu /pool1/photos/immich
[drwxrwxr-x immich ] /pool1/photos/immich
├── [drwxr-xr-x root ] backups
├── [drwxr-xr-x root ] encoded-video
├── [-rw-rw-r-- immich ] .immich
├── [drwxr-xr-x root ] profile
└── [drwxr-xr-x root ] thumbs
Immich
Immich2mo ago
Successfully submitted, a tag has been added to inform contributors. :white_check_mark:
Zeus
Zeus2mo ago
It does matter because you need to move the old folders to the new location Immich realizes that files are missing
PickleRick
PickleRickOP2mo ago
sorry, what matters?
Zeus
Zeus2mo ago
You said "it shouldnt matter if its following the config"
PickleRick
PickleRickOP2mo ago
so immich needs the directory structure in two locations, even with custom locations?
Zeus
Zeus2mo ago
The config would expect a file at /pool1/photos/immich/library/.immich , which is missing No, it just needs it in the place you mapped it to Oh, the empty directories are a docker thing, not immich When you make nested bind mounts there will be an empty folder in the source
PickleRick
PickleRickOP2mo ago
i think i see the issue, it's actually compllaining about a file that's supposed to be there, even if it is using the custom mounts. it's complaining about where the upload folder should be, derp. I guess I got distracted by the empty directories being created alright, this still isn't working
[drwxrwxr-- immich ] /pool1/photos/immich
├── [drwxrwxr-- root ] backups
├── [drwxrwxr-- root ] encoded-video
├── [-rwxrwxr-- immich ] .immich
├── [drwxrwxr-- root ] profile
├── [drwxrwxr-- root ] thumbs
└── [drwxrwxr-- immich ] upload
└── [drwxrwxr-- immich ] library
└── [-rwxrwxr-- immich ] .immich
[drwxrwxr-- immich ] /pool1/photos/immich
├── [drwxrwxr-- root ] backups
├── [drwxrwxr-- root ] encoded-video
├── [-rwxrwxr-- immich ] .immich
├── [drwxrwxr-- root ] profile
├── [drwxrwxr-- root ] thumbs
└── [drwxrwxr-- immich ] upload
└── [drwxrwxr-- immich ] library
└── [-rwxrwxr-- immich ] .immich
immich_server | [Nest] 7 - 03/05/2025, 1:44:41 AM LOG [Microservices:StorageService] Verifying system mount folder checks, current state: {"mountChecks":{"thumbs":true,"upload":true,"backups":true,"library":true,"profile":true,"encoded-video":true}}
immich_server | [Nest] 7 - 03/05/2025, 1:44:41 AM ERROR [Microservices:StorageService] Failed to read upload/library/.immich: Error: ENOENT: no such file or directory, open 'upload/library/.immich'
immich_server | microservices worker error: Error: Failed to read "<UPLOAD_LOCATION>/library/.immich - Please see https://immich.app/docs/administration/system-integrity#folder-checks for more information.", stack: Error: Failed to read "<UPLOAD_LOCATION>/library/.immich - Please see https://immich.app/docs/administration/system-integrity#folder-checks for more information."
immich_server | [Nest] 7 - 03/05/2025, 1:44:41 AM LOG [Microservices:StorageService] Verifying system mount folder checks, current state: {"mountChecks":{"thumbs":true,"upload":true,"backups":true,"library":true,"profile":true,"encoded-video":true}}
immich_server | [Nest] 7 - 03/05/2025, 1:44:41 AM ERROR [Microservices:StorageService] Failed to read upload/library/.immich: Error: ENOENT: no such file or directory, open 'upload/library/.immich'
immich_server | microservices worker error: Error: Failed to read "<UPLOAD_LOCATION>/library/.immich - Please see https://immich.app/docs/administration/system-integrity#folder-checks for more information.", stack: Error: Failed to read "<UPLOAD_LOCATION>/library/.immich - Please see https://immich.app/docs/administration/system-integrity#folder-checks for more information."
Zeus
Zeus2mo ago
Library does not go in upload I gave the path above
PickleRick
PickleRickOP2mo ago
alright, looks like i've got it solved i didn't RTFM hard enough thanks for the help
Immich
Immich2mo ago
This thread has been closed. To re-open, use the button below.

Did you find this page helpful?