Skip to content

fix: add tigervnc dependency and update DinD for compatibility#199

Open
rimorgin wants to merge 1 commit into
jsimonetti:masterfrom
rimorgin:2069
Open

fix: add tigervnc dependency and update DinD for compatibility#199
rimorgin wants to merge 1 commit into
jsimonetti:masterfrom
rimorgin:2069

Conversation

@rimorgin
Copy link
Copy Markdown

An issue encountered when launching the webterm container in GNS3, where VNC support fails due to a missing TigerVNC server.

The log containing the error message:

2025-04-29 06:53:46 INFO gns3server.compute.docker.docker_vm:1279 Docker container "webterm-1" [29854099-0eb2-4578-821c-8efa66bf0ff4]: number of Ethernet adapters changed to 1
2025-04-29 06:53:46 INFO gns3server.compute.docker.docker_vm:222 Docker container "webterm-1" [29854099-0eb2-4578-821c-8efa66bf0ff4]: MAC address changed to 02:42:85:40:99:00
2025-04-29 06:53:46 INFO gns3server.compute.docker.docker_vm:440 Image 'gns3/webterm:latest' is missing, pulling it from Docker hub...
2025-04-29 06:54:30 INFO gns3server.compute.docker.docker_vm:342 Mount resources from "/root/.local/share/GNS3/docker"
**_2025-04-29 06:54:30 ERROR gns3server.api.routes.compute:133 Compute node error: Please install TigerVNC server before using VNC support_**
2025-04-29 06:54:30 ERROR gns3server.api.server:180 Controller received error from compute for request 'http://127.0.0.1:3080/v3/compute/projects/0229af01-188d-410f-9c32-b76e4d324c08/docker/nodes': Please install TigerVNC server before using VNC support

the solution to this issue it either:

fix no.1 docker exec -it gns3 sh -c 'apk update && apk add tigervnc'

fix no.2 the permanent solution which is adding tigervnc to the dependencies.json. As of this writing, the tigerVNC version i included on the dependencies.json is 1.13.1-r5

The second issue addressed here #198 is when starting docker containers with incompatible busybox symlinking.

this command ln -s /bin/busybox /usr/lib/python*/site-packages/gns3server/compute/docker/resources/bin symlinks to the resources that docker containers used (webterm, ipterm, etc.) which are incompatible because the busybox is alpine compatible only

the workaround to this issue is to use different busybox and can be downloaded here https://syndamia.com/tutorials/gns3-initsh-no-such-file/

i did test the busybox downloaded from the url and the container starts magically with no error.

So i added a permanent solution in the Dockerfile with this lines:

# downloaded the busybox and then copy it to tmp folder
COPY ./bin /tmp/bin
...
RUN cp /tmp/bin/busybox /usr/lib/python*/site-packages/gns3server/compute/docker/resources/bin

@jsimonetti
Copy link
Copy Markdown
Owner

Thank you for looking in to this. Please allow me some time to review, as I am currently on holiday.

@jsimonetti
Copy link
Copy Markdown
Owner

Thanks for the fix. To make sure everybody can trace where the modified busybox came from, can you change the dockerfile to download it during build process, instead of adding it to git?

Other then that, thank you very much for looking into this. I would not have found this myself for sure!

@jsimonetti
Copy link
Copy Markdown
Owner

Actually, maybe it would be even better to copy the binary directly from the busybox docker container using a multistage build; that way this container is automatically rebuild whenever the upstream container gets a new version.

Is this something that you can investigate @rimorgin?

@rpchan44
Copy link
Copy Markdown

i'm excited on this :)

@rimorgin
Copy link
Copy Markdown
Author

using multi-stage build is definitely the appropriate fix for this one, glad you point that out. I'll investigate it and give me some time.

@jsimonetti jsimonetti force-pushed the master branch 12 times, most recently from e3dcf91 to a605159 Compare August 28, 2025 11:29
liverwust pushed a commit to liverwust/docker-gns3-server that referenced this pull request Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants