#Immich won't read external library
1 messages ยท Page 1 of 1 (latest)
This is the path to your external library I assume? /mnt/media:/Matrexx:ro ?
Yes
what is the relationship of your D drive with /mnt/media on your Windows?
the left handside is the path on your machine
the right handside of the colon is the path in the container
<path-on-your-machine>:<path-in-container>
like so
Yes, I advise remove the space of External Libraries or use "D:/External Libraies:/Matrexx:ro"
is this supposed to be a forward slash
you have space in your directory name
so you should put them around double quote
as shown above
i thought you did that just to highlight it
is this right
i changed folder name accordingly
and external path name
this is my import path on my user
matrexx is a folder inside external libraries
or does it have to show the whole thing
external path would be /Matrexx
this is wrong
the left hand size is D:/ExternalLibraries
the right handside is /Matrexx
but i want to have a subfolder
the right handside is the starting mount in the container
should i do D::ExternalLibraries:ro
so in the container you can access the subfolder with /Matrexx/Matrexx
I suggesst the value would be D:/ExternalLibraries:/mnt/libraries:ro
what does mnt libraries represent
So the external path setting would be /mnt/libraries
just the mount path you specifies as /mnt/libraries
but it is what the container see
the container doesn't see D:/ExternalLibraries
/mnt/libraries is an example, you can pick anything you want
does it just represent a folder inside external libraries
it represents the folder inside the docker's container
so these
basically you tell docker to "hey, mmount this D drive location into mnt/libraries path inside the container so Immich can read it"
so i have to create a folder called mnt/libraries?
it will automatically create it for you when you spin up the containers
Alright
and you said i can call mnt libraries anything
mnt represents mount
that cant be changed correct?
just a directory, it can be changed to anything
it is a common convention for Linux related system to specify the mount point starting with /mnt
so your USB can be mounted into something like /mnt/usb1
no worry
thanks for the help i greatly appreciate it
Docker has some good documentation on the internet that can help cement these concepts
okay wil look into it
let's say you are specifing the volume as D:/ExternalLibrabies:/mnt/libraies:ro
then in your external path it would be /mnt/libraies
and when you setup a new library, it would be /mnt/libraies/Matrexx
in admin page?
in the admin page it would be /mnt/libraies
nvm yeah docker compose
right ok
giving it a shot
okat
gtg, shout to the general-dicussion if you can't figure it out, other folks can help as well
could you tell me how you made it to work. I tried both / and \ slash. amount path with just /LaptopPhotos:ro , /mnt/LaptopPhotos:ro etc. Restarted my docker but it still didn't work
what is the value you put in for the user's external path setting in the admin panel?
/mnt/LaptopPhotos
This is the one currently I have setup.
Can you capture that screenshot?
as well as the screenshot for the external library path?
can you help capture the screenshot of the user's setting as well?
I tried without exclusion pattern as well
THat screenshot is from my account(administrator)-->Account settings
will take screenshots one moment
No, in the administration page > User > click on the pencil icon, there is an external path entry there
Yep, you will have to fill in that entry as well
thanks
THanks. If I am adding multiple folders in compose yml file, which path to add here?
/mnt/LaptopPhotos
I selected that. and also all three options. but still below job shows 0
Can you check the log of the microservices container?
You said you restart the container
I think that won't register the changes
try to bring stop/bring down the containers
then bring them backup
yes i stopped and then started using this option
right side top corner buttons
Now can you go into the microservices container, meaning going into the shell
and check if you can see the folder at /mnt/LaptopPhotos?
Mount has only these two
i tried to search the log for LaptopPhotos under Logs and Inspect. it doesn't have anything
So the container doesn't actually registered the changes you made in your docker-compose file
I don't use docker for windows so I am not sure
try to delete the stack and bring them back up
sorry i am not familiar with docker or web hosting. which one to delete?
and how do i bring it back after deletion?
delete everything?
yeah, those are just the container, the persistent data stay in tack
if you see any option ask you to delete the VOLUME, say no
I had my photos imported from my phone. Will they be affected or will I end up importing the phone photos again? like facial recognizaiton jobs of my phone photos are already completed. will they be affected due to this deletion?
those are kept in the database volume, which is persisted regardless of the container removal
I deleted ๐คฃ
now try to bring them backup
yes
can you find out which is line 35?
change \ to /
same error
originally it had like this
34 to 36 was commented out. I uncommented to add NVDA hard decoding
as per this note https://immich.app/docs/features/hardware-transcoding
This feature allows you to use a GPU or Intel Quick Sync to accelerate transcoding and reduce CPU load.
you need to have it on the same indentation with the word image above
yaml is space/indentation sensitive
should i replace like 34 like below?
copy pasted image sytax to extends
I don't know if this correct
Can you post the content of your docker-compose file?
version: "3.8"
#
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
command: [ "start.sh", "immich" ]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
- D:/Fun/Photos:/mnt/LaptopPhotos:ro
env_file:
- .env
ports:
- 2283:3001
depends_on:
- redis
- database
- typesense
restart: always
immich-microservices:
container_name: immich_microservices
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
extends:
file: hwaccel.yml
service: hwaccel
command: [ "start.sh", "microservices" ]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
- D:/Fun/Photos:/mnt/LaptopPhotos:ro
env_file:
- .env
depends_on:
- redis
- database
- typesense
restart: always
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
typesense:
container_name: immich_typesense
image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd
environment:
- TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
- TYPESENSE_DATA_DIR=/data
# remove this to get debug messages
- GLOG_minloglevel=1
volumes:
- tsdata:/data
restart: always
redis:
container_name: immich_redis
image: redis:6.2-alpine@sha256:80cc8518800438c684a53ed829c621c94afd1087aaeb59b0d4343ed3e7bcf6c5
restart: always
database:
container_name: immich_postgres
image: postgres:14-alpine@sha256:50d9be76e9a90da4c781554955e0ffc79d9d5c4226838e64b36aacc97cbc35ad
env_file:
- .env
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
volumes:
pgdata:
model-cache:
tsdata:
copy this and try again
try docker compose up -d
should i remove the space on 36 and 37 to bring to extends level?
No, those are child properties of the extends grtoup
same error
sec
version: "3.8"
#
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
command: [ "start.sh", "immich" ]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
- D:/Fun/Photos:/mnt/LaptopPhotos:ro
env_file:
- .env
ports:
- 2283:3001
depends_on:
- redis
- database
- typesense
restart: always
immich-microservices:
container_name: immich_microservices
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
extends:
file: hwaccel.yml
service: hwaccel
command: [ "start.sh", "microservices" ]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
- D:/Fun/Photos:/mnt/LaptopPhotos:ro
env_file:
- .env
depends_on:
- redis
- database
- typesense
restart: always
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
typesense:
container_name: immich_typesense
image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd
environment:
- TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
- TYPESENSE_DATA_DIR=/data
# remove this to get debug messages
- GLOG_minloglevel=1
volumes:
- tsdata:/data
restart: always
redis:
container_name: immich_redis
image: redis:6.2-alpine@sha256:80cc8518800438c684a53ed829c621c94afd1087aaeb59b0d4343ed3e7bcf6c5
restart: always
database:
container_name: immich_postgres
image: postgres:14-alpine@sha256:50d9be76e9a90da4c781554955e0ffc79d9d5c4226838e64b36aacc97cbc35ad
env_file:
- .env
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
volumes:
pgdata:
model-cache:
tsdata:
now try this
i added # to 35 to 37 like the original file and its running now
But tech note says 35 to 37 is needed for NVDA transcoding ๐ฆ
Did you have hwaccel.yml file in the folder?
pretty sure the indentation is wrong with that file when you modified it
if i add back, its coming back with same error
so must be something with 35 to 37
version: "3.8"
# Hardware acceleration for transcoding - Optional
# This is only needed if you want to use hardware acceleration for transcoding.
# Depending on your hardware, you should uncomment the relevant lines below.
services:
hwaccel:
# devices:
# - /dev/dri:/dev/dri # If using Intel QuickSync or VAAPI
# volumes:
# - /usr/lib/wsl:/usr/lib/wsl # If using VAAPI in WSL2
environment:
- NVIDIA_DRIVER_CAPABILITIES=all # If using NVIDIA GPU
# - LD_LIBRARY_PATH=/usr/lib/wsl/lib # If using VAAPI in WSL2
# - LIBVA_DRIVER_NAME=d3d12 # If using VAAPI in WSL2
deploy: # Uncomment this section if using NVIDIA GPU
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu,video]
Here is the new content for the hwaccel.yml file
this worked ๐
let me try to scan the folder
Library scan also working now
Great!
Thanks a lot for your time
One last question ๐
if I want to add more external paths, I shoudl edit the composer file correct?
but which one should be updated under user account settings?
because it has only one option
here only one option
that would be the root the mount, does it make sense
so you woulh mount D:/Fun instead
if I add another external library called /mnt/LaptopAnotherPhoto
oh. SO if my photos sitting under E:\Photos what happens then?
can you elaborate?
do I need to bring all my photos under one Parent folder?
yes
Mean
Now I mapped D:\Fun\Photos
But if I want to do the same with C:\photos, it seems it won't work?
is it?
for the same user?
yes
each user can only have 1 parent path get mounted for external library
oh okay. Got it.
then in the parent folder, you can have different subfolder and specified as different library
will it allow me to amount C:/Fun/Photos:/mnt/LaptopPhotos/anotherDrive:ro
so I can load both C drive and D drive photos together in my user?
D:/Fun/Photos:/mnt/LaptopPhotos:ro
C:/Fun/Photos:/mnt/LaptopPhotos/anotherDrive:ro
both together?
I haven't try this scenario yet, feel free to try
Hello chaps, just wondering if you have some time to help a complete newbie to Immich - I'm trying to configure Immich (set up on a Pi 4 to recognise (and scan successfully) photos on an external USB hard drive. The path of the photos on the hard drive on the OS is:
media/mwraspberrypi/Backup/Pictures/Pictures
so in my docker-compose file, I've got: -
${UPLOAD_LOCATION}:/usr/src/app/upload
-
- /mnt/media/mwraspberrypi/Backup/Pictures/Pictures:ro
In my env file, I've also set this HDD to be the upload location as follows:
(comment) The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/media/mwraspebrrypi/Backup/immich_library
and further down in this file as
UPLOAD_LOCATION=/mnt/media/mwraspberrypi/Backup/immich_library
Finally, in the immich setup, I've tried to add an external library and to set the correct path as the image shows
However, Immich doesn't find the images in the above photos folder when scanning
Any pointers would be much appreciated, thanks for your time!
can you post the content of the docker-compose file?
that "+" should be removed
volume mount should be - /mnt/media/mwraspberrypi/Backup/Pictures/Pictures:/mnt/library:ro
Ah OK - thank you!
use /mnt/library as the value of the user's external path
and the path of the external library
Hi again @civic turret just checking my understanding: under 'volumes', UPLOAD_LOCATION, the path to the left of the colon (:) is the mount point in the OS and to the left is the mount point in the container. So I'm mapping my external HD to where the library is located inside the 2 containers (immich_server and immich_microservices). Do I also need to add anything information about the external HD in the 'volumes' section of the immich_proxy container?
Also do I need to mirror the above mapping for UPLOAD_LOCATION in the .env file?
Thanks again for your time, appreciate the support as I learn all this!
No you don't need to add it to the proxy or env file.
Hello again people - just wondering whether - in order for Immich to scan images successfully - the location where external library files are stored needs to have read-write-execute (full) permissions? If this was an NTFS formatted drive, is there an extra step needed for Immich to be able to scan the contents?
I think I've followed all the steps including checking that the immich_server and immich_microservices can 'see' the location I've mapped (/mnt/library mapped to a folder on a test USB drive) but it's still not 'seeing' the files in Immich
This is what the container can 'see' at /mnt/library
This is the external path of the user in Immich
This is the external path of the new library in Immich
How I've set it up in docker-compose
Finally this is the actual path in the filesytem
Many, many thanks in advance and apologies if you were about to make a cup of tea and really didn't need the interruption
TLDR: I'm trying to add the images within an external usb drive at /media/mwraspberrypi/2GB/immich_test_gallery (mapped to /mnt/library in the container) to the gallery and can't work out what's missing to get it to see these images.
try without the /mnt @formal pivot