Storage template folder in docker
I have immich installed on truenas at the moment and I can specify where to put the upload folder, the storage template folder, where to keep profiles, configs, thumbs, encoded? videos, etc... I'd like to move it to a VM running docker as the NAS has not enough performance for face recognition, encoding, etc but I can't find a way to configure each folder (ideally I want most of them to point as the NAS, either with cifs volumes on docker or pointing at folders mounted locally with fstab) since I don't have storage for everything in the docker VM.
Normally I'd just check the location of the various folders in the container and configure it accordingly, but the docker compose provided looks quite weird and unusual to me where there's a lot of things marked as "do not change" and so on.
19 Replies
:wave: Hey @Bard,
Thanks for reaching out to us. Please follow the recommended actions below; 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 compose ps
docs
- Reverse Proxy: https://immich.app/docs/administration/reverse-proxy
Checklist
1. :ballot_box_with_check: I have verified I'm on the latest release(note that mobile app releases may take some time).
2. :ballot_box_with_check: I have read applicable release notes.
3. :ballot_box_with_check: I have reviewed the FAQs for known issues.
4. :ballot_box_with_check: I have reviewed Github for known issues.
5. :ballot_box_with_check: I have tried accessing Immich via local ip (without a custom reverse proxy).
6. :ballot_box_with_check: I have uploaded the relevant logs, docker compose, and .env files, making sure to use code formatting.
7. :ballot_box_with_check: I have 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)
If this ticket can be closed you can use the /close
command, and re-open it later if needed.
Successfully submitted, a tag has been added to inform contributors. :white_check_mark:nice that solves 90% of it... what about the storage template location?
in Truenas I have "Immich Uploads Storage" for the uploads and "Immich Library Storage" where stuff gets moved when the Storage Template gets applied
Those are covered in there
is it the note below where it talks about the library?
in the list I only see Upload, Thumb, Encoded, Profile, Backup
I'm confused.. well I'll try deploying it like that and see, maybe I'm just being dumb
yes
Thanks! I'll give it a try later and close this if it works π
took me a while to try but everything worked, thanks!
Hey @Bard Iβm trying to do the same thing and am getting a little confused, would you mind sending me your docker compose yaml and .env that you got working so I can cross check to see what Iβm doing wrong?
I want to set all mounts to my nas along with setting a specific mount path for the config file too.
Hi @a ant sorry for the delay, didn't have access to the docker files until today π
In the docker compose I only changed the ".env" entries to "stack.env" since I'm using portainer, but otherwise it's untouched. Then I mounted the root of the share of my NAS that I use for app storage using fstab in /mnt/nas_service and I edited the .env file (renamed stack.env) adding the various folder entries like this:
UPLOAD_LOCATION=/mnt/nas_service/Apps/Immich/photos
THUMB_LOCATION=/mnt/nas_service/Apps/Immich/thumbs
ENCODED_VIDEO_LOCATION=/mnt/nas_service/Apps/Immich/encoded-video
PROFILE_LOCATION=/mnt/nas_service/Apps/Immich/profile
BACKUP_LOCATION=/mnt/nas_service/Apps/Immich/backups
DB_DATA_LOCATION=/configs/immich/postgres
As a note, I also tried putting photos on a different share than everything else, so at first I tried something like this:
UPLOAD_LOCATION=/mnt/nas_storage/Photos
THUMB_LOCATION=/mnt/nas_service/Apps/Immich/thumbs
ENCODED_VIDEO_LOCATION=/mnt/nas_service/Apps/Immich/encoded-video
PROFILE_LOCATION=/mnt/nas_service/Apps/Immich/profile
BACKUP_LOCATION=/mnt/nas_service/Apps/Immich/backups
but for some reason it didn't work and just put everything inside the nas_storage/Photos folder. Not sure if I did something wrong or if it is just not possible, but I didn't care enough to try and find out π
Thank you!
Every time I try to change the mounts in the env file all directories get created under the upload directory and ignore my mount locations for thumbs, profiles etc
It sort of sounds like you are just adding env vars without changing the compose
The vars themself are meaningless and only used with matching mounts in the compose
this is my compose for the immich server
``
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
extends:
file: ${HWACCEL_TRANSCODING} #hwaccel.transcoding.yml
service: nvenc #set to one of [cpu, nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
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
#- ${IMMICH_CONFIG_FILE}:/usr/src/app/config/immich.json
- ${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
- /mnt/hdd/data/media/photos:/mnt/hdd/data/media/photos #external directory read
- /mnt/hdd/docker/immich/config
- /mnt/hdd/docker/immich/config:/usr/src/app #config directory read
env_file:
- .env
ports:
- 2283:2283
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
#
#
```
and my .env
The location where your database files are stored
DB_DATA_LOCATION=/mnt/hdd/docker/immich/postgresdata
config file
IMMICH_CONFIG_FILE=/mnt/hdd/docker/immich/config/immich.json
additional immich hostpaths
UPLOAD_LOCATION=/mnt/hdd/docker/immich/upload
THUMB_LOCATION=/mnt/hdd/docker/immich/thumbs
ENCODED_VIDEO_LOCATION=/mnt/hdd/docker/immich/encodedvideo
PROFILE_LOCATION=/mnt/hdd/docker/immich/profile
BACKUP_LOCATION=/mnt/hdd/docker/immich/backups
To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list:
TZ=Europle/London
You should NOT be mounting /usr/src/app
Where did you read that lol
ha sorry i think i was probbaly messing with the compose at some point to get it to work
but does the rest look correct?
Please use code blocks itβs very hard to read
The full compose and env
one sec trying to figure out how to paste code blocks
compose