node-red-docker: Unable to run 2.x.x due to permission errors. v1.3.7 is fine.

Current Behavior

What has changed between 1.3.7 and 2.x.x regarding permissions to write to the /data volume?

Running any 2.x.x nodred version in my docker fails with the error: Error: EPERM: operation not permitted, copyfile '/data/.config.nodes.json' -> '/data/.config.nodes.json.backup'

However, running 1.3.7 has no issues.

I have read and followed every article I can find, including: https://nodered.org/docs/getting-started/docker#managing-user-data https://github.com/node-red/node-red-docker/wiki/Permissions-and-Persistence

Where mounting an external folder as the data volume, I have ensured it’s owner and group is 1000:1000

[dockuser@TS870Pro1 nodered]$  ls -lan
total 32
drwxrwxrwx  3 1000 1000 4096 2022-04-29 23:45 ./
drwxrwxrwx 42    0    0 4096 2022-04-29 23:43 ../
drwxrwxrwx  3 1000 1000 4096 2022-04-30 00:06 data/
-rwxrwxrwx  1 1000 1000 1541 2022-04-29 23:50 docker-compose.yml*
-rwxrwxrwx  1 1000 1000  620 2022-04-27 23:47 .env*

I have tried numerous variations on the startup commands in the documentation.

$  history | grep docker\ run
 1057  docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
 1065  docker run -it -p 1880:1880 -v node_red_data:/data --user 1000:1000 --name mynodered nodered/node-red
 1072  docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red
 1078  docker run -it -p 1880:1880 -v node_red_data:/data --user 1000 --name mynodered nodered/node-red

 1085  docker run -it -p 1880:1880 -v /share/Container/nodered/data:/data --name mynodered nodered/node-red --user 1000
 1086  docker run -it -p 1880:1880 -v /share/Container/nodered/data:/data --name mynodered nodered/node-red

 1091  docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red -u node-red:dialout 
 1101  docker run -it -p 1880:1880 -v myNodeREDdata:/data --name mynodered nodered/node-red
 1102  docker run -it -p 1880:1880 -v myNodeREDdata:/data --name mynodered nodered/node-red:latest-minimal
 
 
 1135  docker run -d -p 1880 nodered/node-red
 1092  docker run -it -p 1880:1880  --name mynodered nodered/node-red
 

Expected Behavior

The server will run as expected.

30 Apr 12:25:17 - [info] Server now running at http://127.0.0.1:1880/
30 Apr 12:25:17 - [info] Starting flows
30 Apr 12:25:17 - [info] Started flows

Steps To Reproduce

Try to spin up any nodered 2.x.x version and it fails…

docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red

30 Apr 12:02:03 - [info] Node-RED version: v2.2.2
30 Apr 12:02:03 - [info] Node.js  version: v14.18.2
30 Apr 12:02:03 - [info] Linux 4.2.8 x64 LE
30 Apr 12:02:03 - [info] Loading palette nodes
30 Apr 12:02:05 - [error] Failed to start server:
30 Apr 12:02:05 - [error] Error: EPERM: operation not permitted, copyfile '/data/.config.nodes.json' -> '/data/.config.nodes.json.backup'

Try the same for v1.3.7 and it is successful.

docker run -it -p 1880:1880 -v node_red_data:/data --name mynodered nodered/node-red:1.3.7

30 Apr 12:05:00 - [info] Node-RED version: v1.3.7
30 Apr 12:05:00 - [info] Node.js  version: v10.24.1
30 Apr 12:05:00 - [info] Linux 4.2.8 x64 LE
30 Apr 12:05:00 - [info] Loading palette nodes
30 Apr 12:05:02 - [info] Settings file  : /data/settings.js
30 Apr 12:05:02 - [info] Context store  : 'default' [module=memory]
30 Apr 12:05:02 - [info] User directory : /data
30 Apr 12:05:02 - [warn] Projects disabled : editorTheme.projects.enabled=false
30 Apr 12:05:02 - [info] Flows file     : /data/flows.json
30 Apr 12:05:02 - [info] Starting flows
30 Apr 12:05:02 - [info] Started flows
30 Apr 12:05:02 - [info] Server now running at http://127.0.0.1:1880/

Example flow

No response

Environment

  • Node-RED version: v2.2.2
  • Node.js version: v14.18.2
  • npm version:
  • Platform/OS: QNAP Docker

QNAP TS-870 Pro QTS 4.3.6.1965 [2022/03/02] Docker v17.09.1-ce, build 0bbe3acx

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 2
  • Comments: 19 (8 by maintainers)

Most upvoted comments

Had the same problem. Did a chown -R 1000:1000 * and chown -R 1000:1000 .* (for the files starting with “.”) in the mounted volume and it worked