Skip to content

Installation

There are two ways to install WebODM on your machine:

Install MethodPriceOperating SystemsInstallation Support
WebODM InstallerPaidWindows, macOS
DockerFreeWindows, macOS, LinuxCommunity

Installers are available for purchase from OpenDroneMap and come with installation support.

https://opendronemap.org/webodm/download/#installer

To install WebODM on your machine with docker, first install:

Windows users should install Docker Desktop and:

  1. Make sure Linux containers are enabled (Switch to Linux Containers)
  2. Give Docker enough CPUs (default 2) and RAM (>4Gb, 16Gb better but leave some for Windows) by going to Settings -- Resources
  3. Select where on your hard drive you want virtual hard drives to reside (Settings -- Resources -- Advanced).
  4. (optional) If you want to run the processing component (NodeODM) with GPU acceleration, install WSL and set up GPU acceleration. It’s supported on Windows 11 or Windows 10, version 21H2 or higher. If you’re just getting started, don’t worry about this one.

Then:

  • Open Git Bash (Windows), or from the command line (Mac / Linux / WSL), type:
Terminal window
git clone https://github.com/OpenDroneMap/WebODM --config core.autocrlf=input --depth 1
cd WebODM
./webodm.sh start
  • If you face any issues at the last step on Linux, make sure your user is part of the docker group:
Terminal window
sudo usermod -aG docker $USER
exit
(restart shell by logging out and then back-in)
./webodm.sh start

🎉 Congratulations! You should be up and running. Open a browser to http://localhost:8000

To stop WebODM press CTRL+C or run:

./webodm.sh stop

To update WebODM to the latest version use:

./webodm.sh update

These steps are for Google Cloud, but can also be used for Amazon AWS, and other cloud platforms with small modifications:

  1. Launch a Google Cloud instance of Ubuntu LTS.
  2. Open the SSH terminal - Google offers SSH via the website.
  3. Run sudo apt-get update
  4. Run sudo apt-get upgrade
  5. Install docker-compose. Do not install via apt for 24.04 onward.
  6. Run sudo apt-get install python-pip
  7. Run git clone https://github.com/OpenDroneMap/WebODM --config core.autocrlf=input --depth 1
  8. cd WebODM (Linux is case sensitive)
  9. sudo ./webodm.sh start
  10. You now can access WebODM via the public IP address for your Google instance. Remember the default port of 8000.
  11. Check that your instance’s firewall is allowing inbound TCP connections on port 8000! If you forget this step you will not be able to connect to WebODM.
  12. Open http://publicip:8000

To setup the firewall on Google Cloud, open the instance, on the middle of the instance settings page find NIC0. Open it, and then add the TCP Port 8000 for ingress, and egress on the firewall.

If you use Lightning or another processor node the requirements for WebODM are low enough for it to run on a fairly low power device such as a NAS. Testing has been done on a Qnap-TS264 with 32Gb of RAM (Celeron N5095 processor) To install WebODM on a Qnap NAS:

  1. Enable ssh access to the NAS in control panel
  2. Install git. This might be easily achieved using the qgit qkpg
  3. Follow the “Installation with Docker” instructions above.
  4. A new “webodm” application should appear in container station along with four individual containers for the app.
  5. WebODM should be available at port 8000 of the NAS.
  6. Setup a Lightning account online and configure it within “processing nodes”. It’s also possible to setup a more powerful computer to run processing tasks instead of Lightning.

WebODM can be linked to one or more processing nodes that speak the NodeODM API, such as NodeODM, NodeMICMAC, ClusterODM and Lightning. The default configuration includes a “node-odm-1” processing node which runs on the same machine as WebODM, just to help you get started. As you become more familiar with WebODM, you might want to install processing nodes on separate machines.

Adding more processing nodes will allow you to run multiple jobs in parallel.

You can also setup a ClusterODM node to run a single task across multiple machines with distributed split-merge and process dozen of thousands of images more quickly, with less memory.

If you don’t need the default “node-odm-1” node, simply pass --default-nodes 0 flag when starting WebODM:

./webodm.sh restart --default-nodes 0.

Then from the web interface simply manually remove the “node-odm-1” node.

WebODM has the ability to automatically request and install a SSL certificate via Let’s Encrypt, or you can manually specify your own key/certificate pair.

  • Setup your DNS record (webodm.myorg.com —> IP of server).
  • Make sure port 80 and 443 are open.
  • Run the following:
Terminal window
./webodm.sh restart --ssl --hostname webodm.myorg.com

That’s it! The certificate will automatically renew when needed.

If you want to specify your own key/certificate pair, simply pass the --ssl-key and --ssl-cert option to ./webodm.sh. See ./webodm.sh --help for more information.

Note! You cannot pass an IP address to the hostname parameter! You need a DNS record setup.

WebODM can use MicMac as a processing engine via NodeMICMAC. To add MicMac, simply run:

./webodm.sh restart --with-micmac

This will create a “node-micmac-1” processing node on the same machine running WebODM. Please note that NodeMICMAC is in active development and is currently experimental. If you find issues, please report them on the NodeMICMAC repository.

Your installation must first have a public IPv6 address. To enable IPv6 on your installation, you need to activate IPv6 in Docker by adding the following to a file located at /etc/docker/daemon.json:

Terminal window
{
"ipv6": true,
"fixed-cidr-v6": "fdb4:4d19:7eb5::/64"
}

Restart Docker: systemctl restart docker

To add IPv6, simply run:

./webodm.sh restart --ipv6

Note: When using --ssl mode, you cannot pass an IP address to the hostname parameter; you must set up a DNS AAAA record. Without --ssl mode enabled, access the site at (e.g., http://[2001:0db8:3c4d:0015::1]:8000). The brackets around the IPv6 address are essential! You can add a new NodeODM node in WebODM by specifying an IPv6 address. Don’t forget to include brackets around the address! e.g., [2001:0db8:fd8a:ae80::1]

SymptomsPossible Solutions
Run out of memoryMake sure that your Docker environment has enough RAM allocated: MacOS Instructions, Windows Instructions
On Windows, docker-compose fails with Failed to execute the script docker-composeMake sure you have enabled VT-x virtualization in the BIOS
Cannot access WebODM using Microsoft Edge on Windows 10Try to tweak your internet properties according to these instructions
Getting a No space left on device error, but hard drive has enough space leftDocker on Windows by default will allocate only 20GB of space to the default docker-machine. You need to increase that amount. See this link and this link
Cannot start WebODM via ./webodm.sh start, error messages are different at each retryYou could be running out of memory. Make sure you have enough RAM available. 2GB should be the recommended minimum, unless you know what you are doing
On Windows, the storage space shown on the WebODM diagnostic page is not the same as what is actually set in Docker’s settings.From Hyper-V Manager, right-click “DockerDesktopVM”, go to Edit Disk, then choose to expand the disk and match the maximum size to the settings specified in the docker settings. Upon making the changes, restart docker.
On Linux or WSL, Warning: GPU use was requested, but no GPU has been foundRun nvidia-smi (natively) or docker run --rm --gpus all nvidia/cuda:11.2.2-devel-ubuntu20.04 nvidia-smi (docker) to check with NVIDIA driver and NVIDIA Container Toolkit.