Help to use ClusterODM on desktop and laptop

Hi, I have been using WebODM on my laptop for some time and I wanted to try using ClusterODM to take advantage of the laptop and the desktop PC at the same time. Both are connected to the local network via the home modem-router. I installed NodeODM and also ClusterODM on both computers, following the instructions on GitHub. At this point I tried to start NodeODM on the desktop PC and to open ClusterODM on the laptop, giving the command:
node index.js
and immediately after:
telnet localhost 8080

HELP
NODE ADD nodeodm-host 3001
NODE LIST

and connecting to http://localhost:3000, exactly as indicated on GitHub; later I opened a browser window at http://localhost:10000, but no nodes were listed. I tried to start NodeODM also on the laptop, but the one among the available nodes did not appear either.
I’m afraid I didn’t understand how ClusterODM works, I tried to search a bit on this forum but there isn’t much information. In addition, reading the introductory page of WebODM it says that it is possible to connect it to ClusterODM to manage the various nodes, but it is not clear to me how to do it.
Anyone more experienced than me could kindly help me and give me some more detailed and simple indications on how to use ClusterODM? I really thank you for your availability and dedicated time.

PS: I apologize for the language errors, I am Italian and I don’t speak English very well.

No worries. Your English is much better than my Italian. :wink:

You need to know the IP of your NodeODM instance. If that were 192.168.1.10 then you would run the following:

NODE ADD 192.168.1.10

And then it should show up as active when you run NODE LIST

Thank you very much.
Is there a command to see the IP address of the NodeODM instance? because I want to add two NodeODM instances (the one on the laptop and the one on the desktop) and I guess they don’t both have the same IP address (or I’m wrong, my computer skills are a bit limited :neutral_face:)

Unless you ran the command for starting WebODM in a strange way, it should auto-add the local node.

What’s the operating system and how are you running your nodes (natively or docker)?

The operating system is Ubuntu 18.04.4 LTS on both computers, and I run my nodes through docker. On the laptop I use WebODM, while on the desktop I use NodeODM because for some strange reason I can’t install WebODM (I tried to ask for a solution on the forum)

Can you send the command that you use for running on docker?

To run NodeODM on my desktop PC I type on the Linux terminal:

docker run -p 3000:3000 opendronemap/nodeodm

and then I connect to http://127.0.0.1.:3000 on Firefox.
Exactly as explained in the instruction page on GitHub.

Instead to open WebODM, always on the desktop computer, I do:

git clone https://github.com/OpenDroneMap/WebODM --config core.autocrlf=input --depth 1
cd WebODM
./webodm.sh start

but I get the following error:

 ~/WebODM$ ./webodm.sh start
Checking for docker… OK
Checking for git… OK
Checking for docker-compose… OK
Starting WebODM…
Using the following environment:
Host: localhost

Port: 8000
Media directory: appmedia
SSL: NO
SSL key:
SSL certificate:
SSL insecure port redirect: 80
Celery Broker: redis://broker
Default Nodes: 1

Make sure to issue a ./webodm.sh down if you decide to change the environment.

docker-compose -f docker-compose.yml -f docker-compose.nodeodm.yml start || docker-compose -f docker-compose.yml -f docker-compose.nodeodm.yml up --scale node-odm=1
ERROR: Couldn’t connect to Docker daemon at http+docker://localhost - is it running?

If it’s at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
ERROR: Couldn’t connect to Docker daemon at http+docker://localhost - is it running?

If it’s at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

On your node, if you run ifconfig you should get a list of IP addresses. What output do you get when you run this command?

~$ ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:51ff:fe96:1758  prefixlen 64  scopeid 0x20<link>
        ether 02:42:51:96:17:58  txqueuelen 0  (Ethernet)
        RX packets 464262  bytes 41534251 (41.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 921506  bytes 1431630326 (1.4 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.138  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::63eb:47f6:df20:d9ba  prefixlen 64  scopeid 0x20<link>
        ether d0:50:99:3d:15:18  txqueuelen 1000  (Ethernet)
        RX packets 1009291  bytes 1478202759 (1.4 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 482748  bytes 43662630 (43.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Loopback locale)
        RX packets 2149  bytes 6196817 (6.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2149  bytes 6196817 (6.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth456b754: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::b88c:2eff:fea5:bc10  prefixlen 64  scopeid 0x20<link>
        ether ba:8c:2e:a5:bc:10  txqueuelen 0  (Ethernet)
        RX packets 464262  bytes 48033919 (48.0 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 921579  bytes 1431637604 (1.4 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth92e9b5e: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::14b4:48ff:fe02:f7b5  prefixlen 64  scopeid 0x20<link>
        ether 16:b4:48:02:f7:b5  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 30  bytes 3502 (3.5 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

I made progress on my own: from the management page of my router I found the IP address of my desktop computer (on which NodeODM runs) and I used it to add it between the WebODM processing nodes on my laptop, by clicking on the “add new” in the “processing nodes” section.
Now I can, from my laptop, to process a process on the desktop computer, selecting it from the available nodes.
What I still can’t do, and I would like to do instead, is to divide the workload over several nodes. From the WebODM interface, only one node can be selected for each project

Select the ClusterODM node for processing and make sure to set a “split” and “split-overlap” option as appropriate for your dataset.

1 Like

and how can I do this?