Self-Host
If hosted Muninn isn't right for you — air-gapped network, sensitive imagery, existing GPU box, or you just like running your own kit — here's the honest path. NodeODM and WebODM are both free, open-source, and built by the same project that powers our cloud pods.
Both run the same ODM engine. The difference is the wrapper around it.
Pick this if you want a processing API
Pick this if you want a full web app
If you're not sure, start with WebODM. You can always strip down to bare NodeODM later.
Both projects are shipped as Docker images. You need Docker installed and ~50 GB free disk per concurrent task.
docker run -p 3000:3000 opendronemap/nodeodm
That's it. Open http://localhost:3000 — you'll see a minimal upload form, or POST to the API directly. Add -v $(pwd)/data:/var/www/data if you want results to survive container restarts.
git clone https://github.com/OpenDroneMap/WebODM --config core.autocrlf=input --depth 1
cd WebODM
./webodm.sh start
On Windows use webodm.bat from PowerShell. The script pulls all required images, runs migrations, and starts the stack on http://localhost:8000. First boot takes a while — the ODM image alone is several GB.
To stop, update, or reset the stack:
./webodm.sh stop
./webodm.sh update
./webodm.sh down # remove containers (keeps data volumes)
opendronemap/odm:gpu) that uses CUDA for SIFT feature extraction. It's 2–3× faster on feature-heavy scenes but needs an NVIDIA GPU plus the NVIDIA Container Toolkit. CPU-only is the default and works fine; just slower.
Photogrammetry is RAM-bound. SIFT feature matching and dense point cloud reconstruction will happily consume every gigabyte you give them. Run out of RAM and the task fails — or thrashes swap for hours and then fails.
| Photo count | Min RAM | Recommended RAM | Wall time (8-core CPU, no GPU) |
|---|---|---|---|
| 50–200 | 8 GB | 16 GB | 30 min – 2 hr |
| 200–500 | 16 GB | 32 GB | 2 – 6 hr |
| 500–1,000 | 32 GB | 64 GB | 6 – 14 hr |
| 1,000–2,000 | 64 GB | 128 GB | 14 – 30+ hr |
A few notes worth knowing up front:
medium; ultra can multiply runtime by 3–5× and RAM by 2×. Tune via --feature-quality and --pc-quality.ODM is enthusiastic about intermediate artifacts. A 500-photo dataset can produce 30–80 GB of working files before you get to the orthophoto and 3D model.
/var/www/data (NodeODM) or /webodm/app/media (WebODM) so results aren't tied to container lifetime.DELETE /task/{uuid} on the API. Otherwise the data dir grows forever.This page is a starting point. The ODM team maintains the real documentation, and it stays current with releases in a way a third-party guide can't:
For settings tuning — --feature-quality, --pc-quality, --matcher-neighbors, --mesh-size, and the rest — the arguments reference is what you want open.
Hosted Muninn handles the GPU pods, the storage, the cleanup, and the queue — and the planner is free forever either way.
Back to Muninn See pricing