Docker for the SIM client - Unraid


#1

Kinda new to the client/sim portion of AMR. But I have Unraid server that i was trying to get the Global network running on so I can contribute to the Cause.

I wanted to run the client in a docker so that way the client would run dynamically on unraid. but I dont see any working dockers out there. Just posting to see if anyone has any input on this. As ive tried using https://hub.docker.com/r/acidweb/askmrrobot But it just fails on run.


#2

Sorry – I haven’t used docker much, so don’t have anything for it. Just getting it to work in linux was a big step for me!


#3

For what it’s worth, you only need to install one thing to get the client working: the latest available version of the .net core runtime, described on the simulator client download page.

When I spin up lots of linux servers to crank out simulations in the cloud, I use a simple script to install .net core when each node starts up. Microsoft has the process documented:

See the footnote, you only need dotnet-runtime-2.2.1 not aspnetcore-runtime-2.2.1

And of course use the picker for your flavor of linux.

Not sure if that’s enough information for someone to set up docker or not.


#4

Thanks for the Reply! Yeah if i cant Figure it out soonish I may just end up booting a Ubuntu VM up on it solely for that. The only downside Is i think I have to dedicate cores and memory to that vm rather then it running dynamically from docker. But eh, ill keep poking around for a bit.


#5

I ran into the same issue and decided to build a new docker image. I’ve also open sourced the Dockerfile so it will be easier for anyone to update in the future.

New image with instructions is here:
https://hub.docker.com/r/gaffneyc/askmrrobot


#6

Awesome, so I have a unraid server and ive installed the docker image. but im not sure how to enter the my username and password from this, When i boot the docker the log shows that its trying to connect but then crashes. if i run the docker it just shows a console where I cant enter anything.


#7

The first thing you’ll need to do is to create a volume that will store the credentials, run the image with an interactive shell so you can input them, then you should be able to start up the simulator. I just fixed a typo in the instructions so it’s possible that was the problem.

docker pull gaffneyc/askmrrobot
docker volume create amr-settings
docker run --rm -ti -v amr-settings:/AskMrRobotClient gaffneyc/askmrrobot

You should be able to enter your credentials at that point. Either exit through the menu or ctrl-c to kill it.

To run the image in the background you’ll need to make sure to attach the settings volume.
docker run --rm -d -v amr-settings:/AskMrRobotClient/ gaffneyc/askmrrobot


#8

Sorry for the late reply, yeah I didn’t even notice the typo. All is good now! thank you for you time to put this together!


#9

I’d also like to ask if there could be an URL that doesn’t change but always gives the latest AMR client.

Something like this: https://static2.askmrrobot.com/wowsite/client/AskMrRobotClient-any-latest.zip, it would really help automating updates.


#10

Here is my Dockerfile, obviously can’t push it since the settings are baked in it.

I’m unable to to run simulations for some reason, but it has successfully connected to Glonet. The issue is probably Selinux, because I can’t see anything in my firewall yet.


#11

Alright, I think that I fixed my issue by switching from azure-functions/dotnet to dotnet/core/runtime.

Edit:

I’ve ran a few successful simulations, however there are plenty crashes and there is as far as I know no logs or output.

amr-simc_1          | Ask Mr. Robot client version 1158 loaded.
amr-simc_1          |
amr-simc_1          | Authenticating...
amr-simc_1          |
amr-simc_1          | User thejeroen connected.
amr-simc_1          | Running in Max performance mode.
amr-simc_1          | Global Network is enabled, Max mode, always on.
amr-simc_1          |
amr-simc_1          |
amr-simc_1          | Connecting...
amr-simc_1          | Press any key to open the main menu at any time.
amr-simc_1          |
amr-simc_1          | initializing...
amr-simc_1          |
amr-simc_1          | Press any key to open the main menu at any time.
amr-simc_1          |
amr-simc_1          | Running simulation b6471202fcf0404ea6a49cffde7deec3...
amr-simc_1          |
amr-simc_1          | Press any key to open the main menu at any time.
amr-simc_1          |
amr-simc_1          | Processing...
amr-simc_1          |
amr-simc_1          | An unexpected error happened, the client will automatically restart in 60 seconds...

#12

When you run the AMR client, the first thing it seems to do is autoupdate. That leads me to believe that ensuring you have the most recent .zip file downloaded is not critical. I took a fresh run at the Dockerfile and came up with this and, so far, seems to be working.

FROM mcr.microsoft.com/dotnet/core/runtime:latest

ENV WORKDIR /AskMrRobotClient
COPY settings.json $WORKDIR/settings.json

RUN apt-get update \
    && apt-get install unzip \
    && rm -fr /var/cache/apt/* /var/lib/apt/lists/* \
    && curl -o AskMrRobot.zip https://static2.askmrrobot.com/wowsite/client/AskMrRobotClient-any-1158.zip \
    && unzip AskMrRobot.zip \
    && rm AskMrRobot.zip \
    && groupadd -g 1000 askmrrobot \
    && useradd -r -u 1000 -g askmrrobot askmrrobot \
    && chown -R askmrrobot:askmrrobot $WORKDIR

USER askmrrobot
WORKDIR $WORKDIR

CMD [ "dotnet", "amr.dll" ]

This does assume you have a settings.json file in the same directory as your Dockerfile:

{
  "ClientUserSettings": {
    "Username": "your-username",
    "Token": "redacted-token",
    "RunMode": "Max",
    "GlobalNetworkRunMode": "Normal",
    "GlobalNetworkSchedule": [],
  }
}

Here’s how I run this all:

joe@www:~/d/amr$ ls -l ~/docker/amr
total 8
-rw-rw-r-- 1 joe joe 441 Mar 27 19:42 Dockerfile
-rw-r--r-- 1 joe joe 235 Mar 27 17:00 settings.json
joe@www:~/d/amr$ docker build -t amr .
Sending build context to Docker daemon  3.072kB
Step 1/6 : FROM mcr.microsoft.com/dotnet/core/runtime:latest
 ---> 9479e2771d96
<...>
Successfully tagged amr:latest
joe@www:~/d/amr$ docker run -d --name amr amr
49d7520965cd827fea713c4659fd3a5ac434e72acd1567c26ca9e542f1e6c2ea
joe@www:~/d/amr$ ps aux | grep amr
joe       4852 34.0  5.9 6825100 60276 ?       SLsl 20:22   0:01 dotnet amr.dll
joe       4972  0.0  3.9 6919432 39756 ?       RLl  20:22   0:00 dotnet /AskMrRobotClient/version1158/amr.dll worker 1158

#13

And you don’t have any unexpected errors?

Most of the sims I run just error out.

Edit: I tested your dockerfile and it gives me the expected errors.

amr-simc_1 | An unexpected error happened, the client will automatically restart in 60 seconds…