Skip to content
Back

Self-Hosted and Multi Region support

  • 0
  • 4
  • Self Hosted
15 Jul, 2026, 13:48

Hey Appwrite Team,

As a test and to expand self-hosted capabilities even more, i was thinking of understanding and testing how to deploy a multi-region instance of Appwrite.

Currently on where i'm at, i found out IT IS NOT POSSIBLE by default to create multi-regions clusters in SH for multiple reasons, tho i found out it can be setup by editing the appwrite/appwrite and appwrite/console images.

And regarding edge computing, if i'm not wrong it's not bundled, and on Cloud i guess it's Fastly that does it for you, so out of context (or need to build something to route to the right region behind)

Tho before i start really working on that and maybe also release it as k8s charts, i would like to know if what i'm doing is allowed ... Because in the docs at the bottom of https://appwrite.io/docs/products/network/edges it says :

For edge infrastructure in self-hosted environments or multi-region setups, please contact us to explore enterprise options.

In case you allow me to do that, i will also, like for S3 write a doc on how to setup appwrite for it (and all needed changes). And could kinda act as a "mega-thread" for people wanting multi region in self-hosted as well as maybe a start point for you if you want to really have a working multi-region self host.

TL;DR
User praised the self-hosted and multi-region support, expressing interest in potentially using it in the future.
16 Jul, 2026, 02:05

For edge infrastructure in self-hosted environments or multi-region setups, please contact us to explore enterprise options.

it means you cant contact us to set up a separate self hosted edge environment for you via enterprise plan

16 Jul, 2026, 07:14

also on what your saying isn't just the opposite of the message ? like on the message i understand "if I want to self-host to have my own region, i need to contact you" but your saying, i can't contact you for a custom self hosted / custom region ?

but, if i understand correctly it's not related to the fact that i'm not allowed to try and make multi-region work myself

16 Jul, 2026, 20:57

it's kinda just to be sure in a legal way, that i won't publish anything that should only be available through a specific pricing (like needing to pay entreprise to get multiple self-hosted region on the same console)

16 Jul, 2026, 21:37

since kinda, here is what i'm trying to do in SH (you can also see on the right the differents domains and regions)

20 Jul, 2026, 08:18

So just a last message here for all the questions i have :

  1. Can i make that myself ? Doesn't it break any rules or legal part of the Cloud SaaS ?
  2. Once i have a working version, can i publish for modified containers under my gitlab instance ? (it will change the console and appwrite images)
  3. At the end, could i create Issues and PRs to implement it in the real project/repo ?

