Installing WebODM on a Synology NAS?

Hi All,

Noob here.

Has anyone successfully installed WebODM on a Synology NAS? I would like to be able to easily share finished 2D and 3D map outputs with customers that are located elsewhere. Is this a possibility? Is there an easier solution?

This is only day two for me using WebODM so I am really just trying to figure out the easiest and most efficient workflow.

To be more specific, I would like the end user to be able to interact with both 2D and 3D renders as we can do within WebODM itself such as zoom and rotate axis.

I see that someone asked the same question a couple of years ago here Installing WebODM - Synology NAS but they never received an answer so here I am :wink:

Thanks!

UPDATE

I ended up reading through some more topics here and discovered Sketchfab. This will do for showing the very basics but would still love to be able to send the client a link and have them able to utilize all the analysis tools located within WebODM if at all possible.

Thanks!

Hi,

Never tried it myself, but if the Synology NAS OS is Linux based or if at least Docker is running you might be able to run WebODM on it. You want to use it only to share results, correct ?

On the WebODM server you used to run the task, go to “Download Assets” > “all assets” you will get a zip file.
On your Synology WebODM, create a new project, then use the “import” button and upload the previous zip file.
I tried it on my server and it cloned an existing project.

Cheers !

If it helps I’ve managed to get DroneDB running on a QNAP NAS using the inbuilt Container Station. The container was downloaded using the GUI from DockerHub. Container station doesn’t offer a lot of options so it basically just worked. I assume Synology has something similar.

1 Like

Hi and thanks for the response. I have docker up and running on the NAS however I am having a hell of a time trying to figure out exactly how to install WebODM on it. I was able to access the NAS via ssh and have GIT installed so tried running the

git clone GitHub - OpenDroneMap/WebODM: User-friendly, commercial-grade software for processing aerial imagery. 🛩 --config core.autocrlf=input --depth 1
cd WebODM
./webodm.sh start

command and it did download something but alas I am not sure what it actually did because I see nothing in docker.

I am a lil lost to say the least lol.

Hi, does DroneDB have the same basic functionality as WebODM? Meaning, are you able to analyze the 3D renderings using something like volume measurements or plant health, zoom, rotate, etc…?

Thanks for the input!

Let list docker images installed on your system, from your ssh shell what:

docker image ls | grep opendronemap

return ?
You should see something like:

opendronemap/webodm_webapp   latest          a1c455782ddd   9 days ago      1.64GB
opendronemap/nodeodm         latest          8ec2da0b2429   12 days ago     1.86GB

The command ./webodm.sh start is pretty verbose by default. You should know by reading the output if your server is up or not. What does the last 10 lines are saying ? In the end you should see a line that goes by Open a web browser and navigate to http://your.server.ip:8000

Hi!!! Sorry for the late response. Been busy as heck and haven’t had a lot of spare time till now. Took me a minute to run the command till I figured out I had to be signed in at root. I ran the command and it returned this:

[email protected]:~# docker image ls | grep opendronemap
opendronemap/nodeodm latest bf4b5cbb5a7c 3 days ago 1.8GB
opendronemap/webodm_webapp latest 3c17d9d8da9c 5 days ago 1.64GB
opendronemap/webodm_db latest e40c0f274bba 11 months ago 695MB
[email protected]:~#

And when I run the “./webodm.sh start” command it returns with:

[email protected]:~# ./webodm.sh start
-ash: ./webodm.sh: No such file or directory
[email protected]:~#

Sorry for putting you through all this!! This stuff is pretty far over my head…but I am capable! lol.

I also tried navigating to http://my.server.ip:8000 just to check, but nada.

UPDATE!!!

Scratch all that. We were getting a false reading. When I first installed docker on my NAS I had manually added those 3 images via the “Registry” in docker. I tested this just now by removing “opendronemap/webodm_db” from docker and rerunning the docker image ls | grep opendronemap and it was removed.

So I am back at square 1 I think.

Yeah you did not launch the ./webodm.sh start command from the WebODM directory, so it did not worked. (Hence the cd WebODM/ command you should have send before).

Post the results of the commands you threw at a terminal so we can help you, otherwise there is no way to tell what went wrong.

So let’s back to the beginning, launch a ssh session and try 1 line at a time:

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

and post the results of each command.

Hi and thanks for all the help!

Here are the results from running the commands:

