ODK Central accessible through some concrete URL path

1. What is the problem? Be very detailed.

I'm trying to setup ODK Central in an AWS EC2 instance behind an Application Load Balancer on my_subdomain.domain.org/central. ODK Central is directly accessible at the public EC2 DNS whatever.eu-west-1.compute.amazonaws.com (so it's working). However, when I try to access it through whatever.eu-west-1.compute.amazonaws.com/central I get 404 Not Found (nginx). I need the path because all services are being accessed through the same my_subdomain.domain.org/ URL and then they are redirected by the Application Load Balncer based of the /path.

2. What app or server are you using and on what device and operating system? Include version numbers.

ODK Central versions (clicking on the version link on the login web page):

e16b79530756bbd825f68275b3b6e53951409474
 70ec99f02885a06e37709db6319bfdf96fac84eb client (v1.2.2)
 59556ecea91f0a25678cd6da0084adb7e66ca099 server (v1.2.1)

EC2:
Ubuntu 18.04.5 LTS (bionic) x86_64

3. What you have you tried to fix the problem?

Change the DOMAIN=my_subdomain.domain.org/central in .env and rebuild.

4. What steps can we take to reproduce the problem?

I've just followed rigorously the steps provided at https://docs.getodk.org/central-install-digital-ocean/ with the following .env file:

# Use fully qualified domain names. Set to DOMAIN=local if SSL_TYPE=selfsign.
DOMAIN=my_subdomain.domain.org/central
 
# Used for Let's Encrypt expiration emails and Enketo technical support emails
SYSADMIN_EMAIL=myemail@domain.org

# Options: letsencrypt, customssl, upstream, selfsign
SSL_TYPE=upstream
 
# Do not change if using SSL_TYPE=letsencrypt
HTTP_PORT=80
HTTPS_PORT=443

The SSL certificate is configured in the Application Load Balancer.

5. Anything else we should know or have? If you have a test form or screenshots or logs, attach below.

Nothing.

Central isn't designed to run in a sub-directory, so adding /central to the DOMAIN in the env file definitely won't work.

Your likely best bet is to run the Central in its own domain and route traffic coming from the /central path of your public facing domain to that domain. That might work.

1 Like