Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)

Updated Proxmox from version 6 to version 9
Storj stopped working
Error when starting

2025-08-21 19:20:02,877 INFO Set uid to user 0 succeeded
Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
For help, use /usr/bin/supervisord -h
2025-08-21 19:20:49,099 INFO Set uid to user 0 succeeded
Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
For help, use /usr/bin/supervisord -h
2025-08-21 19:21:35,093 INFO Set uid to user 0 succeeded
Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
For help, use /usr/bin/supervisord -h
2025-08-21 19:22:21,211 INFO Set uid to user 0 succeeded
Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
For help, use /usr/bin/supervisord -h
2025-08-21 19:23:07,315 INFO Set uid to user 0 succeeded
Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
For help, use /usr/bin/supervisord -h
2025-08-21 19:23:53,322 INFO Set uid to user 0 succeeded

Configuration for launch

I didn’t change anything in the configuration.
I deleted and reinstalled Docker
There is a proxymox 8 server nearby and everything works

Is this supervisord inside a container?
Who can deny him access?

Perhaps your docker network configured to the host mode, not the bridge mode (I think so, because you also changed the private address), in that case the listening address for supervisord is already occupied, you need to change it, see

So, you need to switch to a private port by specifying SUPERVISOR_SERVER=private_port:

docker run ... \
...
-e SUPERVISOR_SERVER=private_port \
--name storjlabs/storagenode:latest \
...

Maybe public_port may work too.

I read your code block, but I still don’t understand in what format to pass private and public ports
I tried different things, always the same error

image

image

    case ${SUPERVISOR_SERVER} in
  	unix) # default
  	;;
  	public_port)
  	  # replace unix_http_server section to inet_http_server
  		sed -i "s#^\[unix_http_server\]\$#\[inet_http_server\]#" /etc/supervisor/supervisord.conf
  		# replace unix socket file with tcp public port
      sed -i "s#^file=/etc/supervisor/supervisor.sock\$#port=*:9001#" /etc/supervisor/supervisord.conf
      # set server url to http server address
      sed -i "s#^serverurl=unix:///etc/supervisor/supervisor.sock\$#serverurl=http://127.0.0.1:9001#" /etc/supervisor/supervisord.conf
  	;;
  	private_port)
  	  # replace unix_http_server section to inet_http_server
  		sed -i "s#^\[unix_http_server\]\$#\[inet_http_server\]#" /etc/supervisor/supervisord.conf
  		# replace unix socket file with tcp private port .i.e. listens on only localhost
      sed -i "s#^file=/etc/supervisor/supervisor.sock\$#port=127.0.0.1:9001#" /etc/supervisor/supervisord.conf
       # set server url to http server address
      sed -i "s#^serverurl=unix:///etc/supervisor/supervisor.sock\$#serverurl=http://127.0.0.1:9001#" /etc/supervisor/supervisord.conf
  	;;
  	*)
  		echo "Invalid value '${SUPERVISOR_SERVER}' for SUPERVISOR_SERVER. Expected 'unix', 'public_port' or 'private_port'"
  		exit 1
  	;;
  esac



You cannot provide a port there, only change the mode:

  • unix - the default, it should use a socket
  • public_port will bind it to 0.0.0.0:9001
  • private_port will bind it to 127.0.0.1:9001

If you use a host network, then likely the public_port mode will not work, because it’s directly exposed to the host, and there could be only one with such number. But the private_port mode should work for multiple containers (the localhost (127.0.0.1) is still isolated as far as I understand).

The other way would be only to build your own image based on an official one and replace the port with a variable to be able to provide it for every container. And use this custom image instead of the official.

1 Like

Thanks!
I thought it was a port reassignment, not a mode switch
It worked

image

1 Like