Windows Installer Change Default Port and IP

Hi friends!

Just installed WebODM from the precompiled installer (which was awesome and absolutely worth the money IMHO). I am having issues changing the Port of the web interface and the IP it is being severed on. By default, it is running on port 29800 and only on my local host (127.0.0.1). I would prefer to change the port to something different, but really want to change to IP access to be my machine’s local IP (192.168.2.10). Any guidance here would be appreciated since all existing documentation looks to point to Docker, which I don’t believe that is what the current installer does.

Thanks for the help!

1 Like

Welcome!

Sorry for the trouble.

Can you help me understand your use-case better? Do you need port 8000 open for another software you also run? If this is a common thing, we might need to look into allowing easy adjustments to things like this.

I think there is a confusion here, the application is IP agnostic. It is just running on the computer. You can either access it throught your local ip (localhost or 127.0.0.1) on the same computer that run it, or access it throught your computer local IP (192.168.2.10) from the same computer or another computer on the same network (if your firewall allows it).
So if you cannot access it from another computer on the same network you should look at your firewall rules I think.

1 Like

So much less of an issue if I pull the SSL cert since from what I read in the documentation that involves changing the port. I was more concerned that the installer chose that random 29800 instead of 8000 as my default port.

1 Like

So I thought of the firewall and completely disabled it for testing purposes, no joy. I was worried that there was a config file somewhere that told the web app to boot only to local host IP and not to allow any other IP.

I will do a clean install this evening on a new server and report back to see if I get the same behavior.

1 Like

I booted up a clean install of Server 2019 and installed WebODM with the package windows installer. WebODM is only accessible over 127.0.0.1:29800. I am unable to access it over the local network with it’s IP of http://192.168.2.10:29800. Not really sure where to go from here.

Here are the logs as well from WebODM. Any advice would be appreciated.

