Problems with login in to ODK-X Server web-ui. Incorrect username or password

Yes, the user belongs to “synchronize tables” group. So, the https:///odktables/default/privilegesInfo link would be like this - https:/mydomain.com/odktables/default/privilegesInfo, right?

1 Like

your example is correct

1 Like

This is what I get

HTTP Status 404 – Not Found

Type Status Report

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/8.5.73

1 Like

Sounds like something is wrong with the sync-endpoint. You might want to look at the logs or simply try to setup the system again after stopping the stack/swarm.

@Prashant You mentioned that a “simple stack-up and stack-down docker did the job” to fix your problem with login. Could you please explain what you mean by stack-up and stack-down? I am facing the same problem and have done fresh install 3 times but with the same login problem. Thanks.

1 Like

Take the stack/swarm down:
docker stack rm syncldap

Bring the stack/swarm up with HTTPS support execute this command in the sync-endpoint-default-setup folder:
docker stack deploy -c docker-compose.yml -c docker-compose-https.yml syncldap

Also, I encourage you to take the ODK-X Sync-Endpoint survey as our intern is working to improve things: Survey form - ODK-X Sync Endpoint

3 Likes

This fixed the issue with login. Thank you!

2 Likes

I have tried all the proposed solutions so far and it did not work for me.
I did my installation on Ubuntu 20.04 LTS on an AWS EC2 VM. Do we have more on that? Is there a compatibility issue? Because the guideline was for Ubuntu 18.04.

2 Likes

I am experiencing the same issue. Tried installation on Ubuntu 20.04 and Ubuntu 18.04 on an Amazon AWS server. I also tried a manual installation. I keep gettng the incorrect username or password error. Also, I get a 404 error when trying to visit the /odktables/default/privilegesInfo link.

Specifically, the sync-log is showing:

2022-10-21 11:00:32.246  INFO 6 --- [nio-8080-exec-7] bServiceDelegatingAuthenticationProvider : Logging in with http://sync:8080/odktables/{appId}/privilegesInfo
2022-10-21 11:00:32.275  INFO 6 --- [nio-8080-exec-7] bServiceDelegatingAuthenticationProvider : Received an exception when getting granted roles
2022-10-21 11:00:32.276  INFO 6 --- [nio-8080-exec-7] bServiceDelegatingAuthenticationProvider : Received 404
2022-10-21 11:00:32.287  INFO 6 --- [nio-8080-exec-7] bServiceDelegatingAuthenticationProvider : Received <!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title><style type="text/css">body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 404 – Not Found</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.</p><hr class="line" /><h3>Apache Tomcat/8.5.83</h3></body></html>

It looks like all containers are running properly:

ubuntu@ip-172-31-20-143:~/sync-endpoint-manual/sync-endpoint-default-setup$ sudo docker ps
CONTAINER ID   IMAGE                      COMMAND                  CREATED              STATUS              PORTS             NAMES
d99abe60e2b3   nginx:1.21.3               "/docker-entrypoint.…"   About a minute ago   Up 55 seconds       80/tcp            syncldap_nginx.1.lw3eizlrs885wyx6szconbbrt
16567c8c5d31   odk/sync-endpoint:latest   "/tmp/init.sh /usr/l…"   About a minute ago   Up About a minute                     syncldap_sync.1.lx38p77dhhhwz5xo28udaoesa
397ddf4fea12   postgres:9.6               "docker-entrypoint.s…"   About a minute ago   Up About a minute                     syncldap_db.1.eqtwr1oqkyxjo0nagqdng9m7b
c0fb7aea4360   certbot/certbot:latest     "/bin/sh -c 'trap ex…"   About a minute ago   Up About a minute   80/tcp, 443/tcp   syncldap_certbot.1.fpgyp5lbdufumoi714ifczs8i
c420dd9758ce   odk/sync-web-ui:latest     "sh -c 'java $JAVA_O…"   About a minute ago   Up About a minute                     syncldap_web-ui.1.yzfi4h2ab5jjjv48klwnjfcij
d51bd4df5178   odk/phpldapadmin:latest    "/container/tool/run"    About a minute ago   Up About a minute   80/tcp, 443/tcp   syncldap_phpldapadmin.1.auxzunsnjkazhov1aqmkxaq0u
a3cc82d23964   odk/openldap:latest        "/container/tool/run"    About a minute ago   Up About a minute                     syncldap_ldap-service.1.xnblhl1sviemr9k5zplcq0ze6

I don’t know much about docker, or why the /odktables page cannot be found.

I see the following errors in the logs for the postgress container:

ERROR:  role "odk" already exists
STATEMENT:  CREATE USER odk WITH UNENCRYPTED PASSWORD 'odk';
ERROR:  schema "odk_sync" already exists
STATEMENT:  CREATE SCHEMA odk_sync AUTHORIZATION odk;

The following letsenctpyt error - need to figure out where to configure this e-mail address:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Unable to register an account with ACME server. The ACME server believes webmaster@example.com is an invalid email address. Please ensure it is a valid email and attempt registration again.
Ask for help or search for solutions at https://community.letsencrypt.org. See the logfile /var/log/letsencrypt/letsencrypt.log or re-run Certbot with -v for more details.

(UPDATE)
I’ve manually edited the docker-compose-https.yml file and added my e-mail address and domain. The error message has now changed to the following:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Account registered.
Requesting a certificate for MY_DOMAIN

Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems:
  Domain: MY_DOMAIN
  Type:   connection
  Detail: MY_IP: Fetching http://MY_DOMAIN/.well-known/acme-challenge/namBOBqlMLzPXeyj45qOWnqkArxA7Xg45eXBLdEaE0A: Connection refused

Hint: The Certificate Authority failed to download the temporary challenge files created by Certbot. Ensure that the listed domains serve their content from the provided --webroot-path/-w and that files created there can be downloaded from the internet.

The --webroot-path is configured as ‘–webroot -w /var/www/certbot’ (standard configuration), though I don’t have a /var/www or /var/www/certbot folder. Is Docker supposed to create these automatically? I created these folders manually but that does not resolve the error.

Also, LetsEncrypt tries to fetch this file before the nginx container is up and running, so even if the files would be available in the correct folder, I don’t see any way by which they can be served.

I really wished the sync-endpoint could be set up without using docker. At least when all services are configured one by one, it is easy to debug and identify problems, and you know what folders to look in. With docker, everything becomes a black box. Great when it works, terrible when errors occur.

I have the same log
I also finally tried Ubuntu 18.04 and same issue.
Please if you get answer, kindly share with us here.

I’ve given up on sync-endpoint, and now trying to get the old ODK Aggregate 1.4.15 to work. While deprecated, I undertand that it should work with ODK-X according to the docs (ODK Aggregate Tables Extension — ODK-X Docs).

After a long wrestle with allowing SSL on Tomcat, I’ve got it to work and was able to connect to the server. However, after synchronizing the data, I get an error: “please verify that the server and device are compatible”. According to the Docs, I expect this unsupported version should still work with the new APK files as it implements the same REST API, though I’ve found the ODK-X docs to be extremely lacking and unclear at times (to be fair, that is acknowledged under the ODK vs ODK-X comparison section).

It is frustrating as many rows of my table have synchronized (and I hoped to finally have found a solution to synchronize ODK-X forms). Logs in Android’s Logcat are not of much more use, though the error seems to occur when posting some data to the https://my_domain/ODKAggregate/odktables/default/installationInfo page.

The synchronization options are something that are seriously lacking. BTW one alternative to online synchronization is to use manual adb pull commands to pull data from the tablets and merging the sqllite tables, though that requires physical access to the tablets by someone who knows how to do this.

UPDATE

Okay, I see some errors in the catalina.out logfile: Value is too long (265) for field XXX which is a multiple choice option (multiple choice answeres are, for whatever reason, stored as a string in JSON format, with apparently only a max size of 265 values. I imagine this is something that has been updated in the sync-endpoint, which we can’t get to work).

Not sure if this is Postgres specific. Initially I wanted to use Mysql, but couldn’t get the ODK Aggregate to work with the mysql plugin (was probably using the wrong version of the plugin, Java, or mysql, but again it is very difficult to find it documented).

FYI I had to resort to use Tomcat8 to get ODK Aggregate 1.4.15 to work, if this is a route others are planning to take.

UPDATE 2

Success! After several days, I have finally been able to synchronize a tablet running ODK-X.
The error I received previously was resolved by removing the multiple choice options from the data (fortunately, I don’t need to store the data from those questions, and can assign the questions a property model.isSessionVariable=TRUE).

So, at least Aggregate seems like an alternative to sync-endpoint that actually works. I will be using it until the issues with sync-endpoint get resolved. As it is based in docker, I find myself clueless with debugging and trying to get it to work. It was still a struggle to install Tomcat, ODK Aggregate, the correct Java version, test Mysql, move to PostgreSQL, and configure the networking, but because I did it all manually and didn’t had to resort to using Docker, I was actually able to trouble shoot any errors and get it to work. I highly recommend to the developers to make sync-endpoint available as a standalone non-docker base version for those who prefer it, and allow users to configure it themselves.

… Sync-endpoint issues will be resolved soonest.

1 Like

Looking forward to receive the update. My project is suck and I can’t downgrade to older versions.

1 Like

Anything new on this? We continue to see setup errors where tests fail and this prevents login from working.

There was an update Master in march that fixed the version of Java back earlier that addressed at least some people’s problem.

It appears that the build error persists within the postgres-test environment. When your schedule permits, could you kindly review the attached logs for a more detailed insight?
odk-x-install-logs.zip (246.1 KB)

Hello,
It appears to be the postgres tests that are failing. This can sometime be caused by lack of memory on the machine you’re running the tests on…

Could you try to run the build command mvn clean install -DskipTests (the last argument instructs maven to simply skip the testing) and see if that fixes your problem?

Skipping the test does the trick. I have used a VM with HDD 500GB and RAM 12GB, does it mean the tests need more than that? Earlier, when i skipped tests, Login to the web-ui failed, but today I skipped the tests and Login works.

1 Like

Great to hear you got it working! :smile:
I think actually there is an error in the current code base due to an update of the container image running the tests - I believe it is missing the unzip utility… I will investigate the issue further.

2 Likes