I
Immich2mo ago
Jay

Verify my Immich docker compose: gpu+traefik

Hello everybody, I'm setting up a new server and I have decided to install Immich onto it. Tech stack: OS Debian testing - Linux minibip 6.16.11+deb14-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.16.11-1 (2025-10-07) x86_64 GNU/Linux
Distributor ID: Debian
Description: Debian GNU/Linux forky/sid
Release: n/a
Codename: forky
Distributor ID: Debian
Description: Debian GNU/Linux forky/sid
Release: n/a
Codename: forky
GPU
$ nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 4060 Ti
$ nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 4060 Ti
NVIDIA-SMI 550.163.01 Driver Version: 550.163.01 CUDA Version: 12.4
NVIDIA-SMI 550.163.01 Driver Version: 550.163.01 CUDA Version: 12.4
Software stack * I run everything in Portainer, using the attached docker compose file * I have other containers running with no issues and some of them (ollama) use the GPU with no issue -> so I KNOW for sure my GPU is accessible through Docker. My question Can someone check my Docker Compose file? (in attachment) Particularly when it comes to the GPU settings. I have tried to inline the GPU part inside the immich-machine-learning container, and I'm wondering whether I did it correctly. I am wondering this because I am uploading a bunch of pics to my server, I see the CPU working a lot, but the GPU is as lazy as a French public employee on a Friday at 15h30 (it's a joke, don't kill me, also I'm French, so I'm allowed 😈 ) Thank you in advance for your help ❤️ (edited, see attachment below in this message https://discord.com/channels/979116623879368755/1433497252042772530/1433505591602446396 )
28 Replies
Immich
Immich2mo ago
:wave: Hey @Jay, 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. :blue_square: 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. Successfully submitted, a tag has been added to inform contributors. :white_check_mark:
Mraedis
Mraedis2mo ago
Why did you rename everything? Why are the domains for the images changed ? Just because you are French does not mean you need to commit debauchery. 👀
Jay
JayOP2mo ago
Oh I did a swipe of anonimization before posting here My dumb AI renamed all URLs but obviously I'm using the stock docker images I'm gonna respost the docker compose with the correct URLs pointing to correct images.
Mraedis
Mraedis2mo ago
I'm more asking about the need to rename all the services You are aware we use these names to communicate between containers?
Jay
JayOP2mo ago
There it is sorry for this initial docker compose code which was clearly messed 😭
Jay
JayOP2mo ago
Yep yep 100%
Mraedis
Mraedis2mo ago
Your ML container image is not cuda ghcr.io/immich-app/immich-machine-learning:release -> ghcr.io/immich-app/immich-machine-learning:release-cuda
Jay
JayOP2mo ago
I'm gonna test this right now! Thank you very much for your reply ❤️
Jay
JayOP2mo ago
In the logs of the container "immich_machine_learning", I get this
[10/30/25 17:26:50] INFO Starting gunicorn 23.0.0
[10/30/25 17:26:50] INFO Listening at: http://[::]:3003 (83)

[10/30/25 17:26:53] INFO Started server process [84]

[10/30/25 17:26:53] INFO Waiting for application startup.

[10/30/25 17:26:53] INFO Created in-memory cache with unloading after 300s

of inactivity.

[10/30/25 17:26:53] INFO Initialized request thread pool with 56 threads.

[10/30/25 17:26:53] INFO Application startup complete.
[10/30/25 17:26:50] INFO Starting gunicorn 23.0.0
[10/30/25 17:26:50] INFO Listening at: http://[::]:3003 (83)

[10/30/25 17:26:53] INFO Started server process [84]

[10/30/25 17:26:53] INFO Waiting for application startup.

[10/30/25 17:26:53] INFO Created in-memory cache with unloading after 300s

of inactivity.

[10/30/25 17:26:53] INFO Initialized request thread pool with 56 threads.

[10/30/25 17:26:53] INFO Application startup complete.
In the meantime my nvidia-smi is perfectly doing nothing
Every 0,1s: nvidia-smi minibip: Thu Oct 30 18:30:21 2025

Thu Oct 30 18:30:21 2025

| NVIDIA-SMI 550.163.01 Driver Version: 550.163.01 CUDA Version: 12.4 |

| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |

| 0 NVIDIA GeForce RTX 4060 Ti Off | 00000000:02:00.0 Off | N/A |
| 0% 38C P8 6W / 165W | 2MiB / 16380MiB | 0% Default |
| | | N/A |


| No running processes found |
Every 0,1s: nvidia-smi minibip: Thu Oct 30 18:30:21 2025

Thu Oct 30 18:30:21 2025

| NVIDIA-SMI 550.163.01 Driver Version: 550.163.01 CUDA Version: 12.4 |

| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |

| 0 NVIDIA GeForce RTX 4060 Ti Off | 00000000:02:00.0 Off | N/A |
| 0% 38C P8 6W / 165W | 2MiB / 16380MiB | 0% Default |
| | | N/A |


