# One ODK Central Instance, many domains / per project domain

**URL:** <https://forum.getodk.org/t/one-odk-central-instance-many-domains-per-project-domain/57380>\
**Category:** Support\
**Tags:** odk-central\
**Created:** [January 5, 2026, 8:28am UTC](https://forum.getodk.org/t/one-odk-central-instance-many-domains-per-project-domain/57380 "2026-01-05T08:28:29Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Tyler\_Depke](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/tyler_depke/32/17598_2.png) [@Tyler\_Depke](https://forum.getodk.org/u/Tyler_Depke)\
**Post date:** [January 5, 2026, 8:28am UTC](https://forum.getodk.org/t/one-odk-central-instance-many-domains-per-project-domain/57380/1 "2026-01-05T08:28:29Z")

</div>

**1. What is the issue? Please be detailed.**  
Before going too deep into the weeds of my ODK Central install, I wanted to post this question. Is it possible to have a single ODK Central Instance where I have multiple projects, and I can make Web Forms / Enketo Forms that have different domain names? Ideally I'm looking for this:

- Tree Project
  - Add Farmer ([https://odk.treeproject.com/randomuniquecharacters](https://odk.treeproject.com/randomuniquecharacters))
  - Tree Tracking ([https://odk.treeproject.com/randomuniquecharacters](https://odk.treeproject.com/randomuniquecharacters))

- Health Project
  - Add Patient ([https://odk.healthproject.com/randomuniquecharacters](https://odk.healthproject.com/randomuniquecharacters))
  - Track Patient([https://odk.healthproject.com/randomuniquecharacters](https://odk.healthproject.com/randomuniquecharacters))

I have no idea if this is possible and looking at that forum post it looks like Enketo is tied to a single domain, but not sure how Web Forms works/is being built. If this is better suited to be put in #Ideas rather than #Support feel free to move it. The only thing I found on the forum that looked relevant was this:

> [@ODK Central - Changing domain names](https://forum.getodk.org/t/odk-central-changing-domain-names/37655/8):
>
> You can have two domains pointed to the same install. To do that, have [example1.com](http://example1.com) and [example2.com](http://example2.com) pointed to the same IP. Then put [example1.com](http://example1.com) in your ~/central/.env file. SSL\_TYPE=letsencrypt DOMAIN=example1.com Then in ~central/files/nginx/odk.conf.template, make this change in line 3. - server\_name ${CNAME}; + server\_name ${CNAME} example2.com; I've only tried this with LetsEncrypt as an SSL type. Your mileage may vary with other types.

where you can have 2 domains pointed to the same IP, which is _kinda_ what I'm looking to do, but not exactly.

---

<div class="post-metadata">

**Author:** ![jniles](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/jniles/32/2819_2.png) [@jniles](https://forum.getodk.org/u/jniles)\
**Post date:** [January 5, 2026, 9:11pm UTC](https://forum.getodk.org/t/one-odk-central-instance-many-domains-per-project-domain/57380/2 "2026-01-05T21:11:02Z")

</div>

Oooh, interesting question! I’ll try to pull this off later this week.

The immediate issue I can see with two different domain names pointing to the same server is that my username for `treeproject.com` will also log me into `healthproject.com`, which feels confusing and potentially co-mingling two different administrative entities into the same one inappropriately. Furthermore, you may want to send bespoke password reset emails for `treeproject.com`from that domain and similarly for the `healthproject.com` domain.

… then you also may get into cases where data from the Tree Project is co-mingled with the Health Project during backups. Perhaps these issues are not relevant for your use case, but I can see this being a footgun for users who need stronger barriers between the two.

What are you optimizing for in using two different domain names? ODK Central is not _that_ difficult to set up - could you perhaps spin up two different containers in Proxmox or something similar?

---

<div class="post-metadata">

**Author:** ![Tyler\_Depke](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/tyler_depke/32/17598_2.png) [@Tyler\_Depke](https://forum.getodk.org/u/Tyler_Depke)\
**Post date:** [January 6, 2026, 10:40am UTC](https://forum.getodk.org/t/one-odk-central-instance-many-domains-per-project-domain/57380/3 "2026-01-06T10:40:50Z")

</div>

I’m exploring the option of using a Web Form as a customer inquiry/checkout type of form/submission. Basically websites/landing pages with an order/checkout/contact us button that would go to an ODK Web Form, which needs to be the SAME domain as the website. This is the primary thing. I care much less about how the backend needs to be managed (logins/Central users/etc).

I have a minimum of 4 projects/unique domains I’m looking to setup, but each one is likely to be low traffic (maybe a couple dozen submissions/day) and I’d want to avoid setting up/managing multiple Central Instances for something that is so low traffic and likely would only require one form.

In my context, I’m looking at ODK Web Forms because of its multilingual and audio features, as well as the detailed GPS data/calculations that would facilitate/help shipping in a place that has no formal address system, group customers, AND avoid large quantities of inquiries from people outside of a target location/market/region/etc.

---

<div class="post-metadata">

**Author:** ![jniles](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/jniles/32/2819_2.png) [@jniles](https://forum.getodk.org/u/jniles)\
**Post date:** [January 6, 2026, 4:38pm UTC](https://forum.getodk.org/t/one-odk-central-instance-many-domains-per-project-domain/57380/4 "2026-01-06T16:38:18Z")

</div>

An interesting use case!

I wonder if the [recent proposal to ship ODK without nginx would help meet this use case](https://forum.getodk.org/t/odk-central-deployment-without-nginx-for-deployment-in-multi-app-and-kubernetes-environments/57156). I agree having the option to make ODK Central more oblivious to its domain name would reduce the complexity for those of us that want to tinker with it and/or push it to the edge of its design specs.

---

<div class="post-metadata">

**Author:** ![Tyler\_Depke](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/tyler_depke/32/17598_2.png) [@Tyler\_Depke](https://forum.getodk.org/u/Tyler_Depke)\
**Post date:** [January 6, 2026, 8:29pm UTC](https://forum.getodk.org/t/one-odk-central-instance-many-domains-per-project-domain/57380/5 "2026-01-06T20:29:53Z")

</div>

Yeah, this is precisely the issue that I want to solve, being able to more efficiently use resources essentially.

> [@ODK Central deployment without nginx for deployment in multi-app and kubernetes environments](https://forum.getodk.org/t/odk-central-deployment-without-nginx-for-deployment-in-multi-app-and-kubernetes-environments/57156/1):
>
> it comes with an inbuilt NGNIX, that binds the domain to the public IP address. For most organizations, this requirement leads to maintaining an exclusive server with at least 4vCPU and 4GB memory server with limited to no option to use it for any other purpose.

---

<div class="post-metadata">

**Author:** ![MinimalPotato](https://getodk.b-cdn.net/user_avatar/forum.getodk.org/minimalpotato/32/30174_2.png) [@MinimalPotato](https://forum.getodk.org/u/MinimalPotato)\
**Post date:** [January 7, 2026, 4:57am UTC](https://forum.getodk.org/t/one-odk-central-instance-many-domains-per-project-domain/57380/6 "2026-01-07T04:57:11Z")

</div>

About a year ago, I had thought about attempting something similar. I didn't end up trying it out practically, but while thinking it through, a couple of questions / doubts came up to me back then:

- When we build and run the ODK Central's containers, we specify the `DOMAIN` in the environment file. And, if I understand this correctly, that value gets embedded into Enketo's configuration at build time. Because of this, I wasn't fully sure how feasible it would be to run the same ODK Central instance across two different domains - especially from Enketo's point of view.
- I was also curious about how things like CSRF protection, cookies, etc. would behave in such a setup.

**Edit:** [Check This](https://github.com/search?q=repo%3Agetodk%2Fcentral+%2F%24%7BDOMAIN%7D%2F&type=code)..!
