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.
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 :
- https://discord.com/channels/564160730845151244/1529069322016915486
- https://discord.com/channels/564160730845151244/1522114393179947018
- https://discord.com/channels/564160730845151244/1522231776968179733
- https://discord.com/channels/564160730845151244/1529074044882915338 (no fix for now, but is just a command to see if everything works, it's not in the app itself)
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)
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
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.
understandable
I think Appwrite need to plan a 1.9.6 to fix the broken 1.9.5 version :/
1.9.6 fixes most of 1.9.5 issues, if you want you can upgrade to it https://discord.com/channels/564160730845151244/1529588927378227373
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.
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 🙂
What issues? And what was the previous configuration?
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:
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
How to successfully migrate from 1.9.0 to 1.9.5 (or 1.9.6) ?
what about the router rule on the appwrite api ? if there is a Host/HostPrefix does it includes your domain ?
these rules?
- 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
yes, and do you confirm both labels blocks you sent are on the same service/container ?
yes, labels are in appwrite service and commands are in traefik service
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)
if the file don't exist, traefik will recreate it, and on the first request it will regenerate the certificate
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 ?)
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.
I'll try again and check the logs
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?
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 ?
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.
Recommended threads
- hi guys! my site is not accesible in my ...
- MongoDb Database Breaks integer[] & bigi...
I've got a table with the below column created. When I try to insert the value `[-3408048000]` into it, the dart sdk cloud function call is successful (no error...
- Delete on cascade from Cloud Function
I'm writing a Python function that deletes a user's main row from a table in my database. This row has relationships with other tables that use cascade deletion...