Unable to preview uploaded XLSForm on a self-hosted ODK Central installation

1. What is the issue? Please be detailed.

After installing ODK central on a Ubuntu 22.04.4 LTS server, we faced the below error message while trying to preview uploaded XLSForms.

"Loading Error
Error occured during the loading of this form. We do not recommend you use this form for data entry until this is resolved.

Please contact support@getodk.org with the link to this page and the error message below:

Failed to load form"

2. What steps can we take to reproduce this issue?

  • Log into ODK central
  • Navigate to projects
  • Go to a created Form
  • Click on preview
  • The system will open a new page with the above mentioned error message.

3. What have you tried to fix the issue?
We checked the logs of Enketo service, and below is the error message we noticed.

TypeError: HTTPConnection.request() got an unexpected keyword argument 'chunked'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/bin/docker-compose", line 33, in
sys.exit(load_entry_point('docker-compose==1.29.2', 'console_scripts', 'docker-compose')())
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 81, in main
command_func()
File "/usr/lib/python3/dist-packages/compose/cli/main.py", line 200, in perform_command
project = project_from_options('.', options)
File "/usr/lib/python3/dist-packages/compose/cli/command.py", line 60, in project_from_options
return get_project(
File "/usr/lib/python3/dist-packages/compose/cli/command.py", line 152, in get_project
client = get_client(
File "/usr/lib/python3/dist-packages/compose/cli/docker_client.py", line 41, in get_client
client = docker_client(
File "/usr/lib/python3/dist-packages/compose/cli/docker_client.py", line 170, in docker_client
client = APIClient(use_ssh_client=not use_paramiko_ssh, **kwargs)
File "/usr/lib/python3/dist-packages/docker/api/client.py", line 197, in init
self._version = self._retrieve_server_version()
File "/usr/lib/python3/dist-packages/docker/api/client.py", line 221, in _retrieve_server_version
raise DockerException(
docker.errors.DockerException: Error while fetching server API version: HTTPConnection.request() got an unexpected keyword argument 'chunked'

4. Upload any forms or screenshots you can share publicly below.

What version of Central are you using? To see your version, click on the question mark icon in the upper right section of your Central menu bar, then click Version. If you don't see the question mark, you can see the version by adding version.txt to the root URL (e.g., https://demo.getodk.cloud/version.txt).

What happens if you run this command? Does it print a 1, a 0, or nothing?

docker exec -it central-enketo-1 curl https://$(grep "^DOMAIN=" ~/central/.env | cut -d = -f 2) | grep -c getodk.org

Hi @yanokwa .

We are running v2023.5.1 as per the below version details.
versions:
20dcbf46703ded595b82bda713c624673a3faff9 (v2023.5.1)
+f34076ae9a1b74f7e928126a1dc2246eda2bb25f client (v2023.5.0-2-gf34076ae)
983ec81e69793fdb589ffdc346a16ef977489be4 server (v2023.5.0)

As for the output of the shared command, it is printing out a 0.

/odkcentral/central$ docker exec -it central-enketo-1 curl https://$(grep "^DOMAIN=" ~/central/.env | cut -d = -f 2) | grep -c getodk.org
0

The output of that command shows that the Enketo container can't reach the Nginx container over the Internet. Usually, this is because there is some internal DNS setting that isn't mapping yourdomain.com to the server. Perhaps your IT team can help.

Hello @yanokwa. Thanks again for your support on this. Actually, our domain is only accessible within our country. Might that be the cause? but again I see in the logs it's trying to call an external IP (192.168.16.9 on port 8005) , I wanted to understand why this? refer to the log portion bellow

nginx-1 | 2024/04/24 07:55:13 [error] 20#20: *2000 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 172.80.4.8, server: local, request: "POST /-/transform/xform/OXzmCGrYEJhGPWDyhmJKditrYcevens HTTP/1.1",
"POST /-/transform/xform/OXzmCGrYEJhGPWDyhmJKditrYcevens HTTP/1.1", upstream: http://192.168.16.9:8005/-/transform/xform/OXzmCGrYEJhGPWDyhmJKditrYcevens",