Running LightBurn in an Ubuntu docker container

I’m evaluating LB for a company that uses hardened environments, so most 3rd party software must be run in docker containers.

I got LB to open successfully in a slightly modified Ubuntu docker image, but I can’t get past the trial dialog. It claims the system time has been tampered with or that the trial period has ended.

What could be causing this?

Can you post the exact message?

It’s likely that the fingerprinting mechanism that LightBurn uses is balking at the way that the container is presenting the environment.

Does this occur at first activation attempt or is this occurring when starting for the second time post trial activation?

It occurs on first activation, but the docker environment isn’t persistent so I think it may have worked at some point since I started this endeavour.

I got the same when I ran Ubuntu from an ISO image, ie a LiveUSB from a thumbdrive. I never found a solution but to enter in my license code.

I believe the trial license key can only ever be activated once for a given hardware profile. With the “tampering” of the environment through the container being recreated it’s likely just picking up on that.

It’s not clear to me whether or not you’d experience the same issue if you were using a persistent key. I’d suggest sending an email to support@lightburnsoftware.com with a link to this Topic and explaining some of your organization’s needs and they may be better help you walk through possible licensing options.

Thanks, will do!

Same type of problem:
My computer is (still) under Ubuntu 18, so to be able to launch Lightburn 1.3 I configured an Ubuntu 22 (latest) docker container.
After some tweaks I now launch LightBurn correctly, but I must reenter the key at each launch.

What is weird is that the activation details on cryptlex are the same (only the update and sync times are changed) so it is still considered to be the same machine (in fact the same as the host computer, but with another hostname and the ‘container’ attribute set to ‘true’ on cryptlex).

So I suppose that some license-related information is not kept in a permanent/mounted directory (that is is stored in a temporary container directory instead of a permanent directory on the host computer).

Could you tell me where the activation information is stored, so that I make that place permanent?
Thanks in advance…

LightBurn is supported on Ubuntu 18 from what I recall. Is there a problem you’re having with it?

A filesystem comparison pre and post activation should reveal any changes.

In fact:

  • LightBurn 1.2 IS supported on Ubuntu 18.04
  • LightBurn 1.3 IS NOT supported on Ubuntu 18.04 as it needs GLIBC_VERSION >= 2.29 for libc & libm

Such versions are distributed with Ubuntu 20+, so,it is why I tried the docker workaround.

The catch is that ONLY libc & libm need to have a GLIBC_VERSION >= 2.29

So:

  • I copied the libc.so.6 and libm.so.6 from the Ubuntu 22 docker container to my current install_dir (/home/labtools/LightBurn)
  • Then I run LightBurn with a library preload trick:
    LD_PRELOAD_PATH=/home/labtools/LightBurn /home/labtools/LightBurn/LightBurn.1.3.01/LightBurn

and it seems to work natively…

… Thanks for your help

Ah. Yes indeed. Forgot this was the case.

I’m surprised this works. When I experimented with this earlier I had the impression that there were further sub depenencies. Also, surprised that you didn’t get complaints of an older LD loading a newer GLIBC library.

But nice getting this to work. Could be helpful for others.

Well, during my experiments, I missed something (I should have checked in a fresh terminal !):

  • you need also to set a LD_PRELOAD for libm…

Now my script “LightBurn.sh” is:

export LD_PRELOAD_PATH=/home/labtools/LightBurn
export LD_PRELOAD=/home/labtools/LightBurn/libm.so.6
/home/labtools/LightBurn.1.3.01/LightBurn

Setting all that in a bash script avoids scrambling completely the terminal shell for other applications…

Hoping that others may find that useful

1 Like

Have you tried a bootable ISO with the persistent filesystem enabled(a partition on the USB or HD having a label of “casper-rw”). Also need to boot with the word persistent (or persistence ) on the boot cmd line. That should keep anything LightBurn requires around on the persistent overlay filesystem.

Back to the subject of this post.

All the license info is hidden in the ~/.config/Lightburn/prefs.ini

My problem with the use of docker came from not being able to resolve ‘~’ from the inside of the container.

I solved if by forcing my id into /etc/passwd and /etc/group during the container construction - not particularly clean but effective.

To sum up, for those that NEED to use docker, my solution is
A) Build a container with a dockerfile:
FROM ubuntu
RUN apt update
RUN apt install -y libusb-1.0-0
RUN apt install -y libpulse-dev
RUN apt install -y libgl1
RUN apt install -y build-essential libgl1-mesa-dev
RUN apt install -y libxkbcommon-x11-0
RUN apt install -y libxcb-image0
RUN apt install -y libxcb-keysyms1
RUN apt install -y libxcb-render-util0
RUN apt install -y libxcb-xinerama0
RUN apt install -y libxcb-icccm4
RUN apt install -y libxi6
RUN apt install -y libxinerama1
RUN apt install -y libxrender1
RUN apt install -y net-tools
RUN apt install -y iputils-ping

RUN echo “jbarbier:x:1000:1000:Jean Barbier,:/home/jbarbier:/bin/bash” > /etc/passwd
RUN echo “jbarbier:x:1000:” > /etc/group

ENV DISPLAY=:0

and launch the build with:

docker build -t ubuntu_lbr -f ubuntu_docker.file .

B) launch LightBurn with a shell script:

docker container run -u 1000:1000 -v /home:/home -v /tmp:/tmp -h Light --mac-address 02:42:ac:11:00:02 -it ubuntu_lbr /home/labtools/LightBurn.1.3.01/LightBurn

Notes:

  • –mac-address may be an overkill
  • -h Light is just a commodity to name the container
  • -v /tmp:/tmp allows the access to the X11 socket on the host
  • Don’t forget to run ‘xhost +’ on the host to allow the access to the X11 server from the container (!)

Hoping that this might help …

2 Likes

are you saying that with that setup it will repeatedly launch with a working LightBurn once you input your LB license key the first time or does the LB license key have to be entered every launch of the docker image?

This setup works for me transparently, I don’t have to enter the license key at each launch.

In my case, the license key was already validated on this computer as I had run LB version 1.2 natively, but I guess that it should also work for a first time activation through the docker image.

The relevant factor is really to be able to run LB in the container with the right user_name/user_id AND to have correctly mapped the homedir to be able to find the prefs.ini at a permanent place (if you miss that step, a temporary prefs.ini will used - no license, but also, and it is a signal, no previously defined machine, etc)

I’ll have to try this on my dev laptop( 16GB RAM ) but older 18.04 version of Ubuntu to see how well it works since it could be a way to run with the more current version of Ubuntu OS and libs.

Thanks for taking the time to write out the steps and descriptions!

@jgbarbier I ran it as you posted it except for the userID/userName changes and it worked splendidly. Well done and it’s pretty cool to be able to run LightBurn on 22.04 code from a laptop still running 18.04.

I’ve not been able to get the camera working though but not a big problem right now.

What’s the symptom with the camera? Does it crash LightBurn or something else?

the device just doesn’t show up in the Camera tab dropdown list. I’ve tried -v /dev/video0:/dev/video0 and I’ve tried --device=/dev/video0:/dev/video0. I also tried adding --privileged.

Got you. Does the camera work outside of LightBurn?

Do you mean with the host OS or outside of Lightburn within the docker container?
It works on the host OS with previous versions of LightBurn but since LightBurn 1.3.1 requires libm.so.6 I can’t test the latest version on the host OS. THIS is why running LightBurn through a Docker container which is running Ubuntu v22.04 is so handy.

./LightBurn: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29’ not found (required by ./LightBurn)