| No running processes found |
(I edited a little bit, otherwise it wouldn't fit here) For reference I have attached the updated docker compose I think the GPU is still not used And the immich_machine_learning container clearly sees 56 cores which correspeonds to my CPUs (2x23cores)
Mraedis
Mraedis2mo ago
Alright what jobs are you running that you expect the GPU to be doing right now?
Jay
JayOP2mo ago
I am expecting the face detection/recognition to be offloaded to the GPU 👉 👈
Mraedis
Mraedis2mo ago
Okay but are they running? 😛
Jay
JayOP2mo ago
Seems like it
root 703836 703628 0 18:26 ? 00:00:00 python -m gunicorn immich_ml.main:app -k immich_ml.config.CustomUvicornWorker -c /usr/src/immich_ml/gunicorn_conf.py -b [::]:3003 -w 1 -t 300 --log-config-json /usr/src/immich_ml/log_conf.json --keep-alive 2 --graceful-timeout 10

root 703890 703836 2 18:26 ? 00:00:15 python -m gunicorn immich_ml.main:app -k immich_ml.config.CustomUvicornWorker -c /usr/src/immich_ml/gunicorn_conf.py -b [::]:3003 -w 1 -t 300 --log-config-json /usr/src/immich_ml/log_conf.json --keep-alive 2 --graceful-timeout 10
root 703836 703628 0 18:26 ? 00:00:00 python -m gunicorn immich_ml.main:app -k immich_ml.config.CustomUvicornWorker -c /usr/src/immich_ml/gunicorn_conf.py -b [::]:3003 -w 1 -t 300 --log-config-json /usr/src/immich_ml/log_conf.json --keep-alive 2 --graceful-timeout 10

root 703890 703836 2 18:26 ? 00:00:15 python -m gunicorn immich_ml.main:app -k immich_ml.config.CustomUvicornWorker -c /usr/src/immich_ml/gunicorn_conf.py -b [::]:3003 -w 1 -t 300 --log-config-json /usr/src/immich_ml/log_conf.json --keep-alive 2 --graceful-timeout 10
Mraedis
Mraedis2mo ago
that's not how you check the jobs lol https://my.immich.app/admin/jobs-status If your ML container receives a job it should show something like:
[10/22/25 10:33:44] INFO Loading textual model 'ViT-B-16-SigLIP-384__webli'
to memory
[10/22/25 10:33:44] INFO Setting execution providers to
['CPUExecutionProvider'], in descending order of
preference
[10/22/25 12:35:00] INFO Loading visual model 'ViT-B-16-SigLIP-384__webli'
to memory
[10/22/25 12:35:00] INFO Setting execution providers to
['CPUExecutionProvider'], in descending order of
preference
[10/22/25 12:35:02] INFO Loading detection model 'antelopev2' to memory
[10/22/25 12:35:02] INFO Setting execution providers to
['CPUExecutionProvider'], in descending order of
preference
[10/22/25 12:35:02] INFO Loading recognition model 'antelopev2' to memory
[10/22/25 12:35:02] INFO Setting execution providers to
['CPUExecutionProvider'], in descending order of
preference
[10/22/25 10:33:44] INFO Loading textual model 'ViT-B-16-SigLIP-384__webli'
to memory
[10/22/25 10:33:44] INFO Setting execution providers to
['CPUExecutionProvider'], in descending order of
preference
[10/22/25 12:35:00] INFO Loading visual model 'ViT-B-16-SigLIP-384__webli'
to memory
[10/22/25 12:35:00] INFO Setting execution providers to
['CPUExecutionProvider'], in descending order of
preference
[10/22/25 12:35:02] INFO Loading detection model 'antelopev2' to memory
[10/22/25 12:35:02] INFO Setting execution providers to
['CPUExecutionProvider'], in descending order of
preference
[10/22/25 12:35:02] INFO Loading recognition model 'antelopev2' to memory
[10/22/25 12:35:02] INFO Setting execution providers to
['CPUExecutionProvider'], in descending order of
preference
But in your case, in addition to CPUExecuptionProvider it would show GPU
Jay
JayOP2mo ago
Alright
Jay
JayOP2mo ago
I'm not sure I got what this is supposed to do I click on "save", then the button displayed "Saved!" And then what?
No description
Mraedis
Mraedis2mo ago
That's for creating external share links and the likes Otherwise, how would the application know what URL you're hosting on? 🙂
Jay
JayOP2mo ago
I really struggle to understand this * "External share links"? To share what? With whom? * "How the application know what URL I'm hosting on"? You mean so that I can create shareable links such as https/mydomain.com/fweofjewjo-fewfewlkfew-fwefwefw to share pics with other people? But why do I need this right now? I mean, I'm not trying to share anything
Mraedis
Mraedis2mo ago
Oh sorry I misread the screenshot, I thought you were way past that @Jay You set that to whatever URL you're using for Immich right now It simply sets a cookie / redirect so if I share an my.immich.app link with you it translates that to your local URL You could also just navigate to /admin/jobs-status yourself of course
Jay
JayOP2mo ago
Ok I think I'm gonna wait a little bit Pics and vids are being uploaded I'm guessing ML stuff/GPU stuff will happen afterwards Thanks again for your help
No description
Jay
JayOP2mo ago
(I couldn't screenshot the whole jobs page -> it's way too long 😅 )
Mraedis
Mraedis2mo ago
mmm that or they were interrupted with restarting and whatnot If you're feeling adventurous just click missing on all the jobs
Jay
JayOP2mo ago
For now it's not doing anything
No description
Jay
JayOP2mo ago
Just did that It adds "1" to the waiting counters 🤷‍♂️ But I'm gonna be patient Stuff is still being uploaded
Mraedis
Mraedis2mo ago
It could still be done already 😛 If you want to be sure just run any smart search, so just some text in the search bar The message about the model being loaded should at the very least pop up in the docker logs
Jay
JayOP2mo ago
It's doing this 🤔 And the transcoding, at least, is for sure not being run on the GPU (which is fine I guess 🤔 it has nothing to do with the ML part)
No description
No description
No description
Jay
JayOP2mo ago
OKi, I will do that 😊
Mraedis
Mraedis2mo ago
transcoding happens on the immich_server container and you don't currently have that set for GPU (And honestly the CPU quality is better)

Did you find this page helpful?