balena mysterium

I want to containerise the https://www.mysterium.network/ project. It runs on x86 docker with the following command:

docker run --cap-add NET_ADMIN -d -p 4449:4449 --name myst -v myst-data:/var/lib/mysterium-node mysteriumnetwork/myst:latest service --agreed-terms-and-conditions

I have attempted to migrate this to Balena with the follow config files:

FROM balenalib/raspberrypi3:bullseye
RUN [ "cross-build-start" ]
RUN install_packages debconf-utils \
    && echo resolvconf resolvconf/linkify-resolvconf boolean false | debconf-set-selections \
    && install_packages resolvconf
COPY ./install.sh .
RUN ./install.sh
RUN [ "cross-build-end" ]

and

version: '2'
services:
  mysterium-node:
    image: n1md4/raspterium:latest
    cap_add:
      - NET_ADMIN
    restart: unless-stopped
    ports:
      - "4449:4449"
    volumes:
      - mysterium-data:/var/lib/mysterium-node
volumes:
  mysterium-data:

When the container starts all I see in the logs is this:

 mysterium-node  Starting mysterium-node...
 mysterium-node  mysterium-node process was unable to start [ FAILED ]
Service exited 'mysterium-node sha256:7e654117262e5c61640a1ecfaa8869a1879abd39cf359034675e5d1ab81f4387'
Restarting service 'mysterium-node sha256:7e654117262e5c61640a1ecfaa8869a1879abd39cf359034675e5d1ab81f4387'

I did manage to get the service running once with a command line in the docker-compose file, but I need the service to be controlled with the service unit. Also, any ideas how I would port service --agreed-terms-and-conditions from the docker run command to the docker-compose file?

Hey there,
seems like your Dockerfile just has neither has ENTRYPOINT not a CMD set.
It should be a simple as

CMD /path/to/installation/executable service --agreed-TOS

The image that you originally used was probably based on either node/Dockerfile at master · mysteriumnetwork/node · GitHub or node/Dockerfile at master · mysteriumnetwork/node · GitHub . Maybe you can just use one of them directly, as they are cross-platform.

Also, looking at Docker Hub it seems the original image was already built cross-platform, so you could just use it directly without writing your own Dockerfile.
You then just add

command: service --accept-TOS

to your service definition.

Hope this helps,
Cheers

1 Like

Legend! Thank you, it “just worked”. Was told there wasn’t an arm docker image available … lessons were learnt, do my own homework! :slight_smile:

1 Like

hi i also messaged you on discord … im tring to do the same as yourself what was the final solution how did you add the command , is there a way i can run say a script on the pi via ssh directly and not though cloud to install myst on the pi thats running balenaOS

@oly99 what issues do you get following the steps from @n1md4 and the recommendation from my colleague at balena?

Im new to this docker stuff im not quite sure on the method to get it all to install and run tbh . the command your college recommend. Does that get run inside the file.

Im also hoping I can just run everything from root directly on each device as the balenaos dash/cloud is not easly accessible as the device is controlled by a 3rd partly admin/s who use it to send remote fleet updates . I simply want to add myst nodes to each device to get some extra functionality

Ok! if you would like to learn more about containers and balenaOS to manage your fleets of devices, let us know!