Cannot install Immich on TrueNAS 25.04.2.6 - service "permissions" didn't complete successfully: exit 255

Hi everyone - sorry for the newbie question, but I’m having trouble installing immich.

I’ve worked through the instructions to set up the custom datasets, permission them correctly (e.g. setting the pdData owner to netdata etc), as described in the community set up guide. However, when I try to install, it fails with the following in the app_lifecycle.log:

[2026/04/27 21:34:41] (ERROR) app_lifecycle.compose_action():56 - Failed ‘up’ action for ‘immich’ app: Network ix-internal-immich-immich-net Creating
Network ix-internal-immich-immich-net Created
Container ix-immich-permissions-1 Creating
Container ix-immich-permissions-1 Created
Container ix-immich-redis-1 Creating
Container ix-immich-pgvecto_upgrade-1 Creating
Container ix-immich-redis-1 Created
Container ix-immich-pgvecto_upgrade-1 Created
Container ix-immich-pgvecto-1 Creating
Container ix-immich-pgvecto-1 Created
Container ix-immich-server-1 Creating
Container ix-immich-server-1 Created
Container ix-immich-permissions-1 Starting
Container ix-immich-permissions-1 Started
Container ix-immich-permissions-1 Waiting
Container ix-immich-permissions-1 Waiting
Container ix-immich-permissions-1 service “permissions” didn’t complete successfully: exit 255
Container ix-immich-permissions-1 service “permissions” didn’t complete successfully: exit 255
service “permissions” didn’t complete successfully: exit 255

Clearly this suggests a permissions issue, but I’ve also tried installing it leaving everything with its default value (except the passwords) - i.e. with the datasets being created (and permissioned) automatically - “ixVolume (Dataset created automatically by the system)”

That doesn’t work either (exactly the same error).

Does anyone know what might be wrong here please?

The immich version is:

App Version: v2.7.5

Version: 1.14.16

Thank you in advance.

aer you using hostpaths for storage and give user 999 (netdata) permissions on the postgres dataset? Postgress needs permissions for that user, otherwise it won’t install and run

I tried that first - i.e. for pgData setting the owner user and group to netdata. It still gave the error above though.

Then I tried just leaving the default in the install settings, so that it would setup and permission the storage automatically (i.e. the “ixVolume (Dataset created automatically by the system)” setting, for both the data path and postgres storage). That still gave me the same error though.

I’ve actually just upgraded TrueNAS to 25.10.3 - Goldeye. I still get the same error when trying to install immich.

Thinking further, is there a way to look inside the ix-immich-permissions-1container, for example to examine its logs to determine at which point its failing, or otherwise to monitor its execution? The app_lifeycle log only confirms that execution fails, not the underlying reason why.

I believe you are encountering the issue where the webui will not let you look at the logs when the app stack is constantly “deploying” (crashing)

from the CLI you can see running containers with sudo docker ps

and once you know the name you can do sudo docker logs ix-immich-permissions-1 or simialr from the CLI to view the last run of the container.

If the container isn’t running you cant inspect its logs.

You may be able to find someting in the app_lifecycle logfile

sudo cat /var/log/app_lifecycle.log

I tried the sudo docker logs ix-immich-permissions-1command from a shell window while simultaneously running the install, to try to intercept the logs while the container was running. (There’s the added problem that TrueNAS cleans up after a failed install, so the container doesn’t exist at all once the failure occurs).

The output was as follows:

root@truenas[/]# docker logs ix-immich-permissions-1
exec /usr/local/bin/python3: input/output error
exec /usr/local/bin/python3: input/output error

… is it looking for python3 in the right place? On my install, it’s /usr/bin/python3, not /usr/local/bin/python3?

e.g.

root@truenas[/]# /usr/bin/python3
Python 3.11.9 (tags/TS-24.10.1-dirty:2f51941, Apr 13 2026, 18:05:17) [GCC 12.2.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.

Compare to:

root@truenas[/]# /usr/local/bin/python3
zsh: no such file or directory: /usr/local/bin/python3

Also:

root@truenas[/]# where python
/bin/python
/usr/bin/python

the container image can have python in a different place to the host…

one thing, can you screenshot what the permissions are currently?
I believe you stated you were trying to use ixvolume so it would inherit the properties of the pool’s root dataset.. then again your error suggests the container’s entrypoint is bailing well before it’s able to touch user files.

the properties I’m particularly interested:
is exec on?
is ACL mode set to restricted instead of passthrough?
is there a reasonable amount of free-space?
the permissions at the moment, which you will have to ls using the cli if you are using ixvolume.

just as a recommendation… I would suggest never using ixvolume and creating your own datasets because it makes troubleshooting and maintenance annoying.

Understood - thank you. I tried it first with my own datasets but couldn’t get it to work, so tried the ixvolume route as I figured if that didn’t work then something else was wrong.

I’ll try again with the host path route and report back with the permissions.

I tried recreating the two datasets (pgData and data). Still the same issue. Permissions below:

IMMICH/data:

IMMICH/pgData:

You want netdata/docker. The User/Group names don’t really matter but they need UID:GID 999:999. Right now you have 999:997.

Alternatively you also should be able to create a pgData dataset and not touch permissions then click the Automatic Permissions checkbox in the app configuration form.

Thanks. I tried deleting pgData, recreating it, and then ticking the Automatic Permissions checkbox … still no joy.

Interestingly, when I looked back at the permissions for pgData after trying that, the ownership was still root/root - so it looks like the installer hadn’t got as far as changing the ownership (or couldn’t change the owner for some reason).

I then tried changing the owner/group via bash to 999/999 (showing as netdata/docker in the UI). Still no luck - same error on install.

Does anyone know where I can find the source code/content of the ix-immich-permissions-1container please? Presumably it’s on Github somewhere, but I can’t see it on the TrueNAS apps repo.

The only mention of the permission container i could find on github was here:
search for perm_container

Not sure what the issue is then. I don’t have anything running 25.04, but I just tried installing Immich with all defaults (ixvolumes) and had no problem. The permissions container ran and exited as expected. These are the container logs:

2026-04-29 12:51:35.539272+00:00🚀 Starting permissions configuration...
2026-04-29 12:51:35.539388+00:00------------------ pgvecto_postgres_data -------------------
2026-04-29 12:51:35.539417+00:00📊 Original: 👤 [0:0] 🔐 [0755]
2026-04-29 12:51:35.539444+00:00👤 Ownership: [0:0] -> [999:999] [will change]
2026-04-29 12:51:35.539472+00:00🔐 Permissions: [0755] [no change]
2026-04-29 12:51:35.539511+00:00⚙️ Mode: Check. Only applies changes if they are incorrect
2026-04-29 12:51:35.539539+00:00📊 Final: 👤 [999:999] 🔐 [0755]
2026-04-29 12:51:35.539567+00:00⏱️ Time taken: 1.18ms
2026-04-29 12:51:35.539594+00:00============================================================
2026-04-29 12:51:35.539631+00:002026-04-29T12:51:35.539631691Z
2026-04-29 12:51:35.539658+00:00--------------------- redis_redis_data ---------------------
2026-04-29 12:51:35.539685+00:00🗑️ Temporary directory - ensuring it is empty...
2026-04-29 12:51:35.539713+00:00📊 Original: 👤 [999:999] 🔐 [0755]
2026-04-29 12:51:35.539740+00:00👤 Ownership: [999:999] -> [568:568] [recursive] [will change]
2026-04-29 12:51:35.539777+00:00🔐 Permissions: [0755] [no change]
2026-04-29 12:51:35.539805+00:00⚙️ Mode: Check. Only applies changes if they are incorrect
2026-04-29 12:51:35.539832+00:00📊 Final: 👤 [568:568] 🔐 [0755]
2026-04-29 12:51:35.539860+00:00⏱️ Time taken: 0.68ms
2026-04-29 12:51:35.539896+00:00============================================================
2026-04-29 12:51:35.539924+00:002026-04-29T12:51:35.539924213Z
2026-04-29 12:51:35.539950+00:00------------------------- -config --------------------------
2026-04-29 12:51:35.539978+00:00🗑️ Temporary directory - ensuring it is empty...
2026-04-29 12:51:35.540011+00:00📊 Original: 👤 [0:0] 🔐 [0755]
2026-04-29 12:51:35.540077+00:00👤 Ownership: [0:0] -> [568:568] [recursive] [will change]
2026-04-29 12:51:35.540105+00:00🔐 Permissions: [0755] [no change]
2026-04-29 12:51:35.540133+00:00⚙️ Mode: Check. Only applies changes if they are incorrect
2026-04-29 12:51:35.540162+00:00📊 Final: 👤 [568:568] 🔐 [0755]
2026-04-29 12:51:35.540199+00:00⏱️ Time taken: 0.48ms
2026-04-29 12:51:35.540227+00:00============================================================
2026-04-29 12:51:35.540254+00:002026-04-29T12:51:35.540254245Z
2026-04-29 12:51:35.540281+00:00--------------------------- data ---------------------------
2026-04-29 12:51:35.540308+00:00📊 Original: 👤 [0:0] 🔐 [0755]
2026-04-29 12:51:35.540344+00:00👤 Ownership: [0:0] -> [568:568] [will change]
2026-04-29 12:51:35.540372+00:00🔐 Permissions: [0755] [no change]
2026-04-29 12:51:35.540400+00:00⚙️ Mode: Check. Only applies changes if they are incorrect
2026-04-29 12:51:35.540427+00:00📊 Final: 👤 [568:568] 🔐 [0755]
2026-04-29 12:51:35.540464+00:00⏱️ Time taken: 0.36ms
2026-04-29 12:51:35.540492+00:00============================================================
2026-04-29 12:51:35.540519+00:002026-04-29T12:51:35.540519817Z
2026-04-29 12:51:35.540546+00:00------------------------- ml-cache -------------------------
2026-04-29 12:51:35.540573+00:00🗑️ Temporary directory - ensuring it is empty...
2026-04-29 12:51:35.540610+00:00📊 Original: 👤 [0:0] 🔐 [0755]
2026-04-29 12:51:35.540638+00:00👤 Ownership: [0:0] -> [568:568] [recursive] [will change]
2026-04-29 12:51:35.540665+00:00🔐 Permissions: [0755] [no change]
2026-04-29 12:51:35.540692+00:00⚙️ Mode: Check. Only applies changes if they are incorrect
2026-04-29 12:51:35.540729+00:00📊 Final: 👤 [568:568] 🔐 [0755]
2026-04-29 12:51:35.540759+00:00⏱️ Time taken: 0.47ms
2026-04-29 12:51:35.540786+00:00============================================================
2026-04-29 12:51:35.540813+00:002026-04-29T12:51:35.540813740Z
2026-04-29 12:51:35.540840+00:002026-04-29T12:51:35.540840510Z
2026-04-29 12:51:35.540876+00:00⏱️ Total time taken: 4.05ms
2026-04-29 12:51:35.540903+00:00🎉 All permissions configured successfully!

So you can see ownership of the postgres volume was successfully changed from root:root to 999:999 and permissions stayed the same.

Thank you for testing that. Could I ask which version of Immich you were installing please?

App Version: v2.7.5
Version: 1.14.16

Should be the same because 25.04 and up install from the same catalog.

I’ve been having the problem with Immich since the Postgres upgrade to 18. I tried to force it with the trick that everyone is posting. That wouldn’t work.

I don’t know why or how, but forever reason, unless you set the ACL permissions (as you see in the attached pictures), the main at the top to 568 (999) wouldn’t work. Then for all others were you have to select a path for your data, “Force Flag” User and Group 999 and FULL CONTROL or you will get an error everytime. Basically anywhere that data needs to be written to disk. You have to force them even if you do the iX path.

If you use additional storage, (old pictures you don’t want sync to delete) make sure you see this to read only!

I’m kind of new to this, but it seems that if TrueNas starts to load the containers and it says “running” then switches real fast to “deploying”, it’s almost always a permission issue. I had one other app, I had to do this to and specialize “addition variables” for items were the check boxes existed on the install screen.