Help Needed – “Missing Link” and 500 Error on Form Preview After KoBoToolbox Server Installation

Hi everyone,

I recently deployed KoBoToolbox on own server using Docker, following the on-premise installation instructions. I’m using NGINX as a reverse proxy with HTTPS enabled across all subdomains.

I’m currently facing two major issues:
1. Missing Link After Deploying Form:
After I create and deploy a form, KoBo shows a “Missing Link” message instead of providing the public link to the form.

2. 500 Server Error on Form Preview:
When I try to preview the form in KoBoForm, I get a 500 Internal Server Error.
The browser does not show any specific message in the UI, but DevTools shows that the Enketo form preview fails with a 500 error from the server.

Consider modifying the env files — I had a similar issue previously, and resolving it involved making changes there. Make sure they also contain the following values:

ENKETO_PROTOCOL=https

KOBOFORM_PROTOCOL=https

KOBOCAT_PROTOCOL=https.

1 Like

Where exactly is the env file located? I can’t find such a file.

In a standard KoBoToolbox on-premises installation, the .env file should be located in the root directory of your kobo-install folder the same directory where docker-compose.yml and run.py are found.

/opt/kobo-install/.env

1 Like

Unfortunately, I can’t find a .env. Do you mean .run.conf?
And what does such a file contain?

environment variables stored in .run.conf inside the kobo-install folder, which auto-generates the necessary .env files.

To fix the “link missing” and form preview issues try to check .run.conf and set:

KOBO_PROTOCOL=https
PUBLIC_DOMAIN_NAME=yourdomain.com
KOBOFORM_SUBDOMAIN=kf
KOBOCAT_SUBDOMAIN=kc
ENKETO_EXPRESS_SUBDOMAIN=ee
ENKETO_PROTOCOL=https
KOBOFORM_PROTOCOL=https
KOBOCAT_PROTOCOL=https

Make sure your DNS points these subdomains (kf, kc, ee) to your server IP. Confirm Nginx serves each subdomain with valid SSL and redirects HTTP to HTTPS.

You can also add extra hosts in your docker compose yml
services:
kf:
extra_hosts:
- “kf.yourdomain.com:127.0.0.1”

kc:
extra_hosts:
- “kc.yourdomain.com:127.0.0.1”

ee:
extra_hosts:
- “ee.yourdomain.com:127.0.0.1”

Restart containers also!!!

1 Like