Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

rimorgin
Copy link

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
Owner

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

@jsimonetti
Copy link
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
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

i'm excited on this :)

@rimorgin
Copy link
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.

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