#File permission errors when switching from jellyseer to seer

127 messages · Page 1 of 1 (latest)

vocal stag
#

Followed the migration guide and changed the source in my docker container. Now it won't start and I get this error in the logs... Exact same problem when switching over from overseer to jellyseer where the devs said it's a quick easy switch over....

seerr@3.0.1 start
NODE_ENV=production node dist/index.js
2026-02-15T12:59:44.994Z [info]: Commit Tag: 789bcc8eec3414da373328e374c2edb1abc3ac0d
2026-02-15T12:59:45.286Z [info]: Starting Seerr version 3.0.1
node:events:497
throw er; // Unhandled 'error' event
^
Error: EACCES: permission denied, open '/app/config/logs/seerr-2026-02-15.log'
Emitted 'error' event at:
at WriteStream.<anonymous> (/app/node_modules/.pnpm/file-stream-rotator@0.6.1/node_modules/file-stream-rotator/FileStreamRotator.js:697:15)
at WriteStream.emit (node:events:519:28)
at emitErrorNT (node:internal/streams/destroy:170:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at process.processTicksAndRejections (node:internal/process/task_queues:90:21) {
errno: -13,
code: 'EACCES',
syscall: 'open',
path: '/app/config/logs/seerr-2026-02-15.log'
}
Node.js v22.22.0
npm notice
npm notice New major version of npm available! 10.9.4 -> 11.10.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.10.0
npm notice To update run: npm install -g npm@11.10.0
npm notice

GitHub

11.10.0 (2026-02-11)
Features

cf56a1e #8899 npm trust, per-command config (@reggi)
cf56a1e #8899 npm trust (@reggi)
66d6e11 #8965 add min-release-age (#8965) (@wraithgar)

Dependencies

aae84bf #8...

shrewd drift
#

you didnt set the perms

#

as said in migration guide

#

you need to change the perms of the config folder to 1000:1000

#

WHILE seerr is down.

vocal stag
shrewd drift
#

happens haha

vocal stag
shrewd drift
#

maybe we should change it from info to warning

shrewd drift
vocal stag
#

Might not be a bad idea for the dipsticks like myself

shrewd drift
#

and then run the command or use linux sudo chown -R 1000:1000 /path/to/your/config

fast flame
#

I have the same issue but I'm not using Portainer, I'm using the compose-plugin in OpenMediaVault. I already have a user PUID1000 called "appuser" that I use for other containers too. This user has read and write access to the appdata folder where Jellyseer data is located, but I still have perms error. Any idea?

shrewd drift
#

And send

fast flame
#

sorry, it's in French, hope you can understand what you need

shrewd drift
#

sudo chown -R 1000:1000 /that/path

#

Replace that path eith thag appdata/jllyswerr path

#

Yoi currently havw the user 0:100

#

Not 1000:1000

fast flame
#

great, it's working now, thank you!

vocal stag
#

So even with a brand new install, I see we still need to do this:

#

I dont understand why permissions need to be set, when all prior versions this was not necessarry

#

It seems to be adding complexitity where it shouldnt be needed

shrewd drift
#

That is less insecure

#

And leads to other issues where node user also has issues

#

With reading its own node modules

#

Sometimes

#

Because node user is 1000:1000

shrewd drift
#

Let me link you to the discussion.

#

#seerr-beta message

vocal stag
#

obviously not anyone over at Team-Seerr's fault

#

just stinks, was hoping for an easy switch

shrewd drift
shrewd drift
#

A docker volume

#

Cc: @glass stag woild docker volume + --user work here?

glass stag
#

docker volume should not need chown permission yes

shrewd drift
#

@vocal stag please try a docker volume. Instead of a host path. You can use portainer to create

vocal stag
#

Alright ill give those a go thank you!

glass stag
#

feel free to ping back here once you tried 🙂

shrewd drift
vocal stag
#

services:
seerr:
image: ghcr.io/seerr-team/seerr:latest
init: true
container_name: seerr
environment:
- LOG_LEVEL=debug
- TZ=America/Detroit
- PORT=5055 #optional
ports:
- 5065:5055
volumes:
- /var/lib/docker/volumes/seerrconfig/_data:/app/config
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
start_period: 20s
timeout: 3s
interval: 15s
retries: 3
restart: unless-stopped

#

seerr@3.0.1 start
NODE_ENV=production node dist/index.js
/app/node_modules/.pnpm/file-stream-rotator@0.6.1/node_modules/file-stream-rotator/FileStreamRotator.js:672
throw e;
^
Error: EACCES: permission denied, mkdir '/app/config/logs/'
at Object.mkdirSync (node:fs:1377:26)
at /app/node_modules/.pnpm/file-stream-rotator@0.6.1/node_modules/file-stream-rotator/FileStreamRotator.js:669:24
at Array.reduce (<anonymous>)
at mkDirForFile (/app/node_modules/.pnpm/file-stream-rotator@0.6.1/node_modules/file-stream-rotator/FileStreamRotator.js:656:27)
at FileStreamRotator.getStream (/app/node_modules/.pnpm/file-stream-rotator@0.6.1/node_modules/file-stream-rotator/FileStreamRotator.js:532:5)
at new DailyRotateFile (/app/node_modules/.pnpm/winston-daily-rotate-file@4.7.1_winston@3.19.0/node_modules/winston-daily-rotate-file/daily-rotate-file.js:80:57)
at Object.<anonymous> (/app/dist/logger.js:46:9)
at Module._compile (node:internal/modules/cjs/loader:1706:14)
at Object..js (node:internal/modules/cjs/loader:1839:10)
at Module.load (node:internal/modules/cjs/loader:1441:32) {
errno: -13,
code: 'EACCES',
syscall: 'mkdir',
path: '/app/config/logs/'
}
Node.js v22.22.0

glass stag
#

no

#

in the UI you created a volume

vocal stag
#

i did

glass stag
#

the path is /var/lib/docker/volumes/seerrconfig this is needed if you need backup

#

but in your docker compose config

#

you reference the name of the volume

#

not the host path

vocal stag
glass stag
#

seerrconfig

#

so 🙂

#

volumes:

seerrconfig:/app/config

vocal stag
#

perfect thank you

glass stag
#

and if you need to backup your data, you can see the data from your host at /var/lib/docker/volumes/seerrconfig

vocal stag
#

or does it need to be /seerrconfig:/app/config

#

because seerrconfig:/app/config thros an undefined error

glass stag
#

without the /

vocal stag
#

*throws

glass stag
#

which error ?

#

and show what you did

vocal stag
#

Failed to interpolate config for stack teamseerr. Error: compose config operation failed: failed to create compose project: failed to load the compose file : service "seerr" refers to undefined volume seerrconfig: invalid compose project

#

volumes:
- seerrconfig:/app/config

#

the formatting pastes funny and can screen shop if that helps

glass stag
#

are you sure this volume exist ?

#

on the host if you do, docker volume ls do you see it ?

vocal stag
#

yeah it shows in portainer volumes

glass stag
#

ah yeah sorry

#

you need to add

volumes:
  seerrconfig:
    external: true
#

to declare this volume as external

vocal stag
glass stag
#

like

services:
  frontend:
    image: node:lts
    volumes:
      - myapp:/home/node/app
volumes:
  myapp:
    external: true
#

this should be good after that

vocal stag
#

oh man... oh man...

#

i think we are good lol

glass stag
#

cool 😄

vocal stag
glass stag
#

gucci

vocal stag
#

it boots. should i delete that volume, recreate it, and add :

#

environment:
- PUID=1000
- PGID=1000

glass stag
#

no it's not used in our image

vocal stag
#

should I ignore that warning or do I still have problems?

shrewd drift
#

Its only for people who set up with no volume mounts

#

Which we can't obviously detect so we currently only detect if host or docker container

#

So when you use volumes that warning shows u0

vocal stag
versed oyster
#

The user id 1000 involved in the dir perms is related to the docker user, correct? Are there config cases that the user won't be default? Is that supported?

dockerltd:x:1028:100:docker limited:/var/services/homes/dockerltd:/sbin/nologin```

I have tried with the following and am not getting anywhere past the file write perm errors

```sudo chown -R 1028:100 /volume1/docker_v1/seerr```
```sudo chown -R 1028:1028 /volume1/docker_v1/seerr```
shrewd drift
#

A real user doesn't need to exist

#

You can still chown ir 1000:1000

#

And you should

versed oyster
shrewd drift
#

And then run that

#

And send me stat ./yourconfig

versed oyster
#
  File: /volume1/docker_v1/seerr/config
  Size: 8               Blocks: 0          IO Block: 4096   directory
Device: 2ch/44d Inode: 6317980     Links: 1
Access: (0777/drwxrwxrwx)  Uid: ( 1000/ UNKNOWN)   Gid: ( 1000/ UNKNOWN)
Access: 2026-02-16 09:10:58.833955854 -0800
Modify: 2026-02-15 16:50:55.438380570 -0800
Change: 2026-02-16 09:09:39.230306345 -0800
 Birth: -```

``` ls -l /volume1/docker_v1/ | grep see
drwxrwxrwx+ 1 dockerltd users   70 Nov 14  2024 overseerr
drwxrwxrwx+ 1      1000  1000   16 Feb 15 16:48 seerr```
shrewd drift
#

no need 777

shrewd drift
#

then share your compose

versed oyster
# shrewd drift also l -alh inside seerr

i caught this between restarts

total 912K
drwxr-xr-x    1 node     node         490 Feb 14 11:22 .
drwxr-xr-x    1 root     root         140 Feb 15 16:40 ..
-rw-r--r--    1 node     node         750 Feb 14 11:19 .gitattributes
drwxr-xr-x    1 node     node         490 Feb 14 11:22 .next
-rw-r--r--    1 node     node          19 Feb 14 11:19 .npmrc
-rw-r--r--    1 node     node         716 Feb 14 11:19 .prettierrc.js
drwxr-xr-x    1 node     node          82 Feb 14 11:19 bin
-rw-r--r--    1 node     node          58 Feb 14 11:22 committag.json
-rw-r--r--    1 node     node        1.1K Feb 14 11:19 compose.postgres.yaml
d---------    1 node     node          16 Feb 15 16:48 config
-rw-r--r--    1 node     node         367 Feb 14 11:19 cypress.config.ts
drwxr-xr-x    1 node     node         326 Feb 14 11:22 dist
-rw-r--r--    1 node     node         230 Feb 14 11:19 next-env.d.ts
-rw-r--r--    1 node     node         580 Feb 14 11:19 next.config.js
drwxr-xr-x    1 node     node        1.8K Feb 14 11:20 node_modules
-rw-r--r--    1 node     node        7.1K Feb 14 11:19 package.json
-rw-r--r--    1 node     node      644.9K Feb 14 11:19 pnpm-lock.yaml
-rw-r--r--    1 node     node          83 Feb 14 11:19 postcss.config.js
drwxr-xr-x    1 node     node        2.1K Feb 14 11:19 public
-rw-r--r--    1 node     node      211.7K Feb 14 11:19 seerr-api.yml
drwxr-xr-x    1 node     node         312 Feb 14 11:19 server
drwxr-xr-x    1 node     node         106 Feb 14 11:19 src
-rw-r--r--    1 node     node        2.1K Feb 14 11:19 tailwind.config.js
-rw-r--r--    1 node     node         809 Feb 14 11:19 tsconfig.json```

UPDATED - the first i shared was from testing with 1000:100.  Now I see node:node on config dir.  However, either way i end up with file perm issues in the logs
versed oyster
# versed oyster i caught this between restarts ``` sudo docker exec -it seerr ls -alh total 912K...

compose.yaml

  seerr:
    image: ghcr.io/seerr-team/seerr:latest
    init: true
    container_name: seerr
    environment:
      - LOG_LEVEL=debug
      - TZ=America/Los_Angeles #CHANGE_TO_YOUR_TZ
      - PORT=5055 #optional
    ports:
      - 5055:5055
    volumes:
      - /volume1/docker_v1/seerr:/app/config
    network_mode: bridge
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:5055/api/v1/status || exit 1
      start_period: 20s
      timeout: 3s
      interval: 15s
      retries: 3
    security_opt:
      - no-new-privileges:true
    restart: unless-stopped```
shrewd drift
#

I said to run

#

ls -alh yourconfig

#

Not docker.

#

As in /volume1/docker_v1/seerr

versed oyster
#

took inside seerr too lierally, lol

#

I likely made these dirs while troubleshooting. I believe it was otherwise empty.

total 0
drwxrwxrwx+ 1 1000 1000  16 Feb 15 16:48 .
drwxrwxrwx+ 1 root root 332 Feb 15 16:20 ..
drwxrwxrwx+ 1 1000 1000   8 Feb 15 16:50 config
drwxrwxrwx+ 1 1000 1000   0 Feb 15 16:48 db```
shrewd drift
#

Or migrate

#

Because your volume is wrong

versed oyster
#

What should it be? I could go either way. I did not catch the nuance between migrate and scratch. The config from overseer would not be too bad to recreate.

versed oyster
#

I finally got it going by opening perms on that dir. Ok workaround for today. Thanks for your help

shrewd drift
#

Then set everything to 1000:1000

#

While seerr is down

versed oyster
#

I think it's a synology related issue with that 1000 user. id Looking at a synology related discussion on this, others are running into the same