Skip to content
Back

How to successfully migrate from 1.9.0 to 1.9.5 (or 1.9.6) ?

  • 0
  • 4
  • Self Hosted
  • Tools
21 Jul, 2026, 14:12

I've tried the automatic tool for migration but my Appwrite (self-hosted) went to a broken state. My functions wouldn't deploy anymore, some things just didn't work anymore, and I got the SMTP flooding as well. I had to roll it back.

I've seen some fixes for the SMTP flood, for the functions, etc. But I wanted to know if the only way is to migrate than fix each issue separately (or to wait for an official fix).

Have anyone managed to migrate with the automatic tool? Will there be (ou have been) a fix for the migration process? Is it better to stay with the 1.9.0?

Also, I wanted to know if a fresh 1.9.5 install would work, and the issues happen only by migrating from the old version?

Thanks.

TL;DR
User has encountered issues migrating from 1.9.0 to 1.9.5/1.9.6. They have checked all tokens and keys but still facing problems. They plan to retry the migration and review the logs for more information.
21 Jul, 2026, 14:24

Regarding migrations, bugs and others, they will not be fixed in 1.9.5, but in later versions (some fix are alredy ready for the next version, but won't be applied to the current one)

On what i know here is some threads that could help :

For the executor, if no fix work, you can try to take the old openruntimes executor, and use it instead of the new one.

And fresh 1.9.5, have less bugs, yes, tho i'm not sure if all of them are fixed like the flooding. (it also depend where you take the compose file)

21 Jul, 2026, 14:29

also on most installs, i've seen the two first issue almost always, and the two last, is i think more specific to some users/setups

21 Jul, 2026, 16:00

So I guess it's safer to stay on 1.9.0 for now. I didn't want to apply the fixes manually because I might miss something.

1
21 Jul, 2026, 16:07

understandable

21 Jul, 2026, 16:45

I think Appwrite need to plan a 1.9.6 to fix the broken 1.9.5 version :/

23 Jul, 2026, 14:00

1.9.6 fixes most of 1.9.5 issues, if you want you can upgrade to it https://discord.com/channels/564160730845151244/1529588927378227373

23 Jul, 2026, 14:06

I was about to do that, thanks!

1
29 Jul, 2026, 13:40

It worked a bit better than the 1.9.5 migration. I still had issues with the functions domains or certificate (xxx.functions.mydomain.com), these wouldn't work after the 1.9.6 migration, even after redoing the Cloudflare configuration I had before (for wildcard subdomains). I didn't have time to debug so I reverted to 1.9.0 again.

30 Jul, 2026, 10:06

it's possibly not related to appwrite itself, but maybe more in traefik or the revers proxy your using (maybe doesn't go to appwrite or simply don't have a configuration to cert that domain)

tho i would recommend making a new thread for that when you have time 🙂

30 Jul, 2026, 14:31

What issues? And what was the previous configuration?

30 Jul, 2026, 15:33

When calling the functions custom domains (or sites) it wouldn't work after migrating to 1.9.6. I had these configs for wildcard subdomain:

TypeScript
appwrite: 
  labels:
      - traefik.http.routers.appwrite_api_https.tls.certresolver=dns-cloudflare
      - traefik.http.routers.appwrite_api_https.tls.domains[0].main=app.mydomain.com
      - traefik.http.routers.appwrite_api_https.tls.domains[0].sans=*.functions.mydomain.com,*.sites.mydomain.com
      - traefik.http.routers.appwrite_api_https.tls.domains[1].main=app.mydomain2.com
      - traefik.http.routers.appwrite_api_https.tls.domains[1].sans=*.functions.mydomain2.com,*.sites.mydomain2.com

traefik:
  command:
      - --certificatesresolvers.dns-cloudflare.acme.dnschallenge=true
      - --certificatesresolvers.dns-cloudflare.acme.dnschallenge.provider=cloudflare
      - --certificatesresolvers.dns-cloudflare.acme.dnschallenge.resolvers=1.1.1.1:53,1.0.0.1:53
      - --certificatesresolvers.dns-cloudflare.acme.email=myemail@gmail.com
      - --certificatesresolvers.dns-cloudflare.acme.storage=/letsencrypt/acme.json
30 Jul, 2026, 18:16

How to successfully migrate from 1.9.0 to 1.9.5 (or 1.9.6) ?

30 Jul, 2026, 19:34

what about the router rule on the appwrite api ? if there is a Host/HostPrefix does it includes your domain ?

30 Jul, 2026, 19:55

these rules?

TypeScript
      - traefik.enable=true
      - traefik.constraint-label-stack=appwrite
      - traefik.docker.network=appwrite
      - traefik.http.services.appwrite_api.loadbalancer.server.port=80
      #http
      - traefik.http.routers.appwrite_api_http.entrypoints=appwrite_web
      - traefik.http.routers.appwrite_api_http.rule=PathPrefix(`/`)
      - traefik.http.routers.appwrite_api_http.service=appwrite_api
      # https
      - traefik.http.routers.appwrite_api_https.entrypoints=appwrite_websecure
      - traefik.http.routers.appwrite_api_https.rule=PathPrefix(`/`)
      - traefik.http.routers.appwrite_api_https.service=appwrite_api
      - traefik.http.routers.appwrite_api_https.tls=true
30 Jul, 2026, 20:00

yes, and do you confirm both labels blocks you sent are on the same service/container ?

30 Jul, 2026, 20:01

yes, labels are in appwrite service and commands are in traefik service

30 Jul, 2026, 20:03

The volume - appwrite-letsencrypt:/letsencrypt:rw didn't exist anymore after the migration, so I redeclared it (for this line to work?: - --certificatesresolvers.dns-cloudflare.acme.storage=/letsencrypt/acme.json)

30 Jul, 2026, 20:05

if the file don't exist, traefik will recreate it, and on the first request it will regenerate the certificate

30 Jul, 2026, 20:06

tho looking at your labels i don't see something bad, is there any traefik logs ?

(like if you restart it and make a request to the domain ?)

2 Aug, 2026, 23:37

Yeah, I know it's supposed to recreate the certificates the first time an URL is called but it didn't work for subdomains (which need the cloudflare config). All other URL's (with no custom subdomain) worked.

2 Aug, 2026, 23:38

I'll try again and check the logs

2 Aug, 2026, 23:39

But what about this line? - --certificatesresolvers.dns-cloudflare.acme.storage=/letsencrypt/acme.json) if the volume (letsencrypt) doesn't exist anymore after the migration, what should that be?

3 Aug, 2026, 07:06

if the volume don't exists, traefik will just create the certificate everytime you recreate the container, that's it.

Also since you mention Cloudflare, is your token provided in the envs so traefik can make your DNS-01 entry for the certificate ?

And what about the logs ?

3 Aug, 2026, 12:42

Yes, the token is provided. I've checked every token and key from the previous version after the migration.

I'm going to try again and look for the logs.

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