[email protected]:~$ git clone GitHub - OpenDroneMap/WebODM: User-friendly, commercial-grade software for processing aerial imagery. 🛩 --config core.autocrlf=input --depth 1
fatal: destination path ‘WebODM’ already exists and is not an empty directory.
[email protected]:~$ cd WebODM
[email protected]:~/WebODM$ ./webodm.sh start
Checking for docker… 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 up --scale node-odm=1
Traceback (most recent call last):
File “urllib3/connectionpool.py”, line 677, in urlopen
File “urllib3/connectionpool.py”, line 392, in _make_request
File “http/client.py”, line 1277, in request
File “http/client.py”, line 1323, in _send_request
File “http/client.py”, line 1272, in endheaders
File “http/client.py”, line 1032, in _send_output
File “http/client.py”, line 972, in send
File “docker/transport/unixconn.py”, line 43, in connect
PermissionError: [Errno 13] Permission denied

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “requests/adapters.py”, line 449, in send
File “urllib3/connectionpool.py”, line 727, in urlopen
File “urllib3/util/retry.py”, line 410, in increment
File “urllib3/packages/six.py”, line 734, in reraise
File “urllib3/connectionpool.py”, line 677, in urlopen
File “urllib3/connectionpool.py”, line 392, in _make_request
File “http/client.py”, line 1277, in request
File “http/client.py”, line 1323, in _send_request
File “http/client.py”, line 1272, in endheaders
File “http/client.py”, line 1032, in _send_output
File “http/client.py”, line 972, in send
File “docker/transport/unixconn.py”, line 43, in connect
urllib3.exceptions.ProtocolError: (‘Connection aborted.’, PermissionError(13, ‘Permission denied’))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “docker/api/client.py”, line 214, in _retrieve_server_version
File “docker/api/daemon.py”, line 181, in version
File “docker/utils/decorators.py”, line 46, in inner
File “docker/api/client.py”, line 237, in _get
File “requests/sessions.py”, line 543, in get
File “requests/sessions.py”, line 530, in request
File “requests/sessions.py”, line 643, in send
File “requests/adapters.py”, line 498, in send
requests.exceptions.ConnectionError: (‘Connection aborted.’, PermissionError(13, ‘Permission denied’))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “docker-compose”, line 3, in
File “compose/cli/main.py”, line 80, in main
File “compose/cli/main.py”, line 189, in perform_command
File “compose/cli/command.py”, line 70, in project_from_options
File “compose/cli/command.py”, line 153, in get_project
File “compose/cli/docker_client.py”, line 43, in get_client
File “compose/cli/docker_client.py”, line 170, in docker_client
File “docker/api/client.py”, line 197, in init
File “docker/api/client.py”, line 222, in _retrieve_server_version
docker.errors.DockerException: Error while fetching server API version: (‘Connection aborted.’, PermissionError(13, ‘Permission denied’))
[12210] Failed to execute script docker-compose
[email protected]:~/WebODM$

At least something new is happening :slight_smile:

You were not logged as root, just as regular user (hence the [email protected]:~$). Try again from a root ssh session:

cd WebODM
./webodm.sh start

damn… you are good! That was it!!! Git Bash is currently downloading the source files. I will let you know how that goes :slight_smile:

WE DID IT!!! :grin: :grin: :sweat_smile:

Everything is up and running and works perfectly! I already imported a project and its all good to go!!!

Thanks so much for all your help with this. I’m sure I will have more questions in the near future lol

Great !

So right now, the server will stop if you hit Ctrl+C (clean stop) or if you close the terminal/ssh session (not a clean stop). To detach webodm from the terminal next time you will need to launch it with the following command: ./webodm.sh start --detached and stop it with a ./webodm.sh stop

If you want to start the webodm server as soon as your NAS start or reboot we will have to put some thoughts on it.

Enjoy,

Datux

That’s good info to have! What about stopping the containers within docker itself? Will that do the same thing? Can I simply RUN and STOP the containers within docker without having to open CMD?

Not sure if it’s intended. I tried with docker container stop CONTAINER_ID but it was far from a graceful stop, I probably did not stop the various ODM containers in the right order. I also tried with docker-compose down from the WebODM directory but I ended with an orphan node-odm.

So AFAIK I will not recommend to stop it manually.

On your Synology is there no way to launch a script from the GUI ?

Hi,

I don’t see any way to launch a terminal in Synology. It looks like there use to be but seems they got rid of it. So, with that said, what is the safest way to stop ODM?