"Booting WebODM 1.9.16 build 73..."
"Trying to connect to NodeODM localhost:29301..."
"nodeodm: info: Authentication using SimpleToken\r\n"
"nodeodm: info: Listening on 0.0.0.0:6367 UDP for progress updates\r\n"
"nodeodm: info: No tasks dump found\r\n"
"nodeodm: info: Checking for orphaned directories to be removed...\r\n"
"nodeodm: info: Server has started on port 29301\r\n"
"Connected to NodeODM 2.2.0"
"redis-server:                 _._                                                  \n           _.-``__ ''-._                                             \n      _.-``    `.  `_.  ''-._           Redis 3.2.100 (00000000/0) 64 bit\n  .-`` .-```.  ```\\/    _.,_ ''-._                                   \n (    '      ,       .-`  | `,    )     Running in standalone mode\n |`-._`-...-` __...-.``-._|'` _.-'|     Port: 29379\n |    `-._   `._    /     _.-'    |     PID: 4180\n  `-._    `-._  `-./  _.-'    _.-'                                   \n |`-._`-._    `-.__.-'    _.-'_.-'|                                  \n |    `-._`-._        _.-'_.-'    |           http://redis.io        \n  `-._    `-._`-.__.-'_.-'    _.-'                                   \n |`-._`-._    `-.__.-'    _.-'_.-'|                                  \n |    `-._`-._        _.-'_.-'    |                                  \n  `-._    `-._`-.__.-'_.-'    _.-'                                   \n      `-._    `-.__.-'    _.-'                                       \n          `-._        _.-'                                           \n              `-.__.-'                                               \n\n[4180] 25 Nov 11:40:38.638 # Server started, Redis version 3.2.100\n[4180] 25 Nov 11:40:38.638 * The server is now ready to accept connections on port 29379\n"
"Trying to connect to postgres localhost:29543..."
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/pg_ctl: server starting\r\n"
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/psql: psql: FATAL:  password authentication failed for user \"postgres\"\r\n"
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/psql: exited with code 2"
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/psql: exited with code 0"
"Setting postgres password..."
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/psql: ALTER ROLE\r\n"
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/psql: exited with code 0"
"Postgres password is set"
"python: Generated secret key\r\nOperations to perform:\r\n  Apply all migrations: admin, app, auth, contenttypes, guardian, nodeodm, sessions\r\nRunning migrations:\r\n  No migrations to apply.\r\n"
"python: exited with code 0"
"python: exited with code 0"
"python: INFO:waitress:Serving on http://127.0.0.1:29800\r\n"
"python: [2022-11-25 11:40:59,545: INFO/MainProcess] Connected to redis://:**@127.0.0.1:29379//\r\n"
"python: [2022-11-25 11:40:59,551: INFO/MainProcess] mingle: searching for neighbors\r\n"
"python: [2022-11-25 11:41:00,562: INFO/MainProcess] mingle: all alone\r\n"
"python: [2022-11-25 11:41:00,578: INFO/MainProcess] pidbox: Connected to redis://:**@127.0.0.1:29379//.\r\n"
"python: [2022-11-25 11:41:00,579: INFO/MainProcess] [email protected] ready.\r\n"
"python: [2022-11-25 11:41:00,681: INFO/MainProcess] Received task: worker.tasks.cleanup_tmp_directory[4829a9e4-3b12-4197-9355-4fbe87c368e4]   expires:[2022-11-25 20:10:57.866346+00:00]\r\n"
"python: [2022-11-25 11:41:00,685: ERROR/MainProcess] Task worker.tasks.cleanup_tmp_directory[4829a9e4-3b12-4197-9355-4fbe87c368e4] raised unexpected: FileNotFoundError(2, 'The system cannot find the path specified')\r\nTraceback (most recent call last):\r\n  File \"C:\\WebODM\\resources\\app\\apps\\grass78\\Python39\\lib\\site-packages\\celery\\app\\trace.py\", line 385, in trace_task\r\n    R = retval = fun(*args, **kwargs)\r\n  File \"C:\\WebODM\\resources\\app\\apps\\grass78\\Python39\\lib\\site-packages\\celery\\app\\trace.py\", line 650, in __protected_call__\r\n    return self.run(*args, **kwargs)\r\n  File \"C:\\WebODM\\resources\\app\\apps\\WebODM\\worker\\tasks.py\", line 57, in cleanup_tmp_directory\r\n    for f in os.listdir(tmpdir):\r\nFileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\\\WebODM\\\\resources\\\\app\\\\data\\\\media\\\\tmp'\r\n"
"python: INFO Booting WebODM 1.9.16\r\nINFO:app.logger:Booting WebODM 1.9.16\r\n"
"python: INFO Created default group\r\nINFO:app.logger:Created default group\r\n"
"python: INFO Regenerate cache for app\\static\\app\\css\\theme.scss\r\nINFO:app.logger:Regenerate cache for app\\static\\app\\css\\theme.scss\r\n"
"python: INFO Created default theme\r\nINFO:app.logger:Created default theme\r\n"
"python: INFO Regenerate cache for app\\static\\app\\css\\theme.scss\r\nINFO:app.logger:Regenerate cache for app\\static\\app\\css\\theme.scss\r\n"
"python: INFO Regenerate cache for app\\static\\app\\css\\theme.scss\r\nINFO:app.logger:Regenerate cache for app\\static\\app\\css\\theme.scss\r\nINFO Created settings\r\nINFO:app.logger:Created settings\r\n"
"python: INFO Running npm install for [coreplugins.changedetection.plugin]\r\nINFO:app.logger:Running npm install for [coreplugins.changedetection.plugin]\r\n"
"python: WARNING npm is not installed, will skip this plugin\r\nWARNING:app.logger:npm is not installed, will skip this plugin\r\n"
"python: INFO Running npm install for [coreplugins.cloudimport.plugin]\r\nINFO:app.logger:Running npm install for [coreplugins.cloudimport.plugin]\r\n"
"python: WARNING npm is not installed, will skip this plugin\r\nWARNING:app.logger:npm is not installed, will skip this plugin\r\n"
"python: INFO Running npm install for [coreplugins.dronedb.plugin]\r\nINFO:app.logger:Running npm install for [coreplugins.dronedb.plugin]\r\n"
"python: WARNING npm is not installed, will skip this plugin\r\nWARNING:app.logger:npm is not installed, will skip this plugin\r\n"
"python: INFO Running npm install for [coreplugins.elevationmap.plugin]\r\nINFO:app.logger:Running npm install for [coreplugins.elevationmap.plugin]\r\n"
"python: WARNING npm is not installed, will skip this plugin\r\nWARNING:app.logger:npm is not installed, will skip this plugin\r\n"
"python: INFO Running npm install for [coreplugins.measure.plugin]\r\nINFO:app.logger:Running npm install for [coreplugins.measure.plugin]\r\n"
"python: WARNING npm is not installed, will skip this plugin\r\nWARNING:app.logger:npm is not installed, will skip this plugin\r\n"
"python: INFO Added [[coreplugins.changedetection.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.changedetection.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.cloudimport.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.cloudimport.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.contours.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.contours.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.diagnostic.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.diagnostic.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.dronedb.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.dronedb.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.editshortlinks.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.editshortlinks.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.elevationmap.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.elevationmap.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.fullscreen.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.fullscreen.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.lightning.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.lightning.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.measure.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.measure.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.openaerialmap.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.openaerialmap.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.osm-quickedit.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.osm-quickedit.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.posm-gcpi.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.posm-gcpi.plugin]] plugin to database\r\n"
"python: INFO Added [[coreplugins.shortlinks.plugin]] plugin to database\r\nINFO:app.logger:Added [[coreplugins.shortlinks.plugin]] plugin to database\r\n"
"python: INFO Registered [coreplugins.contours.plugin]\r\nINFO:app.logger:Registered [coreplugins.contours.plugin]\r\nINFO Registered [coreplugins.diagnostic.plugin]\r\nINFO:app.logger:Registered [coreplugins.diagnostic.plugin]\r\n"
"python: INFO Registered [coreplugins.fullscreen.plugin]\r\nINFO:app.logger:Registered [coreplugins.fullscreen.plugin]\r\n"
"python: INFO Registered [coreplugins.lightning.plugin]\r\nINFO:app.logger:Registered [coreplugins.lightning.plugin]\r\nINFO Registered [coreplugins.measure.plugin]\r\nINFO:app.logger:Registered [coreplugins.measure.plugin]\r\n"
"python: INFO Registered [coreplugins.posm-gcpi.plugin]\r\nINFO:app.logger:Registered [coreplugins.posm-gcpi.plugin]\r\n"
"python: INFO Added admin to default group\r\nINFO:app.logger:Added admin to default group\r\n"
"python: WARNING:imagekit:The storage backend <django.core.files.storage.FileSystemStorage object at 0x000002538159F190> did not save the file with the requested name (\"CACHE\\images\\settings\\logo512\\af30a8ce19b9126af8cfbb7607eebf4c.png\") and instead used \"CACHE/images/settings/logo512/af30a8ce19b9126af8cfbb7607eebf4c.png\". This may be because a file already existed with the requested name. If so, you may have meant to call generate() instead of generate(force=True), or there may be a race condition in the file backend <imagekit.cachefiles.backends.Simple object at 0x000002538154C670>. The saved file will not be used.\r\n"
"python: WARNING:imagekit:The storage backend <django.core.files.storage.FileSystemStorage object at 0x000002538159F190> did not save the file with the requested name (\"CACHE\\images\\settings\\logo512\\53af5493584d5f7bc2141c753d869d4e.png\") and instead used \"CACHE/images/settings/logo512/53af5493584d5f7bc2141c753d869d4e.png\". This may be because a file already existed with the requested name. If so, you may have meant to call generate() instead of generate(force=True), or there may be a race condition in the file backend <imagekit.cachefiles.backends.Simple object at 0x000002538154C670>. The saved file will not be used.\r\n"
"redis-server: [4180] 25 Nov 11:45:39.023 * 10 changes in 300 seconds. Saving...\n"
"redis-server: [4180] 25 Nov 11:45:39.023 * Background saving started by pid 4424\n"
"redis-server: [4180] 25 Nov 11:45:39.123 # fork operation complete\n"
"redis-server: [4180] 25 Nov 11:45:39.123 * Background saving terminated with success\n"

