[DISCUSSION] OCTO setup in docker-jitsi-meet instance

Hello community,

We have a new PR for setting up OCTO in our docker-jitsi-meet instance. I will mention my infrastructure for the same and everything I have done.

Machine IP Role Docker Swarm Role
A 172.16.4.200 Full Docker Jitsi Meet Stack Docker swarm Leader
B 172.16.4.231 JVB2 Docker Swarm Node
C 172.16.4.232 JVB3 Docker Swarm Node
D 172.16.4.233 JVB4 Docker Swarm Node

How do I go ahead after this ?

  1. Make minimum 3 master nodes to avoid single point of failure.
  2. Is Octo enabled ? You can check jicofo and jvb logs for Octo.

Here I’m assuming that all the nodes are connected to each other. you can check docker node ls.
also you have registered all the JVB’s with prosody.

@metadata yes they are.

But I am stuck at deploying the stack. Gives me an error when I try to run this command

docker stack deploy --compose-file docker-compose.yml jitsi

Ignoring unsupported options: restart

Ignoring deprecated options:

expose: Exposing ports is unnecessary - services on the same network can access each other's containers on any port.

Creating network jitsi_meet.jitsi
Error response from daemon: rpc error: code = 3 desc = name must be valid as a DNS name component

@metadata

  1. Minimum Master - yes that will be done.
  2. OCTO - checking.

share your swarm file.

@metadata I have never used swarm before so. It might sound silly but I am using the regular docker-compose.yml file only. Do I need to make any swarm related changes in the same file ?

Just joined all the three nodes B C and D to A

ok. Everything is fine as of now. Now did you try scaling jvb? Any error?

@metadata exactly, how do I scale jvb’s ? I have just deployed it as it is. Can you help me with this ?

@metadata moreover, how do I deploy this stack on docker-swarm

Also when I try to register jvb1, I get this error

prosodyctl --config /config/prosody.cfg.lua register jvb1 meet.jitsi 7274a4a3bd749c14a5d853ae4da6971e
Error: Account creation/modification not supported

You have to scale jvb using Octo approach. for same create a file stack-jvb2.yml, copy jvb1 config to it and change jvb1 with jvb2 and then register jvb2 with prosody.
you have to change the service name too

@metadata thanks for the reply, these are the queries that I have

  1. this stack-jvb2.yml will be in my machine B right ?
  2. jvb1 config will be in machine A, but where exactly ?
  3. I have issues registering. I don’t understand why
  4. I am still running this entire stack as a docker installation. I cannot figure out how to do the same for docker swarm

Copy all your files like stack-jitsi.yml, stack-jvb1.yml stack-jvb2.yml to server A. You can control where to run jvb1, jvb2 using constraints like node.hostname == A. hence you don’t have to copy all the files to every server.

what is the value of env CONFIG? for me its ~/.jitsi-meet-cfg. I run below command on every server to remove the previous config and to create new directories.
sudo rm -rf ~/.jitsi-meet-cfg/{web,prosody,jicofo,jvb} && mkdir ~/.jitsi-meet-cfg/{web,prosody,jicofo,jvb}

Is docker swarm initialized? can you share the output of docker node ls

@metadata

  1. I have cloned the same repo - https://github.com/jitsi/docker-jitsi-meet/pull/804 on every machine. Machine A has the entire stack ( web, prosody, jvb and jicofo ). On machine B, I have the same docker-compose.yml which was on A, in which only jvb configs are there. Same goes for C and D. The only difference is, in .env, I have erased the JVB_AUTH_PASSWORD and kept it the same as the one which is on machine A and JVB_AUTH_USER as jvb on machine A, jvb1 on machine B, jvb2 on machine C and JVB 3 on machine D.

I init docker swarm just now and joined the other 3 machines ( b c and d )

docker node ls

image

I have the above mentioned issue while registering anything in prosofy container

Value of CONFIG is the same and I remove it everytime before spinning up new containers

If you are not creating your own docker image then there is no need to clone the repo.

  1. create your own docker image for jvb
  2. hard code the jvb2 authentication in prosody file and build your own prosody image.
  3. you have to build jicofo image too.

Did you create new docker images for prosody, jicofo, jvb? OR You have to wait till next release.

go to prosody/rootfs/etc/cont-init-d/10-config and add below lines
prosodyctl --config $PROSODY_CFG register jvb1 $XMPP_AUTH_DOMAIN $JVB_AUTH_PASSWORD
prosodyctl --config $PROSODY_CFG register jvb2 $XMPP_AUTH_DOMAIN $JVB_AUTH_PASSWORD

it will register both the jvb’s at runtime.

now you have create your own docker image

@metadata so like, it won’t work as expected just by cloning the repo like I used to do before. What I thought, or what I was expecting is, after cloning this repo, and running it, my docker jitsi meet setup will be up and running and then, I can connect any number of jvb’s to machine a’s prosody. Seems that this is not the case.

I have to build by own images. Right ?

exactly. If you are using Jitsi images then there is no need of cloning repo in case of docker swarm but if you are using docker-compose then yes you need a repo becuase it used .env file.