XMR Enquiry: Is XMR include in docker hub container (xibo-signage/xibo-cms)

Dear Xibo Community,
@alex @dan @Peter

I would really appreciate any advise or help as I’ve been trying to figure this out for quite a while. I am running Xibo on OpenShift, I clearly understand that this is not supported and Docker installation is recommended, but I do need it running on OpenShift environment, any help would be much appreciated!

I got the CMS (v3.0.6) and XTR working, now I’m left with the XMR that is pending to work. I’ve read all the document that is provided here and can’t seem to figure it out still.

I’m using the container provided in Docker hub: xibo-signage/xibo-cms
A couple of things that I need answer to so that i could work this out.

  1. In this container (xibo-signage/xibo-cms) is XMR included inside? I do see xmr.phar in the container. Or do i need to run a separate XMR container (xibosignage/xibo-xmr)?

  2. If question 1, is yes then I’ve tried running the XMR in the CMS container where I’ve included the config.json file in the vendor/bin folder as per below and also indicated the XMR public address in the CMS setting as “tcp://10.125.169.53:9505” and also open port 50001 and 9505 in my CMS, but it doesn’t seem to work.
    {
    “listenOn”: “tcp://10.125.169.53:50001”,
    “pubOn”: [“tcp://10.125.169.53:9505”],
    “queuePoll”: 5,
    “queueSize”: 10,
    “debug”: false,
    “ipv6RespSupport”: false,
    “ipv6PubSupport”: false
    }

  3. In the player logs i see XMR connected with error “Socket Disconnect, waiting to reconnect” Any idea on this?

I hope someone could help me with this, if can’t then answering question 1 will do. Thank you…

XMR is not included in the xibo-cms container. You also need to run xibo-xmr, memcached and several other containers as set out in the docker-compose.yml file we provide with correct links between and the appropriate ports exposed, and environment variables set. Use the docker-compose.yml and config.env files as a template as that will tell you what you need to do.

Hi Alex, thank you for the reply. May i ask if its ok that we don’t use the memcached and quickchar containers? What will be the impact if we don’t use it?

Any one more thing, if the XMR container is separate. Why isn’t there a field for me to indicate the XMR private address in the CMS setting?

If you don’t run with memcached the performance will be poor and you’ll likely encounter issues with file-based cache locking. If you don’t use quickchart then you will be using the hosted version of it - which means any charts you draw will share that data with that service.

The XMR private address is fixed in a docker-based installation because we always know what it will be so there’s no need for you to enter it.

If it ends up being different, you’ll need to manually set it in the database in the setting table under XMR_ADDRESS setting.

I believe you’ll have bigger issues with OpenShift though as it prohibits containers that run as root, and ours do at startup before dropping permissions for normal execution.

Thank you again for your time. I think i can resolve the permission in my environment. The only thing i need to find out is how I could link all these containers together.

Questions:

  1. If I’ve configure memcached and quickchart, how can i find out if they are working as expected?
  2. Thats a very good clue you pointed out on the XMR private addresss. So for this, just want to confirm. Both the XMR public and private address should be the IP address of my XMR container am i right? (e.g tcp://10.125.149.72:50001 and tcp://10.125.149.72:9505)
  3. The entrypoint.sh in the XMR container is as follows:
    #!/bin/sh

Write config.json

echo ‘{’ > /opt/xmr/config.json
echo ’ “listenOn”: “tcp://:50001",’ >> /opt/xmr/config.json
echo ’ “pubOn”: ["tcp://
:9505”],’ >> /opt/xmr/config.json
echo ’ “queuePoll”: ‘$XMR_QUEUE_POLL’,’ >> /opt/xmr/config.json
echo ’ “queueSize”: ‘$XMR_QUEUE_SIZE’,’ >> /opt/xmr/config.json
echo ’ “debug”: ‘$XMR_DEBUG’,’ >> /opt/xmr/config.json
echo ’ “ipv6RespSupport”: ‘$XMR_IPV6RESPSUPPORT’,’ >> /opt/xmr/config.json
echo ’ “ipv6PubSupport”: '$XMR_IPV6PUBSUPPORT >> /opt/xmr/config.json
echo ‘}’ >> /opt/xmr/config.json

and the config.json file will be as follow:
{
“listenOn”: “tcp://lo:50001”,
“pubOn”: [“tcp://:9505"],
“queuePoll”: 5,
“queueSize”: 10,
“debug”: false,
“ipv6RespSupport”: false,
“ipv6PubSupport”: false
}
My question is can i leave the “listenOn”: “tcp://lo:50001” and “pubOn”: ["tcp://
:9505”] as what it is?

XMR private address should be the hostname or IP of the internal network interface on which XMR is exposed. Only the CMS should be able to access this. XMR public address should be the hostname or IP of the external network interface on which the Players can connect to it - so normally a public IP or FQDN.

The XMR config you’ve written is not the result of the code block above.

{
"listenOn": "tcp://:50001",
"pubOn": ["tcp://:9505"],
"queuePoll": 5,
"queueSize": 10,
"debug": false,
"ipv6RespSupport": false,
"ipv6PubSupport": false
}

is what you need, but you must be sure to secure the private port. It should not be exposed to anything but the CMS.

Beyond that as it’s not something we recommend you’ll need to figure out any further details yourself I’m afraid. Everything you need is in the docker-compose.yml file.

Hi Alex,

Pardon me copied the wrong code block, it should be the below with an * in the address. So I do not need to change anything in the config.json file and leave it as per below, am I right?

{
  "listenOn": "tcp://*:50001",
  "pubOn": ["tcp://*:9505"],
  "queuePoll": 5,
  "queueSize": 10,
  "debug": false,
  "ipv6RespSupport": false,
  "ipv6PubSupport": false
}

Any idea on the below?

  1. If I’ve configure memcached and quickchart, how can i find out if they are working as expected?

The config should be exactly as it appears in our standard container. If that has a * then yours should too.

Alright Alex I’m clear now.

Any chance you have the answer to the below question?

  1. If I’ve configure memcached and quickchart, how can i find out if they are working as expected?

For quickchart you’ll need to set the appropriate URL for it in the settings table in the CMS under QUICKCHART_URL. You can then make a report or similar and check the access logs for the quickchart container show that it was created there.

For memcached, there’s no easy way to check it’s working other than the CMS will be horribly broken if you’ve configured it and it’s not.

I’m sorry but because it’s a custom setup and not what we support I can’t offer you any further help with this.

Hi Alex, alright i understand. Thank you for you time and explanation for this topic i really appreciate it!!

1 Like

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.