Update: I got it working! Partially at least…

I changed the IPs in the main.js file from http://127.0.0.1:29800 to http://192.168.2.10:29800. After saving this and loading WebODM again, I am able to access WebODM over 192.168.2.10 (yay!!!). This has caused another issue now, however (see screenshot).
image

So the web interface work, but the desktop app no longer loads. The web app continues to work as long as I don’t click on that window in the screenshot :slight_smile:

Here are the app log files as well:

"Booting WebODM 1.9.16 build 73..."
"Trying to connect to NodeODM localhost:29301..."
"nodeodm: info: Authentication using SimpleToken\r\n"
"nodeodm: info: Listening on 0.0.0.0:6367 UDP for progress updates\r\n"
"nodeodm: info: Initialized 0 tasks\r\n"
"nodeodm: info: Checking for orphaned directories to be removed...\r\n"
"nodeodm: info: Server has started on port 29301\r\n"
"Connected to NodeODM 2.2.0"
"redis-server:                 _._                                                  \n           _.-``__ ''-._                                             \n      _.-``    `.  `_.  ''-._           Redis 3.2.100 (00000000/0) 64 bit\n  .-`` .-```.  ```\\/    _.,_ ''-._                                   \n (    '      ,       .-`  | `,    )     Running in standalone mode\n |`-._`-...-` __...-.``-._|'` _.-'|     Port: 29379\n |    `-._   `._    /     _.-'    |     PID: 972\n  `-._    `-._  `-./  _.-'    _.-'                                   \n |`-._`-._    `-.__.-'    _.-'_.-'|                                  \n |    `-._`-._        _.-'_.-'    |           http://redis.io        \n  `-._    `-._`-.__.-'_.-'    _.-'                                   \n |`-._`-._    `-.__.-'    _.-'_.-'|                                  \n |    `-._`-._        _.-'_.-'    |                                  \n  `-._    `-._`-.__.-'_.-'    _.-'                                   \n      `-._    `-.__.-'    _.-'                                       \n          `-._        _.-'                                           \n              `-.__.-'                                               \n\n[972] 25 Nov 12:13:34.817 # Server started, Redis version 3.2.100\n"
"redis-server: [972] 25 Nov 12:13:34.818 * DB loaded from disk: 0.001 seconds\n[972] 25 Nov 12:13:34.818 * The server is now ready to accept connections on port 29379\n"
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/pg_ctl: waiting for server to shut down..."
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/pg_ctl: ."
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/pg_ctl:  done\r\nserver stopped\r\n"
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/pg_ctl: exited with code 0"
"Trying to connect to postgres localhost:29543..."
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/pg_ctl: server starting\r\n"
"C:\\WebODM\\resources\\app\\apps\\pgsql/bin/psql: exited with code 0"
"python: Operations to perform:\r\n  Apply all migrations: admin, app, auth, contenttypes, guardian, nodeodm, sessions\r\nRunning migrations:\r\n  No migrations to apply.\r\n"
"python: exited with code 0"
"python: exited with code 0"
"python: INFO:waitress:Serving on http://192.168.2.111:29800\r\n"
"python: [2022-11-25 12:13:42,020: INFO/MainProcess] Connected to redis://:**@127.0.0.1:29379//\r\n"
"python: [2022-11-25 12:13:42,025: INFO/MainProcess] mingle: searching for neighbors\r\n"
"python: INFO Booting WebODM 1.9.16\r\nINFO:app.logger:Booting WebODM 1.9.16\r\n"
"python: INFO Running npm install for [coreplugins.changedetection.plugin]\r\nINFO:app.logger:Running npm install for [coreplugins.changedetection.plugin]\r\n"
"python: WARNING npm is not installed, will skip this plugin\r\nWARNING:app.logger:npm is not installed, will skip this plugin\r\n"
"python: INFO Running npm install for [coreplugins.cloudimport.plugin]\r\nINFO:app.logger:Running npm install for [coreplugins.cloudimport.plugin]\r\n"
"python: WARNING npm is not installed, will skip this plugin\r\nWARNING:app.logger:npm is not installed, will skip this plugin\r\n"
"python: INFO Running npm install for [coreplugins.dronedb.plugin]\r\nINFO:app.logger:Running npm install for [coreplugins.dronedb.plugin]\r\n"
"python: WARNING npm is not installed, will skip this plugin\r\nWARNING:app.logger:npm is not installed, will skip this plugin\r\n"
"python: INFO Running npm install for [coreplugins.elevationmap.plugin]\r\nINFO:app.logger:Running npm install for [coreplugins.elevationmap.plugin]\r\n"
"python: WARNING npm is not installed, will skip this plugin\r\nWARNING:app.logger:npm is not installed, will skip this plugin\r\n"
"python: INFO Running npm install for [coreplugins.measure.plugin]\r\nINFO:app.logger:Running npm install for [coreplugins.measure.plugin]\r\n"
"python: WARNING npm is not installed, will skip this plugin\r\nWARNING:app.logger:npm is not installed, will skip this plugin\r\n"
"python: INFO Registered [coreplugins.contours.plugin]\r\nINFO:app.logger:Registered [coreplugins.contours.plugin]\r\nINFO Registered [coreplugins.diagnostic.plugin]\r\nINFO:app.logger:Registered [coreplugins.diagnostic.plugin]\r\nINFO Registered [coreplugins.fullscreen.plugin]\r\nINFO:app.logger:Registered [coreplugins.fullscreen.plugin]\r\n"
"python: INFO Registered [coreplugins.lightning.plugin]\r\nINFO:app.logger:Registered [coreplugins.lightning.plugin]\r\nINFO Registered [coreplugins.measure.plugin]\r\nINFO:app.logger:Registered [coreplugins.measure.plugin]\r\nINFO Registered [coreplugins.posm-gcpi.plugin]\r\nINFO:app.logger:Registered [coreplugins.posm-gcpi.plugin]\r\n"
"python: [2022-11-25 12:13:43,037: INFO/MainProcess] mingle: all alone\r\n"
"python: [2022-11-25 12:13:43,047: INFO/MainProcess] pidbox: Connected to redis://:**@127.0.0.1:29379//.\r\n"
"python: [2022-11-25 12:13:43,048: INFO/MainProcess] [email protected] ready.\r\n"
{}

If there is anyone more knowledgeable about the app architecture than me, I’d love your thoughts on this! I will continue to use the app over the web instead of the desktop app, but would love to get both working.

1 Like

So you’re trying to use the Windows-native version to serve the interface/data to multiple clients on your Intranet?

Usually for this use-case we recommend the Docker/Linux release.

That is indeed my use case! I will take a look at building it in Linux then.

2 Likes

It is a one-line deploy using docker/docker-compose from any distro that ships them (I use Alpine Linux myself), so setup/teardown is really trivial. You also don’t have to do any resource tuning unlike under Docker for MacOS and Docker for Windows/WSL2.

Finally, the Linux build ships with some extensions meant specifically to improve ease of use in Intranet/LAN Sharing scenarios which it sounds like you’d get some mileage out of.

Please let us know if you run into any roadblocks :slight_smile: