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?

I’m in a similar situation but I’m running on native Windows 10.
I have nodeODM running on two desktops and WebODM running on my laptop. On my laptop I am able to run jobs on each of the two desktops (I added them as processing nodes). On my laptop, i start up ClusterODM and start a browser at localhost:10000 but no nodes show up. What step(s) am I missing. I see on Github there is a request to automatically add nodes to ClusterODM and that sounds great.

However, for now it appears I need to manually add my nodes to some file but I don’t know what that file name is (nodes.json doesn’t exist in the data folder under ClusterODM). Or do I need to add a processing node to WebODM which is the ClusterODM?

thanks

PS. there is no “Add Node” button on my browser screen for ClusterODM 1.5.3, just the enable refresh button.

Go to the management port which is (I think) port 10,000

I am on port 10,000. Port 3000 shows no nodes.

Telnet into localhost 8080 gave the same errors on every key press that others have reported. Using Putty just gives me a black screen where others reported that it worked. Not sure what else to try.

Okay, I just discovered that I had to change the settings in Putty to “OTHER”

image

adding nodes:

refresh browser:

2 Likes

It’s odd that you do’t have an add node option in ClusterODM, but glad you can make the changes in telnet. For reference, this is what I see when I launch ClusterODM:

1 Like

I’m running native Windows 10 (updated) and there is not a button for addnode.

I think I finally got WebODM setup with my cluster.

And yes, I have a job running each of my two desktop computers. The one without jobs is this laptop.

I made this change on my laptop where the ClusterODM software is running.

What a pain in the neck setting this up was. It’s easy, really, but I had to read 20 some different posts and multiple github pages to piece the information together. Now my next challenge will be how to split up the images in a job to spread them out to my nodes. Everything I’ve read shows command line commands from within Docker and nothing for us Windows folks.

1 Like

I’m having trouble with the setup to get my job to be Split and Spread out to the nodes in my cluster. My job was just running on the local machine.

image

In WebODM I have manually edited the config as follows:

Suggestions?
thanks

1 Like

You will need to set the split and split-overlap parameters and remove the sm-cluster text that precedes the ClusterODM URL from the sm-cluster text field, as it is only expecting a url and port