I’m trying to determine what I might be missing on permissions here. I’ve customized the edition theme and edited the package.json a bit so its separate from the edition theme. i then zipped this and tried to upload. When I upload it I get the error mentioned towards the end of this post below in the server logs. im using docker and i have a few volume mounts
volumes:
- /home/ghost/containers/ghost_containername/content:/var/lib/ghost/content
- /home/ghost/containers/ghost_containername/config.production.json:/var/lib/ghost/config.production.json
- /home/ghost/containers/ghost_containername/BuiltInThemes/:/var/lib/ghost/current/content/themes/
i do not have problems uploading images to posts and within content on the page. i did reset permissions recursively on the /content and /BuiltInThemes folders on the host file system to 777 as a test and it didnt help.
I also tried to mount /tmp in the compose file like this and it did not help
tmpfs:
- /tmp:exec,mode=777
Whats curious is that i can see inside the container that the location /tmp/1db33462-3bcb-44a5-969a-7fdb4d6688af/themename/ is actually being created so it seems like it can write there, which is why I’m a little confused where the permissions are lacking
root@1518308dc5ba:/var/lib/ghost# ls /tmp/1db33462-3bcb-44a5-969a-7fdb4d6688af/themename/ -lha
total 0
d--------- 2 node node 40 Jun 6 12:07 .
drwxr-xr-x 3 node node 60 Jun 6 12:07 ..
- How was Ghost installed and configured? docker compose - ghost:6 d77f1956f8b6
- What Node version, database, OS & browser are you using? built in docker version
- What errors or information do you see in the console?
[2026-06-06 12:07:19] ERROR "POST /ghost/api/admin/themes/upload/" 422 19ms
Failed to read zip file
"themename.zip"
"Your zip file might be corrupted, try unzipping and zipping again."
Error ID:
441b56a0-61a0-11f1-9d69-c59d1d3f5ee4
Error Code:
EACCES
Details:
EACCES: permission denied, mkdir '/tmp/1db33462-3bcb-44a5-969a-7fdb4d6688af/themename/assets/'
----------------------------------------
Error: EACCES: permission denied, mkdir '/tmp/1db33462-3bcb-44a5-969a-7fdb4d6688af/themename/assets/'
at /var/lib/ghost/versions/6.42.0/node_modules/.pnpm/gscan@6.2.0/node_modules/gscan/lib/read-zip.js:57:19
at async Object.mkdir (node:internal/fs/promises:858:10)
at async Extractor.extractEntry (/var/lib/ghost/versions/6.42.0/node_modules/.pnpm/extract-zip@2.0.1/node_modules/extract-zip/index.js:121:5)
at async ZipFile.<anonymous> (/var/lib/ghost/versions/6.42.0/node_modules/.pnpm/extract-zip@2.0.1/node_modules/extract-zip/index.js:65:11)