(and if you wonder, the multi-region does work in my test env, it's kinda done)

20 Jul, 2026, 16:16

Can i make that myself

yes yes, apologies if what i said read in wrong way. you can do anything as long as you follow the BSD license of the codebase, excited to see whats ur approach, maybe we can learn something ๐Ÿ˜„

20 Jul, 2026, 17:52

i think i learned more things by reading your code, like how multi cluster works + a central frontend and also kinda how edge computing works. tho true i don't have the full cloud setup, so maybe my setup will differ a bit from the cloud one

if you want, here is the gitlab branch i'm working on : https://gitlab.ibaraki.app/helm/appwrite/-/tree/regions-support (the folder regions, includes patches for the console to build with custom regions (and fix some cloud/region check), and others php patch are directly mounted in the original image as configs)

and also the flow/arch diagram between the meta/console and the regions :

20 Jul, 2026, 17:57

and on what i saw, it seams like it's impossible to get the region working alone because the project object is in the platformDB which is shared for all regions. (so even if the region is down the central console can still display the project in the grid)

23 Jul, 2026, 19:16

https://github.com/appwrite/appwrite/issues/12964 i will also create a draft PR for you to see the changes, and maybe think if that something you would like to fully support for SH in the main repo, or keep it unofficial with forks/patch in others repos from the community

23 Jul, 2026, 20:21

now i will work on the console to integrate it in the console repo, tho i don't think it will be possible to use custom regions/url without rebuiling the image, since it's static and just serve html with nginx

25 Jul, 2026, 19:49

๐Ÿคฃ someone used AI and tried to complete my Issue (even tho he didn't asked for assignment) doesn't fully looks good (like no test), and kinda copy my PR

28 Jul, 2026, 20:31

also since you where intrested in the approch, i also wanted to share examples of deployments for that multi regions with :

HTTP - Client to APIs / Console SQL - Meta API to all DBs | Regional API to Meta/Platform DB and Regional DB

  1. you have like a big server per region with appwrite deployed on each, and the console and it's db in cloud services (like aws, but just for the console)
  2. you have like a k8s cluster with nodes across the world, separated by labels or others, and you deploy an appwrite instance on each region/label + have the console kinda floating across all the regions (and maybe replicated so the console is on multiple regions)
6 Aug, 2026, 20:06

i'm currently finishing and testing the feature, also for deployment i can also share how it's deployed in local since the script i have logs most things :

TypeScript
โžœ Installing release 'appwrite-meta'...
NAME: appwrite-meta
LAST DEPLOYED: Thu Aug  6 21:58:58 2026
NAMESPACE: default
STATUS: deployed
REVISION: 1
DESCRIPTION: Install complete
TEST SUITE: None
NOTES:
1. Role: meta
2. Region id: default
3. Console is disabled in this chart โ€” deploy charts/appwrite-console separately.
4. Meta profile: use -f values-meta.yaml (slim API + platform MariaDB).
5. Regional profile: set platformDatabase to the meta MariaDB host and database.pools for local project data.
Meta ingress host: appwrite.localhost
โžœ Waiting for meta MariaDB / API...
deployment.apps/appwrite-meta-worker-mails condition met
deployment.apps/appwrite-meta-api condition met
deployment.apps/appwrite-meta-task-maintenance condition met
โžœ 2/4 FRA region
โžœ Installing release 'appwrite-fra'...
NAME: appwrite-fra
LAST DEPLOYED: Thu Aug  6 21:59:17 2026
NAMESPACE: default
STATUS: deployed
REVISION: 1
DESCRIPTION: Install complete
TEST SUITE: None
NOTES:
1. Role: regional
2. Region id: fra
3. Console is disabled in this chart โ€” deploy charts/appwrite-console separately.
4. Meta profile: use -f values-meta.yaml (slim API + platform MariaDB).
5. Regional profile: set platformDatabase to the meta MariaDB host and database.pools for local project data.
Regional API host: fra.localhost
Wildcard (functions/sites): *.fra.localhost
โžœ 3/4 NYC region
โžœ Installing release 'appwrite-nyc'...
NAME: appwrite-nyc
LAST DEPLOYED: Thu Aug  6 21:59:18 2026
NAMESPACE: default
STATUS: deployed
REVISION: 1
DESCRIPTION: Install complete
TEST SUITE: None
NOTES:
1. Role: regional
2. Region id: nyc
3. Console is disabled in this chart โ€” deploy charts/appwrite-console separately.
4. Meta profile: use -f values-meta.yaml (slim API + platform MariaDB).
5. Regional profile: set platformDatabase to the meta MariaDB host and database.pools for local project data.
Regional API host: nyc.localhost
Wildcard (functions/sites): *.nyc.localhost
โžœ 4/4 Console (custom multi-region image)
โžœ Installing release 'appwrite-console'...
NAME: appwrite-console
LAST DEPLOYED: Thu Aug  6 21:59:19 2026
NAMESPACE: default
STATUS: deployed
REVISION: 1
DESCRIPTION: Install complete
TEST SUITE: None
NOTES:
Console: http://appwrite.localhost/console
API endpoint (meta): http://appwrite.localhost/v1
Multi-region: true
Image: appwrite-console-fork:multiregion (pullPolicy Never)
Regions catalog: http://appwrite.localhost/console/regions
Regions:
  - fra โ†’ fra.localhost
  - nyc โ†’ nyc.localhost

Console fork image (PUBLIC_APPWRITE_MULTI_REGION=true at build) fetches /console/regions at runtime.

So ye, to avoid building the console image everytime, for self hosted multi regions, there will be a /console/regions path with a JSON of the regions and the endpoints, so users can choose their regional endpoint (no need to be <region>.appwrite.example.com and console to appwrite.example.com, if they have for example ccTLDs, they can use that as their regional endpoints)

6 Aug, 2026, 20:46

it should be done, i will keep it as Draft for now if you want to test it and give feedback on it. Also if you want, here is my helm deployment : https://gitlab.ibaraki.app/helm/appwrite/-/tree/regions-support

it includes :

  • single region deployment
  • mutli region deployment
  • dev environement for both (with fork support, so you can clone and it build the images and deploy a k3s with thoses images), also, single region is localhost multi-regions is appwrite.localhost & <region>.locahost
15 Aug, 2026, 04:17

This is beautiful man Iโ€™ll pin it and letโ€™s see if I can use it one day ๐Ÿ™‚

Reply

Reply to this thread by joining our Discord

Reply on Discord

Need support?

Join our Discord

Get community support by joining our Discord server.

Join Discord

Get premium support

Join Appwrite Pro and get email support from our team.

Learn more