Skip to content

Commit 11b77e9

Browse files
authored
Merge pull request #1798 from pierotofy/impprof
Revamp docs, move information from README to docs
2 parents 28fc33c + 935dee5 commit 11b77e9

File tree

13 files changed

+472
-724
lines changed

13 files changed

+472
-724
lines changed

README.md

Lines changed: 5 additions & 525 deletions
Large diffs are not rendered by default.

contrib/Hard_Recovery_Guide.md

Lines changed: 0 additions & 124 deletions
This file was deleted.

contrib/ubuntu_1604_install.sh

Lines changed: 0 additions & 61 deletions
This file was deleted.

docs/astro.config.mjs

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,59 @@ export default defineConfig({
1818
customCss: [
1919
'./src/styles/custom.css',
2020
],
21-
social: [{ icon: 'github', label: 'GitHub', href: 'https://github.com/OpenDroneMap/WebODM' }],
21+
social: [
22+
{ icon: 'discourse', label: 'Community Forum', href: 'https://community.opendronemap.org' },
23+
{ icon: 'github', label: 'GitHub', href: 'https://github.com/OpenDroneMap/WebODM' }
24+
],
2225
sidebar: [
2326
{
24-
label: 'Quickstart',
25-
slug: 'quickstart'
27+
label: 'Installation',
28+
slug: 'installation'
29+
},
30+
{
31+
label: 'Hardware Requirements',
32+
slug: 'hardware-requirements'
33+
},
34+
{
35+
label: 'Common Tasks',
36+
slug: 'common-tasks'
2637
},
2738
{
28-
label: 'Reference',
29-
autogenerate: { directory: 'reference' },
39+
label: 'Frequently Asked Questions',
40+
slug: 'faq'
3041
},
3142
{
32-
label: 'Contributing',
33-
slug: 'contributing'
43+
label: 'Support the Project',
44+
slug: 'support-the-project'
3445
},
3546
{
36-
label: 'Plugin Development Guide',
37-
slug: 'plugin-development-guide'
47+
label: 'Developers',
48+
items: [
49+
{
50+
label: 'Contributing',
51+
slug: 'contributing'
52+
},
53+
{
54+
label: 'Architecture',
55+
slug: 'architecture'
56+
},
57+
{
58+
label: 'Roadmap',
59+
slug: 'roadmap'
60+
},
61+
{
62+
label: 'Plugin Development Guide',
63+
slug: 'plugin-development-guide'
64+
},
65+
{
66+
label: 'API Quickstart',
67+
slug: 'quickstart'
68+
},
69+
{
70+
label: 'API Reference',
71+
autogenerate: { directory: 'reference' },
72+
},
73+
]
3874
},
3975
],
4076
}),
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
title: Architecture
3+
template: doc
4+
---
5+
6+
The [OpenDroneMap project](https://github.com/OpenDroneMap/) is composed of several components.
7+
8+
- [ODM](https://github.com/OpenDroneMap/ODM) is a command line toolkit that processes aerial images. Users comfortable with the command line are probably OK using this component alone.
9+
- [NodeODM](https://github.com/OpenDroneMap/NodeODM) is a lightweight interface and API (Application Program Interface) built directly on top of [ODM](https://github.com/OpenDroneMap/ODM). Users not comfortable with the command line can use this interface to process aerial images and developers can use the API to build applications. Features such as user authentication, map displays, etc. are not provided.
10+
- [WebODM](https://github.com/OpenDroneMap/WebODM) adds more features such as user authentication, map displays, 3D displays, a higher level API and the ability to orchestrate multiple processing nodes (run jobs in parallel). Processing nodes are simply servers running [NodeODM](https://github.com/OpenDroneMap/NodeODM).
11+
12+
![webodm](https://cloud.githubusercontent.com/assets/1951843/25567386/5aeec7aa-2dba-11e7-9169-aca97b70db79.png)
13+
14+
WebODM is built with scalability and performance in mind. While the default setup places all databases and applications on the same machine, users can separate its components for increased performance (ex. place a Celery worker on a separate machine for running background tasks).
15+
16+
![Architecture](https://user-images.githubusercontent.com/1951843/36916884-3a269a7a-1e23-11e8-997a-a57cd6ca7950.png)
17+
18+
A few things to note:
19+
* We use Celery workers to do background tasks such as resizing images and processing task results, but we use an ad-hoc scheduling mechanism to communicate with NodeODM (which processes the orthophotos, 3D models, etc.). The choice to use two separate systems for task scheduling is due to the flexibility that an ad-hoc mechanism gives us for certain operations (capture task output, persistent data and ability to restart tasks mid-way, communication via REST calls, etc.).
20+
* If loaded on multiple machines, Celery workers should all share their `app/media` directory with the Django application (via network shares). You can manage workers via `./worker.sh`
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
title: Common Tasks
3+
template: doc
4+
---
5+
6+
It's fairly straightforward to manage an installation of WebODM. Here's a list of common operations you might need to do:
7+
8+
## Reset Admin Password
9+
10+
If you forgot the password you picked the first time you logged into WebODM, to reset it just type:
11+
12+
```bash
13+
./webodm.sh start && ./webodm.sh resetadminpassword newpass
14+
```
15+
16+
The password will be reset to `newpass`. The command will also tell you what username you chose.
17+
18+
## Backup and Restore
19+
20+
If you want to move WebODM to another system, you just need to transfer the docker volumes (unless you are storing your files on the file system).
21+
22+
On the old system:
23+
24+
```bash
25+
mkdir -v backup
26+
docker run --rm --volume webodm_dbdata:/temp --volume `pwd`/backup:/backup ubuntu tar cvf /backup/dbdata.tar /temp
27+
docker run --rm --volume webodm_appmedia:/temp --volume `pwd`/backup:/backup ubuntu tar cvf /backup/appmedia.tar /temp
28+
```
29+
30+
Your backup files will be stored in the newly created `backup` directory. Transfer the `backup` directory to the new system, then on the new system:
31+
32+
```bash
33+
ls backup # --> appmedia.tar dbdata.tar
34+
./webodm.sh down # Make sure WebODM is down
35+
docker run --rm --volume webodm_dbdata:/temp --volume `pwd`/backup:/backup ubuntu bash -c "rm -fr /temp/* && tar xvf /backup/dbdata.tar"
36+
docker run --rm --volume webodm_appmedia:/temp --volume `pwd`/backup:/backup ubuntu bash -c "rm -fr /temp/* && tar xvf /backup/appmedia.tar"
37+
./webodm.sh start
38+
```
39+
40+
## Update
41+
42+
If you use docker, updating is as simple as running:
43+
44+
```bash
45+
./webodm.sh update
46+
```
47+
48+
## Customizing and Extending
49+
50+
Small customizations such as changing the application colors, name, logo, or adding custom CSS/HTML/Javascript can be performed directly from the Customize -- Brand/Theme panels within WebODM. No need to fork or change the code.
51+
52+
More advanced customizations can be achieved by [writing plugins](/plugin-development-guide/). This is the preferred way to add new functionality to WebODM since it requires less effort than maintaining a separate fork. The plugin system features server-side signals that can be used to be notified of various events, a ES6/React build system, a dynamic client-side API for adding elements to the UI, a built-in data store, an async task runner, hooks to add menu items and functions to rapidly inject CSS, Javascript and Django views.
53+
54+
To learn more, start from the [plugin development guide](https://docs.webodm.org/plugin-development-guide/). It's also helpful to study the source code of [existing plugins](https://github.com/OpenDroneMap/WebODM/tree/master/coreplugins).
55+
56+
If a particular hook / signal for your plugin does not yet exist, [request it](https://github.com/OpenDroneMap/WebODM/issues). We are adding hooks and signals as we go.

docs/src/content/docs/faq.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
title: Frequently Asked Questions
3+
template: doc
4+
---
5+
6+
## Where Are My Files Stored?
7+
8+
When using Docker, all processing results are stored in a docker volume and are not available on the host filesystem. There are two specific docker volumes of interest:
9+
1. Media (called webodm_appmedia): This is where all files related to a project and task are stored.
10+
2. Postgres DB (called webodm_dbdata): This is what Postgres database uses to store its data.
11+
12+
For more information on how these two volumes are used and in which containers, please refer to the [docker-compose.yml](docker-compose.yml) file.
13+
14+
For various reasons such as ease of backup/restore, if you want to store your files on the host filesystem instead of a docker volume, you need to pass a path via the `--media-dir` and/or the `--db-dir` options:
15+
16+
```bash
17+
./webodm.sh restart --media-dir /home/user/webodm_data --db-dir /home/user/webodm_db
18+
```
19+
20+
Note that existing task results will not be available after the change. Refer to the [Migrate Data Volumes](https://docs.docker.com/engine/tutorials/dockervolumes/#backup-restore-or-migrate-data-volumes) section of the Docker documentation for information on migrating existing task results.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
title: Hardware Requirements
3+
template: doc
4+
---
5+
6+
To run a standalone installation of WebODM (the user interface), including the processing component ([NodeODM](https://github.com/OpenDroneMap/NodeODM)), we recommend at a minimum:
7+
8+
* 100 GB free disk space
9+
* 16 GB RAM
10+
11+
Don't expect to process more than a few hundred images with these specifications. To process larger datasets, add more RAM linearly to the number of images you want to process:
12+
13+
| Number of Images | RAM or RAM + Swap (GB) |
14+
| ---------------- | ---------------------- |
15+
| 40 | 4 |
16+
| 250 | 16 |
17+
| 500 | 32 |
18+
| 1500 | 64 |
19+
| 2500 | 128 |
20+
| 3500 | 192 |
21+
| 5000 | 256 |
22+
23+
:::note
24+
25+
These are conservative estimates. A lot of factors influence memory usage, such as image dimensions, flight altitude and processing settings. So you might be able to process more images with less memory than reported above.
26+
27+
:::
28+
29+
A CPU with more cores will speed up processing, but can increase memory usage. GPU acceleration is also supported on Linux and WSL. To make use of your CUDA-compatible graphics card, make sure to pass `--gpu` when starting WebODM. You need the nvidia-docker installed in this case, see https://github.com/NVIDIA/nvidia-docker and https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#docker for information on docker/NVIDIA setup.
30+
31+
WebODM runs best on Linux, but works well on Windows and Mac too.
32+
33+
WebODM by itself is just a user interface and does not require many resources. WebODM can be loaded on a machine with just 1 or 2 GB of RAM and work fine without [NodeODM](https://github.com/OpenDroneMap/NodeODM). You can use a processing service such as [webodm.net](https://webodm.net) or run NodeODM on a separate, more powerful machine.

0 commit comments

Comments
 (0)