Skip to content

Running with podman fails when launching novnc process #254

@KarmaAlex

Description

@KarmaAlex

Trying to run the container as instructed with podman run -it -p 6080:80 --name ros2_test_bad --security-opt seccomp=unconfined --shm-size=512m docker.io/tiryoh/ros2-desktop-vnc:jazzy
fails to spawn the novnc process, and so the web interface does not work. Log:

* enable custom user: ubuntu
useradd: user 'ubuntu' already exists
  set default password to "ubuntu"
============================================================================================
Launched docker container.
Open http://127.0.0.1:6080 via web browser.

NOTE 1: Default user is "ubuntu", password is "ubuntu".
NOTE 2: --security-opt seccomp=unconfined flag is required to launch Ubuntu Jammy/Noble based image on some environment.
See https://github.com/Tiryoh/docker-ros2-desktop-vnc/pull/56
============================================================================================
2025-11-18 14:50:43,239 INFO Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
2025-11-18 14:50:43,239 INFO Set uid to user 0 succeeded
2025-11-18 14:50:43,242 INFO RPC interface 'supervisor' initialized
2025-11-18 14:50:43,242 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2025-11-18 14:50:43,242 INFO supervisord started with pid 32
2025-11-18 14:50:44,246 INFO spawned: 'novnc' with pid 33
2025-11-18 14:50:44,247 INFO spawned: 'vnc' with pid 34
2025-11-18 14:50:44,415 WARN exited: novnc (exit status 1; not expected)
2025-11-18 14:50:45,426 INFO spawned: 'novnc' with pid 654
2025-11-18 14:50:45,426 INFO success: vnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2025-11-18 14:50:45,568 WARN exited: novnc (exit status 1; not expected)
2025-11-18 14:50:47,571 INFO spawned: 'novnc' with pid 709
2025-11-18 14:50:47,739 WARN exited: novnc (exit status 1; not expected)
2025-11-18 14:50:50,743 INFO spawned: 'novnc' with pid 741
2025-11-18 14:50:50,899 WARN exited: novnc (exit status 1; not expected)
2025-11-18 14:50:51,900 INFO gave up: novnc entered FATAL state, too many start retries too quickly

Digging into it this is caused by a permissions issue, as running the command gosu 'ubuntu' bash -c "websockify --web=/usr/lib/novnc 80 localhost:5901" returns

root@fd8d33181909:/# gosu 'ubuntu' bash -c "websockify --web=/usr/lib/novnc 80 localhost:5901"
WebSocket server settings:
  - Listen on :80
  - Web server. Web root: /usr/lib/novnc
  - No SSL/TLS support (no cert file)
Traceback (most recent call last):
  File "/usr/local/bin/websockify", line 8, in <module>
    sys.exit(websockify_init())
             ^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/websockify/websocketproxy.py", line 696, in websockify_init
    server.start_server()
  File "/usr/local/lib/python3.12/dist-packages/websockify/websockifyserver.py", line 704, in start_server
    lsock = self.socket(self.listen_host, self.listen_port, False,
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/dist-packages/websockify/websockifyserver.py", line 470, in socket
    sock.bind(addrs[0][4])
PermissionError: [Errno 13] Permission denied

because it's trying to bind to port 80 as a non-sudo user. I personally fixed this by replacing the command in the bash script with sudo bash -c etc...
I can understand if it's not ideal however so any other solution is welcome.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions