looking for a light X11 server for production ready deployment of GUI app.

Hi,

So after 10h of test and retry in the x11 container world, I finally make it working. :smile: Here is the related docker-compose config sample, very similar from xserver/docker-compose.yaml.

  ui.x11:                                                                                                                                            
    restart: always
    image: balenablocks/xserver:aarch64-latest
    privileged: true
    environment:
      UDEV: 1
    labels:
      io.balena.features.dbus: "1"
    volumes:
      - x11.socket:/tmp/.X11-unix
      - x11.auth:/tmp/.X11-auth
      - src:/src
    network_mode: "none"

  ourgui.app:
    restart: always
    image: out.private.registry/ourgui.app:sometag
    volumes:
      - src:/src
      - x11.socket:/tmp/.X11-unix
      - x11.auth:/tmp/.X11-auth
    networks:
      - manager

I’m not sure 100% about all parameter here, I didn’t used DRI device and its permission yet, it works without it on a raspberry4 device. I reused the balena’s own image of the xserver container. I guessed the dockerhub path by reading the build-images.sh => FROM balenablocks/xserver:aarch64-latest

So conclusion: it works. Is it production ready? probably not yet, because so much things can break, and it needs huge troubleshooting skills to solve it.

One problem I faced for example: The X server started once on DISPLAY=:3 ==> /tmp/.X11-unix/X3, the GUI client waited forever or was failing continuously trying to reach DISPLAY=:0

Hope this experience can help other user too.
Regards,
Sylvain.

1 Like